音频信号抖动和噪声整形

信息处理 声音的 噪音 量化
2022-02-06 06:49:00

我试图了解误差反馈项在典型音频抖动算法中的噪声整形操作中的重要性。

我在考虑四个信号。原始信号、输出(量化)信号、抖动信号和误差信号(输出与原始信号之间的差异)。

一种简单的方法是生成白噪声并对其应用滤波器以生成彩色抖动信号,将其添加到原始信号中,量化到输出信号,并忽略误差信号。在此配置中使用白色(未过滤)或紫色(微分)噪声函数似乎是一种相当常见的方法。

我看到实现的另一种方法是获取误差信号并对其进行滤波并添加白噪声以定义抖动信号,然后将其添加到原始信号中,量化并计算滤波器的下一个误差项。这意味着数据流有一个紧密的循环——如果不解决前一个错误项,我们就无法计算一个新的错误项——这使得有效地使用 SIMD 变得很困难。

从这些我可以推断出第三种选择——完全放弃噪声,直接过滤和重新整合误差信号。我想这会带来一些调制伪影的风险,这些伪影与量化引入的伪影相关但又不同,而没有任何抖动或整形;但是,我怀疑这可能是在某些高频 1 位情况下的完成方式。

我不清楚的一点是,试图模拟人类听力阈值的复杂过滤器似乎属于“噪声整形”的标题,这意味着(由我看到的实现支持)使用错误反馈术语。

放弃错误反馈但仍将复杂的白噪声滤波器用于抖动功能是否是一种有缺陷或误导的方法?错误信号真的在这里提供了一些重要的东西吗?

2个回答

我不知道什么是“Lipshitz 过滤器”,但我知道Stanley Lipshitz 是谁。现在,我不确定 Stanley 会对您说什么,但我从他那里得到的最佳建议是,如果您还使用错误反馈,则对加色抖动着色几乎没有什么好处。如果没有噪声整形反馈,获得三角形 PDF 抖动的最简单方法可能是生成良好的、独立的矩形 PDF 随机数v[n]并通过差异化运行。

d[n]=v[n]v[n1]

结果是频谱和三角形 PDF 中的高通。如果Δ是量化的步长,Δ212是原始量化器的方差(或功率),但是由于您的抖动和Δ24是整个抖动量化器的总功率。量化误差增加了 4.77 dB,但量化与输入信号的均值和方差完全解耦。尽管这与添加两个独立随机数所获得的量化能力相同,但我认为您更希望将大部分功率转向更高的频率(但不是全部,原始量化器的频谱仍然是平坦的) .

如果您计划进行错误反馈,我认为最好的建议是使用白色三角形 PDF 抖动(需要添加两个独立生成的矩形 PDF 随机数)和错误反馈(设计一个好的反馈过滤器需要一些时间)。

没有抖动(如果量化步长非常小)和错误反馈。最简单的重要示例是“分数保存”,您只需删除低位( floor() 函数)并将这些位添加回(左侧零扩展)到之前的下一个样本样本被量化(使用 floor() 函数)。它在 DC 处具有无限的 S/N 比,并且完全消除了反馈滤波器(如双二阶)中的任何限制循环,即使输入变为零,也会使滤波器卡在 DC 值上。我已经做了很多。

为了了解如何回答我自己的问题,我做了一个 -90dB 的测试音调斜坡,并对其应用了不同的过程,并用 SoX 绘制了频谱图。z 轴从默认值上移以使事情更清晰。

首先,在添加抖动和量化以计算新误差之前过滤误差并将其添加到信号(整形)的传统方法(我的问题中描述的第二种方法):

Lipshitz 形误差

现在看看当我们试图避免参考误差项时会发生什么,我们将 Lipshitz 滤波器应用于白噪声,并将其用作量化前的抖动并丢弃误差:

Lipshitz 形白噪声抖动

这里显而易见的是,虽然本底噪声可以在噪声整形方法中提高的相同位置提高,但它似乎达到了一个无法降低的极限。

正如人们所预料的那样,因为它受到量化噪声的影响,而我们要过滤的信号的唯一特别之处在于它以白色开始,因此量化噪声不相关。

因此,为了完成图片,我们尝试移除抖动模式并单独应用噪声整形:

Lipshitz 形状,无抖动

哎呀!显然不是一个好主意。

因此,在回答我自己的问题时,如果您要进行抖动而不是噪声形状,则对抖动模式使用复杂的传递函数的价值有限,因为抖动和可能出现的区域仍然存在量化本底噪声使用普通抖动无法访问特别清晰的整形。

也就是说,塑造抖动功能一定还是有一些优点的,因为我至少可以通过使用紫噪声而不是白噪声来减少低频区域的噪声,而且我不知道超出理论极限多远不定形抖动延伸。所以这个答案是不完整的。


更正:最初我在中间图像中弄乱了一个系数(形状白噪声)。我已经更新了图像,并且事情比以前更好,但仍然可以得出相同的基本结论。