3

我已经询问过音量标准化。在大多数方法(例如,我最感兴趣的ReplayGain)上,我可能会得到超过 PCM 限制的峰值(也可以在此处阅读)。

简单的剪辑可能是我能做的最糟糕的事情。正如 Wikipedia 建议的那样,我应该进行某种形式的动态范围压缩

我说的是我在每个单独的 PCM 样本值上应用的函数。在另一个类似的问题上,一个答案表明这样做是不够的,或者不是我应该做的事情。但是,我真的不明白这一点,因为我仍然必须处理剪裁案例。答案是否建议一次对多个样本进行范围压缩,并对每个样本进行简单的硬剪辑?

撇开这一点不谈,维基百科文章中讨论的功能似乎不是我想要的(在许多情况下,我最终仍然会使用剪辑案例)。我正在考虑使用类似tanh的东西。这是个坏主意吗?它会稍微降低音量,但保证我不会得到任何剪辑。

我的应用程序是一个通用的音乐播放器。我正在寻找一种最适合所有人的解决方案,这样我就可以随时打开它,而用户很可能不想关闭它。

4

2 回答 2

3

使用任何瞬时动态范围处理(例如削波或 tanh 非线性)都会引入可听失真。将正弦波放入瞬时非线性函数中,您将不再有正弦波。虽然对某些音频应用程序很有用,但听起来您不想要这些人工制品。

归一化不影响波形的动态(以最小/最大比率表示)。归一化涉及将波形按元素乘以恒定的标量值,以确保没有样本超过最大值。这个过程只能离线完成,因为您需要在处理之前分析整个信号。如果您的波形包含任何强烈的瞬变,归一化也是一个坏主意。您的整个信号将按瞬态峰值除以削波阈值的比率衰减。

如果您只想保护输出不被削波,最好使用侧链式压缩器。一种特定的形式是限制器(在零启动时间的阈值之上无限压缩比)。侧链压缩器计算信号的平滑能量包络,然后根据该函数应用不同的增益。它们不是瞬时的,因此您可以减少从您提到的功能中获得的声音失真。限制器可以具有瞬时启动以防止削波,但您允许释放时间,以便限制器保持对后续波形峰值的衰减,随后的波形只是被调低,因此没有失真。在强烈的声音之后,限制器恢复。

如果波形中有很多高强度峰值,您可以从这种类型的处理中获得泵浦类型的声音。如果这变得有问题,您可以进入下一个级别并在子频段内进行动态处理。这样,只有频谱中的干扰部分会被衰减,其余的声音不受影响。

于 2012-09-30T23:14:29.670 回答
2

一般的解决方案是将增益水平归一化到明显低于 1 的水平,这样很少有歌曲需要增加增益。换句话说,大多数时候你会降低而不是增加信号的音量。尝试各种不同风格的歌曲,以确定这个级别是什么。

现在,偶尔,您仍然会遇到一首需要足够增益的歌曲,以至于在某些时候它会剪辑。你有两个选择: 1. 不要增加那么多收益。这首歌听起来会安静一些。这就是生活。(这是一种常用方法),或 2. 应用少量动态范围压缩和/或限制。当然,你也可以做一些1和2的组合。我相信iTunes使用了1和2的组合,但是他们在#2上非常努力,他们应用的很少。

您的建议,在逐个样本的基础上使用像 tanh 这样的函数,会导致声音失真。您不想为通用音乐播放器执行此操作。这是吉他放大器模拟器中所做的那种事情,使它们听起来“肮脏”和“邋遢”。在摇滚、流行或其他已经严重失真的现代音乐中可能听不到它,但在仔细录制的合唱、爵士或小提琴独奏音乐中,人们会感到不安。这与tanh的选择无关,顺便说一下,任何非线性函数都会产生失真。

动态范围压缩使用随时间应用于信号的包络:http ://en.wikipedia.org/wiki/Dynamic_range_compression 这很难正确处理,而且您永远无法创建真正“透明”的压缩器。限幅器可以被认为是压缩器的极端版本​​(至少在理论上)可以防止信号超过某个电平。数字“前瞻”限制器可以做到这一点,而不会出现明显的削波。当明智地使用时,它是非常透明的。

如果采用这种方式,请确保可以关闭此功能,因为无论您认为它多么透明,都会有人听到而不喜欢它。

于 2012-10-01T01:52:13.560 回答