压扩如何压缩动态范围?

信息处理 动态范围压缩 压扩
2022-02-24 09:50:36

关于何时“压缩”信号,我通常会看到如下图:

在此处输入图像描述

以及压扩曲线: 在此处输入图像描述

我只能看到压扩曲线如何通过在进行量化时舍入更高的幅度而不是更低的幅度来实现更高的平均 SQNR,根据正常的 PDF,使量化更有效。我看不出它如何将信号的动态范围降低到“压缩动态范围”。我能看到的唯一动态范围压缩是,当再次扩大较高幅度时,它们将扩大到在量化期间向下舍入的数字,从而降低了上限动态范围,但不会降低下限。

动态范围压缩似乎是指压缩器之后和扩展器之前的信号动态范围,但这没有意义。PCM 样本怎么能有一个不是你想要的动态范围......并且由于样本是均匀的,所以肯定是高舍入幅度现在具有更高的相对幅度(例如样本 255/256,而它最初是向下四舍五入更多),当然较低的幅度现在是更高的幅度。

让我感到困惑的是,1.0 输入幅度和 1.0 输出幅度之间存在对应关系,它根本不会压缩动态范围。

我希望输出中的关键字是“相对的”,即相对于输出范围,它实际上将其映射到更小的动态范围,尽管它看起来是相同的范围。如果动态范围压缩来自样本映射到的动态范围小于输入,这对我来说是有意义的,而压扩曲线只是一种比线性更有效的方法。

为什么压缩扩展曲线甚至被称为“压缩”,肯定是压缩部分将其映射到更小的动态范围,或者在使用数字压缩时,压缩部分是PCM样本中位数的减少,您可以使用线性压缩扩展进行压缩,如果您将压缩定义为非均匀量化,则根本不会被视为压缩。

2个回答

当您想要一个很大程度上独立于信号电平的信噪比 (SNR) 时,可以使用压扩。

量化噪声是恒定的,因此如果信号电平发生变化,SNR 也会发生变化。

让我们考虑一个以 8 位量化的音频信号。量化噪声位于 -53dBFS。如果你有一个响亮的信号,即 -10dBFS,你就有一个健康的 43 dB SNR。然而,对于 -40dBFS 的软信号,SNR 在 13dB 时非常差。

如果您对这两种情况进行压缩,您可以获得大约 30dB 的 SNR,这要好得多。量化噪声的可听度不是绝对噪声水平的函数,而是相对于信号的噪声水平。如果信号本身更大声,您可以容忍更多的噪音,因为更大的信号掩盖了更多的噪音。

压缩意味着有一个解压缩操作,而压缩意味着它是有损压缩和最终产品,它只是用于以无法恢复的方式压缩,可用于DAW中的效果,或减少文件尺寸。虽然线性压扩是有损的,但它仍然被称为压扩,因为有一个基本的解压缩操作回到原始 PCM 位深度。

编解码器可以采用数字压扩,其目标是减小文件大小/增加传输线上每秒可以发送的样本,从而为相同数量的数据提供更好的采样率,同时保持动态范围信号尽可能好。

ADC的动态范围是可以产生的最大信号与最小信号之比,可以简化为20log10(2N1)因为电压比例因子被抵消了V(2N1)V=2N1. 可以产生的最大信号是V(2N1)因为有2N量化水平和2N量化电平使信号的峰峰值幅度为2N1. 可以产生的最小信号确实具有 V*1 的峰间幅度。如下图所示。

在此处输入图像描述

红色信号的动态范围20log(7/1)这里和测量信号的幅度一样20log(3.5/0.5). ADC 可以全面使用 floor 函数或舍入函数,但在实践中,这并不重要,因为实际 ADC 中存在其他错误如果使用舍入函数,则最小识别信号的峰峰值幅度只需为 1 的一小部分,即 0.0001,但最小输出为 1,因此 ADC 的动态范围指的是输出。因此,量化本底噪声为 1 的幅度(在高采样率下),动态范围是本底噪声与最大信号之间的差异。另一方面,SQNR 是输入信号平均功率与平均量化噪声功率之比,即 RMS 电压平方与噪声 RMS 电压平方之比。

当您对信号进行采样时,它会将量化噪声引入样本中,因为量化并不精确,因为您只有一定的位深度。因此,当采样率接近无穷大时,最大量化误差为 V 1(其中最大量化噪声幅度趋于 V 1),并且最大信号为V(2N1),因此 DNR 是最大信号幅度到最大量化噪声幅度。信号中已经存在的噪声不被视为 ADC 动态范围的一部分。在真实的ADC中,还引入了热噪声等

如果你有一个 12 位深度,你可以有一个编解码器,通过截断 12 位样本的最后 3 位,将其线性压缩为 8 位样本,即向下舍入到 8 的倍数。这会增加样本中的量化噪声因为当您通过在末尾添加 3 个 0 再次将样本扩展为 12 位时,样本现在更加不准确并且具有更高的粒度。因此,线性压扩是有损的,如果您首先使用 8 位样本进行采样,您将获得相同的结果,因此您可以获得 8 位深度采样的动态范围。因此,您不会保留原始信号的动态范围。

这就是为什么您会得到像 G.711 这样使用非线性压扩(如 A 律压扩)的编解码器,因为它们将 12 位较低幅度的样本映射到 1:1 而不是 8:1 的 8 位幅度水平,并且那么更高的幅度采样显然是 64:1,以弥补它,这样你就可以得到相同的平均 8:1 压缩。但是当然,因为大部分信号都在这个动态范围内,你最终会得到较低的平均量化噪声,因为大部分信号都被量化为 12 位 PCM,所以当你反转它以获得 12 位 PCM再次采样,量化噪声类似于如果它是真正的 12 位 PCM,这意味着这些样本中的固有动态范围现在接近 12 位 PCM,而不是它们被压缩到的 8 位 PCM。

如果要在模拟域中保留信号的动态范围,请将其映射到相同的动态范围使用 A 定律曲线。线性映射它绝对不会做任何事情,因为信号只会被线性缩放,这意味着它将具有相同的动态范围(除非线性缩放导致它下降到模拟电路动态范围的本底噪声以下,然后动态范围将减小),但用压扩曲线改变它会导致 8 位量化以与 12 到 8 位样本数字转换相同的方式量化,除了完全模拟。因此,您只需直接从 ADC 中获取前面提到的那些 8 位样本。因此,您实际上可以在物理电路中对物理信号进行压扩曲线。在这种情况下,您不压缩物理动态范围,您只需以 1:1 的净变化压缩和扩展信号,因为您

在模拟域或数字域模拟音频信号的压缩中,它是最终产品,它通常显示在输入和输出动态范围(在轴上)相同的非标准化图上,在这种情况下为 1: 1 压缩是y=x并以 1:1 的比例映射幅度,而动态范围在阈值以上 4:1 压缩,您可以在输出轴 (y) 上看到新的动态范围。

在此处输入图像描述

在数字域中,信号的动态范围限制在 V*1 的下限,但当然可能没有那么低的峰值,因此 N 位深度信号的动态范围小于或等于N位ADC的动态范围。