Wav文件的范围不在-1到1之间

时间:2014-02-14 13:28:47

标签: c# signal-processing naudio

我正在录制来自串口的字节,并使用NAudio将它们转换为wav文件。但是,当我绘制我的wav文件时,它确实有一个合适的外观。它的范围是0到1,但其他wav文件的范围是-1到1.它是否与编码或其他相关?

WaveFormat waveFormat = new WaveFormat(8000, 8, 1);
using (WaveFileWriter writer = new WaveFileWriter(fileName, waveFormat))
{
     writer.Write(audioBuffer, 0, audioBuffer.Length);
}

2 个答案:

答案 0 :(得分:1)

-1到+1范围通常是将PCM数据转换为32位浮点数时的工作范围,以便更方便地进行混音。

它允许一个漂亮的,标准化的振幅表示,同时留下足够的头部空间进行混合。

如果得到0到1的范围,转换过程中可能出现错误:wavs通常(但不总是)存储为16位有符号整数,转换为float意味着乘以32768(如果位深度为16且数据以16位有符号整数表示。看一下wav的标题,以便更深入地了解格式 - 有关wav标题的更多信息,请点击此处。

https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

答案 1 :(得分:1)

这取决于“audioBuffer”中的数据类型。

32位浮点音频样本通常在-1.0到1.0的范围内。 16位整数音频样本通常在-32768到32767范围内进行签名.8位整数音频样本通常是无符号的,范围为0到255,其中128与浮点数0.0相同。