17

PortAudio を使用してオーディオ データを録音するプログラムを作成し (この部分は完了しています)、その録音されたオーディオの周波数情報を表示します (今のところ、サンプルの各グループの平均周波数を表示したいと思います)。彼らが入ってくるとき)。

私が行ったいくつかの調査から、FFTを実行する必要があることがわかりました。それで、Cでそれを行うためのライブラリをグーグルで検索し、FFTWを見つけました。

しかし、今は少し迷っています。周波数情報を抽出するために記録したサンプルをどうすればよいですか? どの種類の FFT を使用すればよいですか (実際のデータ 1D が必要だと思いますか?)

FFT を実行したら、得られたデータから周波数情報を取得するにはどうすればよいでしょうか。

EDIT:自己相関アルゴリズムも見つけました。それは良いですか?もっと簡単?

事前に感謝します。申し訳ありませんが、これについてはまったく経験がありません。少なくとも少しは意味があることを願っています。

4

1 に答える 1

19

オーディオサンプルをパワースペクトルに変換するには:

  • オーディオデータが整数データの場合は、浮動小数点に変換します
  • FFTサイズを選択します(例:N = 1024)
  • データのN個のサンプルにウィンドウ関数を適用します(例: Hanning
  • サイズNの実数から複素数のFFTを使用して、周波数領域データを生成します
  • 複素周波数領域データの大きさを計算します(magnitude = sqrt(re^2 + im^2)
  • オプションで、大きさを対数スケール(dB)に変換します(magnitude_dB = 20*log10(magnitude)
于 2010-06-17T05:25:13.897 に答える