需要峰值限制/音频压缩公式


9

我正在寻找有效压缩音频波形以限制峰值的公式。这不是一个“自动音量控制”应用程序,在该应用程序中,可以控制放大器增益以保持音量水平,而是要限制(“软”截断)各个峰值。(我知道这会引入谐波,但我正在尝试分析数据,而不是听数据。)

到目前为止,我的(非常粗糙的)公式是:

factor = (10 * average / level) + exp(-sqrt(0.1 * level / average))

其中level是瞬时声级,平均值是历史平均声级,factor是用于产生“已调整”声级(因数乘以level)的乘数

此外,仅当乘法器计算得出的值小于1时,才会应用此乘数。否则,将不调整级别

目的是将调整后的水平限制为历史平均值的某个倍数(此公式约为15倍)。这个公式有点像我需要的,但是随着数字变大,表现出“下降”的趋势。也就是说,调整后的水平(即因子乘以水平)会增加到未调整水平增加的程度,但随后开始逐渐变小而不是渐近。(实际上,添加第一个因素主要是为了防止公式以极高的值变为零。)

(想要以这种方式限制值的原因主要是为了使瞬态噪声不会严重破坏声音水平的运行平均值。但是,当您分析打sn声时,“瞬态噪声”非常重要,因此我可以简单地对其进行静噪)

那么,有人可以提出更好的建议吗?(似乎渐进行为在您不想要时很容易产生,但在您想要时就很难产生。)


Answers:


9

这里有两个问题:如何获得可靠的水平估计值,以及如何压缩数据。

  • 对原始数据(非峰值限制)(例如中位数或分位数)使用可靠的统计信息,而不是运行平均值,以使您的“典型水平”检测对异常值具有鲁棒性。
  • ķ×XķC

例

  • 蓝色:原始信号
  • 绿色:2 x滑动窗口上的绝对值的中间值,作为“典型水平”检测
  • 红色:tanh压缩(上面给出的公式,k等于绿色绘制的水平)

谢谢,这看起来很有希望。我将其插入并查看其效果。
Daniel R Hicks 2012年

1
我尝试了一下,它似乎运行良好(在我清除了几指检查之后)。我唯一的问题是似乎没有任何方法可以在不破坏剪辑水平或其他任何情况的情况下调节“膝盖”的清晰度。
Daniel R Hicks

为什么“移动中位数”优于“移动中位数”?我在许多地方都读到它对异常值不太敏感。但是我看不到真实的数据。对这个问题有任何想法吗?
巴斯基2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.