-2

Cで構造体を作り、fread関数を使ってdat構造体の全データを読み込んでみたのですが、実はそれで混乱してしまい、実際の「オーディオデータ」とは元のサンプルデータを意味するのですか?また、データ オーディオ データから周波数を抽出するにはどうすればよいでしょうか。そして、そのデータを正常に読み取ることができますが、さらに何をしなければならないのか理解できません。説明してください。

4

3 に答える 3

3

このドキュメントに従うだけで、wav ファイルを簡単に読み取ることができます。 https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

ファイルから周波数を抽出するには、データにフーリエ変換を適用する必要があります。これにより、データが振幅時間から周波数時間領域に変換されます。 http://en.wikipedia.org/wiki/Fast_Fourier_transform

于 2013-06-09T17:45:33.090 に答える
2

通常、オーディオ ファイルはヘッダーと「サンプル」で構成されます。サンプルは、8、16、または 32 ビットで、整数または浮動小数点にすることができます。音声サンプルを圧縮形式 (mp3 など) で保存する音声ファイルもあれば、データを「生のサンプル」として保存する音声ファイルもあります。

周波数を分析するには、「フーリエ変換」を実行する必要があります。これにより、「この周波数での量」の配列が得られます。実際のフーリエ変換は、記述するのが非常に複雑です (確かに数十行以上あります)。

サンプルが整数形式の場合、各サンプルを最大値 (255、32767、または 2 31 -1) で割って、整数から浮動小数点に変換する必要があります。

これは、FFT を実行するための C++ コードのパッケージです。他にもいくつかあります。 http://fftwpp.sourceforge.net/

于 2013-06-09T17:45:20.337 に答える
0

FFT を実行する別の例を次に示します。これは、結果を Windows GUI に表示します。

http://www.relisoft.com/Freeware/index.htm

于 2013-06-09T17:57:13.507 に答える