了解保存在 WAVE 文件中的值

信息处理 声音的 海浪
2021-12-26 01:17:15

可以在波形文件中找到的值,例如

    0.0036
    0.0026
    0.0174
    0.0050
    0.0026
    0.0108
    0.0154
   -0.0114
   -0.0006
    0.0115

是 - 正如我所假设的 - 介于 -1 和 1 之间的相对值,这是您在某些音频编辑程序中观看波形时通常看到的范围。现在,当您播放文件时,这些相对值是如何映射的?例如,如果值为 0.5,是否意味着以最大可能响度的一半播放?是否有某种参考值存储在相对值所参考的 WAVE 文件中?

另一件事:在上面的示例中,有 7 个正值后跟 2 个负值。因此,扬声器中振动以产生声音的薄膜在一个方向上被按压的时间比在另一个方向上要长,或者人们必须如何解释这一点?正值是振动的一个方向,负值是振动到另一个方向还是我错了?

非常感谢 :-)

2个回答

您看到的是时域样本,它们对应于作为时间函数的扬声器从某个静止位置的位移。例如,第一个样本对应于膜的位置t=0,下一个代表它的位置t=T,依此类推,假设有T样本之间的秒数。音频的常见采样间隔包括T=18000秒和T=144100秒。

为了将样本流转换为真实音频,首先使用数模转换器 (DAC)来生成与样本相对应的时变模拟电压。该模拟电压将被施加到驱动扬声器的功率放大器的输入端。扬声器的设计使其膜片的位置与扬声器的输入电压成比例变化。然后,在这个链的末端,您有一个扬声器膜,它根据原始音频样本移动,通过其振动产生所需的音频。

如您所述,样本值被归一化为±1. 产生的音频响度会受到许多非数字因素的影响,例如驱动扬声器的放大器增益或 DAC 的输出电压范围。峰值样本值±1只对应于“硬件可以产生的最大膜位移”。因此,没有办法在这样的样本流中对音频的绝对响度进行编码,因此使用了这样的归一化方案。

当您播放音频文件时,设备通常具有某种音量控制。所以 0.5 是相对于该音量控制的当前设置所允许的某个最大音量。

此外,从样本到扬声器的路径具有频率响应(从 DC 到光可能不会是平坦的),这将根据缩放波样本的值修改实际的扬声器位移。由于大多数音频系统的频率响应不通过直流,因此扬声器响应可能会消除任何直流偏移,并在足够长的时间段内平衡实际的物理正负位移。