如何在c#中获取声音数据样本值

时间:2012-05-07 06:33:16

标签: c# audio sampling bitconverter

我需要获取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)。这是对还是错? 我的意思是样本值是否为负值,如果它是正确的那么它是什么意思是声音或沉默?

1 个答案:

答案 0 :(得分:1)

NAudio可以为你做这件事,它在库中(我认为它是WaveStream或WaveReader类,或类似的东西)。如果不是太多开销,我可以推荐它的使用。

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

虽然一般一个WAV文件包含16位样本,但它没有,并且根据确切的格式,它们可能存储在小端或大端。

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