オーディオ信号のパワー スペクトルを取得するための次のガイドラインを何度か見つけました。
- N 個のサンプルを収集します。ここで、N は 2 の累乗です。
- サンプルに適切なウィンドウ関数を適用します。たとえば、Hanning です。
- ウィンドウ処理されたサンプルを FFT ルーチンに渡します。理想的には、実数から複素数への FFT が必要ですが、複素数から複素数への FFT しかない場合は、すべての虚数入力部分に 0 を渡します。
- FFT 出力ビンの 2 乗の大きさを計算します (re * re + im * im)
- (オプション) 各振幅二乗出力ビンの 10 * log10 を計算して、振幅値を dB で取得します。
- パワー スペクトルが得られたので、あとはピークを特定するだけです。適切な S/N 比があれば、これは非常に簡単です。周波数分解能は、N が大きいほど向上することに注意してください。上記のサンプル レートが 44.1 kHz で N = 32768 の例では、各ビンの周波数分解能は 44100 / 32768 = 1.35 Hz です。
しかし...なぜサンプルにウィンドウ関数を適用する必要があるのでしょうか? それは本当にどういう意味ですか?
パワー スペクトルはどうですか。サンプル レートの範囲内の各周波数のパワーですか。(例: サウンドの Windows Media Player ビジュアライザー?)