FFTでスペクトル推定を行う際、フレーム長を長くするほどより周波数領域で精度を上げることができる。
しかし、フレーム長を長くすると実行時間も長くなる。
スマホでリアルタイムで解析を行うような場合、実行時間について考慮が必要になる。
ここでは、フレーム長を長くした場合、実行時間がどのように変わるかを検証した。
測定条件は以下の通り。
測定結果
フレーム長 | 時間(ms) |
4096 | 3,216 |
8192 | 6,771 |
16384 | 14,263 |
32768 | 30,336 |
グラフにすると以下のようになる。
横軸のフレーム長は2のn乗となっているため、対数スケールになっている。
線形スケールにすると以下のようになる。
ほぼ線形に増えているように見える。
なお、理論上の計算量は、O(N logN)である。
スマホでリアルタイムに解析を行う場合のフレーム長について考えてみる。
秒間60回解析を行うとすると、最低でも1000/60≒16.6(ms)以内に計算を行う必要がある。
上記の計測結果から、フレーム長として使用できるは16384までとなる。
FFT以外の処理も行うことを考慮すると、その下の8192が上限ではないかと思う。
秒間の解析回数を減らせばフレーム長は長くできるが、リアルタイム性と解析精度のバランスをとってフレーム長を決める必要がある。電池の消耗についても考慮すべきである。
今回はあえて古い機種で測定したが、最新の機種では当然より速く計算できる。
以前に測定した結果では、新しい機種では実行時間は1/3程になる。