如何对音频进行数据压缩?

信息处理 声音的 压缩
2022-01-30 16:41:37

我知道压缩是通过利用我们听觉感知的某些心理声学特征来起作用的,但我仍然感到困惑。我的意思是,最终,无论做了什么,都必须记录波形,我的印象是所有波形生来都是平等的?删除存储该信息所需的比特带吗?

我很困惑?

3个回答

“压缩音频”至少有两种不同的含义,正如您的标题所提到的,一种是数据压缩,另一种是级别压缩。它们是两个完全不同的功能。

关于音频数据的压缩,一般有两大类:无损压缩和有损压缩。粗略地说,信号量化是有损压缩的一种形式,但我不会将字宽缩减与压缩称为同一主题。所以让我们假设音频数据的字宽(或“位深度”)已经减少到它的生产长度(比如,16 位或 24 位或其他)。

顾名思义,无损压缩的音频数据将在未压缩时准确恢复音频数据。原始波形将被恢复。对于有损压缩,当音频未压缩时,不会恢复原始波形,但期望音频听起来相同。

要对音频进行无损压缩,主要有两个步骤,第一个是通常所说的“差分编码”。“增量调制”是最简单的示例,但可以使用线性预测编码 (LPC) 来组合过去的 N 个样本,从而预测下一个传入样本。如果预测良好,则实际样本和预测样本之间的差异会很小,这会显着减少要编码的值的数量。比如说,对于 16 位,您的差异信号可能不会比 128 大多少,而不是要编码 65536 个值,而您只需要 8 位来编码该差异。

由于差异大于 128,您需要超过 8 位的罕见情况呢? 就是熵编码或霍夫曼编码的用武之地。这本质上是像pkzip这样的文件压缩程序所做的。经常出现的词比很少出现的词分配的位数更少。这一切都来自香农的信息论。

简而言之,就是无损压缩。要了解有损压缩是什么,还有一门关于音频感知的额外科学,可以听到哪些音频特征,哪些听不到。这很难解释,但是有一些方法可以将可以听到的内容与无法听到的内容区分开来,对于被认为听不见的分离数据,不会为其分配任何位。这是一个粗略的解释。

这是我的非技术 2 美分...

通常,当您提到压缩音频时,您指的是人类倾向于听的音频,例如语音或音乐。语音和音乐对人类来说是有趣且有意义的,因为这些信号具有时间相关性或冗余性,使人脑能够跟踪信号,甚至预测信号的去向。理解这一点的最简单方法是考虑完全不相关的音频信号,即白噪声。白噪声在严格意义上是不可压缩的,因为无法从信号的过去样本中预测下一个样本将是什么。白噪声听起来并不是特别有趣。

回到更有趣的信号,如果您分析音乐和/或语音,您会发现这些信号由许多片段组成,这些片段在短期内可以建模为周期性信号。如果您知道如何对声音的来源进行建模,则可以预测如何从过去的信号值再现未来的信号。这种预测能力是允许压缩发生的原因。如果可以从过去的信号样本中预测未来的信号样本,则过去的信号样本包括对于存储有关信号的信息不是必需的信息。压缩算法寻找方法来消除信号中的这些信息冗余(或相关性)并仅存储非冗余信息(显然不是以人类听觉系统可以理解的格式)。

音频压缩的另一面是音频重建。在这里,您获取非冗余存储信息并使用它来重建音频信号。这里,音频源的模型可以用作信号重建中的工具,或更一般地,用于对没有冗余的信号进行编码的算法被反转以将冗余插入回信号中。在音频信号的重建中,重建的信号会遗漏人类听觉系统无法感知的特征。这是可以考虑心理声学的一个领域。如果已知特征对于信息的感知不是不重要的,则可以将这些特征排除在存储的信号信息之外。心理声学可以进一步减小压缩信号表示的大小,但不是必须实现原始信号的压缩。压缩任何信号唯一需要的是时间相关性。

这里需要注意的是,一些音频信号包括白噪声作为信号的一个组成部分。白噪声不能基于相关性进行压缩,但是可以以不同的方式处理。一种选择是在压缩信号中包含一个代码,该代码指示作为信号分量存在于何处以及存在多少噪声。这样的代码比将噪声存储为时间样本的效率高很多倍。在重构信号时,可以在适当的电平上重新生成噪声并与重构的信号相结合。一些高压缩语音编码器使用这样的技术来处理诸如“s”或“sh”之类的声音。信号的噪声部分可以毫无困难地重新加入,因为人耳无法区分白噪声的相位信息。

直接处理这类处理的主题是信息论。您可能想阅读以下对该主题的简单技术处理:

“符号信号和噪声” 作者:JR Pierce

JR Pierce 是所谓的信息论之父 Claude Shannon 的朋友。

我相信这本书是公共领域的,现在可以作为电子书免费获得。

不必保留波形。就能够仅使用人耳和大脑作为检测设备来区分它们而言,并非所有波形生来都是平等的。有时,完全不同的波形会被听到完全相同的声音。只有“典型”人类可能感知的音频波形的特征才会保留在压缩音频中。通常,这些特征在描述它们所需的位方面比原始原始波形更简单。