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

其中level是瞬时声级,平均值是历史平均声级,factor是用于产生“调整”声级(因数乘以声级)的乘数。 >此外,此乘数仅在计算得出的值小于1时适用。否则,电平将保持未调整状态。

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

(要以这种方式限制值的原因主要是使瞬态噪声不会不会严重破坏声音的运行平均值。但是,当您分析打sn时,“瞬态噪声”非常重要,因此我可以简单地加以抑制。) (似乎渐进行为在您不想要时很容易产生,但在您想要时却很难。)

评论

有调整膝盖锐度的方法。

#1 楼

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


对原始(非峰值限制)数据(例如中位数或分位数)使用可靠的统计信息

$ k \ times \ tanh(\ frac {x} {k})$$作为$ C ^ \的效果很好infty $压缩公式,实际上是某些音频电路(使用OTA)中发生的事情。若要获得保留原始信号动态特性并仅消除瞬变的自适应压缩,请让k跟踪平滑的“平均”电平。

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


评论


$ \ begingroup $
谢谢,这看起来很有希望。我将其插入并查看其效果。
$ \ endgroup $
–Daniel R Hicks
2012年2月10日,下午1:26

$ \ begingroup $
我尝试了一下,它似乎运行良好(清除了几指检查之后)。我唯一的问题是似乎没有任何方法可以在不破坏剪辑水平的情况下调整“膝盖”的清晰度。
$ \ endgroup $
–Daniel R Hicks
2012-2-10 22:58

$ \ begingroup $
为什么“移动中位数”优于“移动中位数”?我在许多地方都读到它对异常值不太敏感。但是我看不到真实数据。对这个问题有任何想法吗?
$ \ endgroup $
–巴吉
15年11月27日在23:40