WAVファイルのサウンドデータのサンプル値を取得する必要があります。そのサンプル値を使用することで、毎秒そのサウンドデータの振幅値を取得する必要があります。Cでサウンドデータのサンプル値を取得するには
重要:Naudioライブラリまたはwmpライブラリを使用してオーディオデータのサンプル値を取得する方法はありますか?
byte[] data = File.ReadAllBytes(File_textBox.Text);
var samples=new int[data.Length];
int x = 0;
for (int i = 44; i <data.Length; i += 2)
{
samples[x] = BitConverter.ToInt16(data, i);
x++;
}
をしかし、私はもっと(-326260)のような負の値を取得しています:
私は、このようにサンプル値を取得しています。それが正しいか間違っていますか? 私は、サンプル値が負であるかどうかを調べることができます。正しい場合は、何が音や静寂を意味しますか?
私はWAVファイルフォーマットを研究し、44バイト目以降に音声データがあることを知りました。しかし、私がサンプルの負の値を取得している場合、音の黙っていることを何を意味するのかを知るために必要なことはすべて?私は多くの負のサンプル値を取得していますが、WAVファイルには目立つ音があります。 – azeem
負の値が必要です。あなたはショートパンツを読んでいるので、負の値を持つことは完全に正常です。 16ビットのサンプルは符号付きの値として格納されます。 0は音がないことを意味します。また、あなたのサンプル配列はint(問題ではないはずです)であり、そのサイズが必要以上に長いことに注意してください((data.Length - 44)/ 2で十分です)。 –
いいえ私はショーツを読んでいません。コードで見ることができるので、私はバイトをINT16に変換しています。しかし、私は負の値を得ています。 サンプル配列では、インデックス1で値が-32465、インデックス2が32465であるとします。だから私はこれが何であるのか混乱しています...どちらが音であり、どちらが無音であるかOR 1つはより大きな音であり、1つはより遅い音である。 – azeem