【发布时间】:2010-09-08 08:32:49
【问题描述】:
是否有算法或启发式方法来确定数字音频数据是否为clipping?
【问题讨论】:
标签: algorithm audio heuristics
是否有算法或启发式方法来确定数字音频数据是否为clipping?
【问题讨论】:
标签: algorithm audio heuristics
简单的答案是,如果任何样本具有最大值或最小值(对于 16 位样本,分别为 -32768 和 +32767),您可以认为它是裁剪的。这并不完全正确,因为该值实际上可能是正确的值,但无法判断 +32767 是否真的应该是 +33000。
对于更复杂的答案:有这样的事情,例如样本计数剪辑检测器,需要 x 个连续样本处于最大值/最小值才能将它们视为剪辑(其中 x 可能高达 7)。这里的理论是,只剪辑几个样本是听不见的。
也就是说,即使在低于最大值(和高于最小值)的值下,音频设备的剪辑也非常可听。出于这个原因,典型的建议是将音乐的峰值控制在 -0.3 dB 而不是 0.0 dB。您可能希望将高于该级别的任何样本视为裁剪。这完全取决于您需要它的用途。
【讨论】:
如果您曾经收到最大值或最小值的值,那么根据定义,您就是剪裁。这些值代表了它们的特定值以及超出的所有值,因此它们最好用作边界检测器。
-亚当
【讨论】:
对于数字音频数据,“削波”一词除了“最大幅度”之外并没有太多意义。在模拟世界中,音频数据来自某些硬件,这些硬件通常包含一个“削波寄存器”,它允许您获得未被削波的最大幅度。
可能更适合数字音频的是根据输出 D/A 的限制设置一些阈值。如果您正在使用 VOIP,则选择一些典型的手机或手机阈值,如果您的数字音频超过该阈值,则将其称为“剪辑”。如果您要输出到高端家庭影院系统,那么您可能不会有任何“剪辑”。
【讨论】:
我刚刚注意到甚至有一些不错的实现。
例如在Audacity:
分析 → 查找剪辑...
【讨论】:
亚当所说的。您还可以添加一些逻辑来检测一段时间内的最大幅度值并仅标记这些值,但本质是确定信号是否/何时达到最大幅度。
【讨论】: