33

mp3オーディオファイルのオーディオスペクトル(このビデオで見られるように)を生成したいと思います。基本的に、この問題はオーディオ信号のfftを計算する必要があります。これをC/C ++でプログラムするにはどうすればよいですか?

私はFFTWのようないくつかのオープンソースライブラリを見てきましたが、私の問題にこれらをどのように使用するかは本当にわかりません。どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1

56

回答には多くの有用な情報とアドバイスが含まれているため、SOにはすでにかなりの数の類似した/関連する質問があり、読む価値がありますが、本質的にはこれを行う必要があります。

  • オーディオデータをFFTに必要な形式に変換します(例:int-> float、個別のL / Rチャネル)
  • 適切なウィンドウ関数を適用します(例:Hann aka Hanning window
  • FFTを適用します(注:一般的な複素数から複素数へのFFTを使用する場合は、入力配列の虚数部をゼロに設定します)
  • 最初のN/2 FFT出力ビンの大きさを計算します(sqrt(re*re + im*im)
  • オプションで、大きさをdB(対数)スケールに変換します(20 * log10(magnitude)
  • N / 2(対数)マグニチュード値をプロット

FFTWは非常に優れた非常に高速なFFTですが、初心者には少し圧倒されるかもしれませんが、商用製品の一部として含める場合は非常に高価です。代わりにKissFFTから始めることをお勧めします。

于 2011-01-13T09:06:59.803 に答える