代码之家  ›  专栏  ›  技术社区  ›  Benedikt Waldvogel assylias

决定数字音频数据是否为剪辑的算法?

  •  2
  • Benedikt Waldvogel assylias  · 技术社区  · 16 年前

    是否有算法或启发式方法来决定数字音频数据是否 clipping ?

    5 回复  |  直到 12 年前
        1
  •  6
  •   Adam Davis    16 年前

    如果您收到的值是最大值或最小值,那么根据定义,您就是剪切值。这些值代表它们的特定值以及超出的所有值,因此它们最好用作外部边界检测器。

    -亚当

        2
  •  5
  •   Martin Vilcans    16 年前

    简单的答案是,如果任何样本具有最大或最小值(对于16位样本,分别为-32768和+32767),则可以考虑将其剪切。这不是很明显的正确,因为这个值实际上可能是正确的值,但是无法判断+32767是否真的应该是+33000。

    对于更复杂的答案:有这样一种情况,例如样本计数剪裁检测器,要求X个连续样本处于最大/最小值,以便将其视为剪裁(其中X可能高达7)。这里的理论是,只有几个样本是听不见的。

    也就是说,有一些音频设备即使在最大值以下(和最小值以上)也能发出相当大的声音。典型的建议是掌握音乐峰值为-0.3分贝,而不是0.0分贝。您可能希望考虑将高于该级别的任何样本剪切。这完全取决于你需要它做什么。

        3
  •  2
  •   Ben Collins    16 年前

    对于数字音频数据,“剪辑”一词除了“最大振幅”外,没有太多的含义。在模拟世界中,音频数据来自一些硬件,这些硬件通常包含一个“剪辑寄存器”,允许您获得未剪辑的最大振幅。

    更适合数字音频的是根据输出D/A的限制设置一些阈值。如果您正在进行VoIP,则选择手机或手机的典型阈值,如果您的数字音频高于该阈值,则将其称为“剪辑”。如果你输出到高端家庭影院系统,那么你可能不会有任何“剪辑”。

        4
  •  2
  •   Benedikt Waldvogel assylias    16 年前

    我刚刚注意到甚至还有一些很好的实现。

    例如在 Audacity :
    分析 查找剪辑

        5
  •  2
  •   Tim Cooper    12 年前

    亚当说的。您还可以添加一些逻辑来检测一段时间内的最大振幅值,并且只标记这些值,但其本质是确定信号是否/何时达到最大振幅。