我正在录制来自串口的字节,并使用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);
}
答案 0 :(得分:1)
-1到+1范围通常是将PCM数据转换为32位浮点数时的工作范围,以便更方便地进行混音。
它允许一个漂亮的,标准化的振幅表示,同时留下足够的头部空间进行混合。
如果得到0到1的范围,转换过程中可能出现错误:wavs通常(但不总是)存储为16位有符号整数,转换为float意味着乘以32768(如果位深度为16且数据以16位有符号整数表示。看一下wav的标题,以便更深入地了解格式 - 有关wav标题的更多信息,请点击此处。
答案 1 :(得分:1)
这取决于“audioBuffer”中的数据类型。
32位浮点音频样本通常在-1.0到1.0的范围内。 16位整数音频样本通常在-32768到32767范围内进行签名.8位整数音频样本通常是无符号的,范围为0到255,其中128与浮点数0.0相同。