自身ないですが音声分析に興味があるので少し調べてみました。
フーリエ変換について探してみるとvDSPのSwift3対策などのページがありました。同じ方がQiitaでC/C++で書かれたDSPライブラリーを用いた音声分析の記事をいくつかアップされているのでそれらが参考になりそうな気がしました。Swift素人なのでよくは分かりませんが割と最近の記事なのでvDSPというライブラリーより便利で高速なSwift3用のライブラリーはないのかなという印象です。記事を拾い読みするとSwiftのUnsafePointerといったアドレスを直接操作する機構を使ってやるようなことが書いてあるのでそれなりに低レベルな処理に慣れてないと敷居が高そうでした。逆にいえばその辺りを攻略できれば利用はできそうです。
次にFFTの結果を出せたとして、高中低の比率をどうやって出すのが適切なのか(素人考えですが)素朴に考えると高中低でグループ分けしたときの3つの音圧レベルの比率とするのかなと思いました。音圧どうしの比率を採ること自体に物理的な意味があるのか疑問ですがスペクトルメーターが音圧表示であることが普通だと思うので、3つの音域のメーターが同じくらいの高さなら1:1:1と解釈することにしようと考えると「なんとなくそんなものでいいのかな」と思えたのです。
「音圧、音圧レベル」などで検索するとこういったものの物理的な意味や計算方法が載っているページがみつかると思いますのでそれらが参考になると思います。例えばエネルギーが振幅の二乗と周波数の二乗に比例するとか、音圧がエネルギーの(最小音との比率)の対数になるとかです。そういう関係を使ってFFTの結果の振幅をグループ毎に音圧レベルとして集計することを自分はイメージしました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。