2

我需要获取 WAV 文件的声音数据的样本值,以便通过使用这些样本值,我需要每秒获取该声音数据的幅度值。

重要提示:有什么方法可以使用 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)。这是对还是错?我的意思是样本值可以是负数还是负数,如果它是正确的,那么它是什么意思?

4

1 回答 1

1

NAudio 可以为您执行此操作,它在库中(我认为它是 WaveStream 或 WaveReader 类,或类似的东西)。我可以推荐它的使用,如果它不是太多的开销。

如果您想自己动手,并且想处理任意波形文件,则必须阅读 WAV 文件格式,并自己分析标头。

虽然通常WAV 文件包含 16 位样本,但并非必须如此,并且根据确切的格式,它们可能以小端或大端存储。

标头包含有关采样率、通道数、每个样本的位数、每个样本的字节数等信息,这些信息允许您进行实际数学运算以获取一个样本。

于 2012-05-07T07:07:51.903 回答