如何更改 PCM 16 位签名音频的音量?

信息处理 声音的
2022-01-10 23:52:11

我知道我可以将样本相乘,然后进行剪辑,但感知到的音量对于人类来说是非线性的。

你能帮忙给个公式吗?

1个回答

必须通过应用增益(乘法)来更改音频信号的音量 - 如果您的系统动态范围有限,还可以选择削波。就这么简单。对音频信号应用非线性函数会导致失真并增加谐波,您不希望这种情况发生 - 您想修改信号的响度,而不是其音色。[公平地说,在给定的动态范围约束(例如多频带压缩)内,有一些非线性处理旨在改变信号的感知响度而不影响音色,但看起来这不是您需要的.]

非线性和花哨的响应曲线发挥作用的地方是在设计用户界面时 - 在决定控件(旋钮或滑块,无论是在 GUI 上还是作为物理硬件)的位置与应用于信号的增益之间的关系时. 这就是感知很重要的地方,因为用户会期望滑块的位置和他们对响度的感知之间的映射。请注意,即使音量控制的位置和应用于信号的增益之间的关系是非线性的,将增益应用于信号的过程也是线性的,并且非线性是不需要的!

当涉及到物理音量控制时,例如在高保真系统或个人音频播放器中,旋钮位置和衰减之间的关系更接近指数曲线,尽管它的形状已经过调整并且受到制造过程的限制——有时它只是两个或三个线性段。您可以在制造商的数据表中找到这些曲线(“A”锥度)。调音台推子通常对其响应进行压缩,以便其行程的上半部分覆盖 -20 dB..+6dB 的有用范围。

在软件世界中——至少对于音乐制作而言——最常见的是音量/增益旋钮以 dB 为单位进行校准。例如,如果您有一个 100 像素长的音量滑块,从 -48dB 渐变到 +6dB,则应用于信号的增益为10-48+54X10020.