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

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

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

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

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

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