オーディオデータがどのように保存されているか理解できませんでした。しかし、PCMデータのピッチを求める方法が知りたいです。たとえば、あるサンプル レートで 16 ビットのモノラル PCM 形式で、ピアノの 1 つのキーを叩いて録音したとします。音声の周波数 (ヘルツ) を調べるにはどうすればよいですか? 平均頻度を取得するための単純なコードは機能しますが、形式をよりよく理解するためのより詳細な説明が理想的です。
ありがとう!
PCM オーディオは一連のピッチとして保存されません。それを理解するには、高速フーリエ変換 (FFT) が必要です。https://stackoverflow.com/search?q=pitch+detectionを参照してください。これについてはすでに数十の投稿があります。
オーディオ波形を考えてみましょう。PCM エンコーディングは、その波を 1 秒あたり特定の回数サンプリングし、サンプルあたり特定のビット数を使用するだけです。
http://en.wikipedia.org/wiki/Pulse-code_modulationからの画像
44.1kHz での 16 ビット モノ PCM は、1 秒間に 44,100 回、サンプルが取得された特定の時間の波形を表す 16 ビット値 (2 バイト) が格納されることを意味します。44.1kHz は、22kHz に近い周波数を格納するのに十分な速さです (ナイキスト周波数を参照)。
FFT は、これらのサンプルを時間領域から周波数領域に変換します。つまり、特定の期間におけるすべての周波数のレベルを見つけることができます。より多くのバンドを見るほど、計算負荷が高くなります。