16位WAVE值范围

时间:2016-02-24 00:23:50

标签: audio range 16-bit wave

我遇到过这个MSDN链接:  Intro to Audio Programming, Part 2: Demystifying the WAV Format。 帖子说:

  

16位采样范围为-32760至32760

由于

不是+/-(2 ^ 16)/ 2

  

涉及Endianness和2的补充的一些疯狂的业务

这篇文章有多处错误,但这部分最让我感到烦恼。如果有的话,这有多少是真的?

2 个答案:

答案 0 :(得分:3)

这方面的帖子是错误的。首先,字节顺序与任何事情完全无关。但是2s补码存在一个问题,即负值多于正值。通常,在执行信号处理时,值将在-1.0到1.0的范围内转换为双精度,以便稍后转换为所需的输出位分辨率。如果您乘以32768并转换为整数,那么您显然会在正1.0上出现溢出。所以最好乘以32767.我不知道这是否以任何方式形式化,但根据我的经验,这就是它的方式。如果你遵循这个假设,那么遇到一个值为-32768的wave文件的风险很小,转换为float时你会得到一个略小于-1.0的数字。

答案 1 :(得分:1)

  

我不知道这是否以任何方式正式化。

是的!它是!似乎official RIFF specBroadcast WAVE format spec(应该由WAVE兼容的应用程序使用)可以声明一个非常清晰的16位样本范围-32768到32767,就像jaket所假定的那样。

我发现我经常需要带有一些盐的MSDN文章,但它们有时很难被忽视,因为它们是权威性的。搜索'net for“wav 32760”将发现本文所做的一些损害。