🎬 第七章 音视频编解码原理与标准
📄 一句话概括

音频没有时间冗余可用,它的压缩靠的是人耳的漏洞——把听觉掩蔽掉的成分整段丢掉,所以有损能到 10 倍以上,而无损只有 2 倍。

📝 本节和前面几节的关系

7.1、7.2 讲的是视频这一路;这一节把音频单独讲清楚——它和视频共用【量化】这一步,但用不上【帧间预测】。

一、音频编码的三步

从声音到文件,音频要过三步:采样 → 量化 → 编码。 前两步在第 4.1.2 节讲过了——它们决定了原始码率; 这一节关心第三步:怎么把已经数字化的样本写得更短。 原始码率只有三个乘数:采样率 × 位深 × 声道数。 CD 音质:44100 × 16 × 2 = 1411.2 kbps。

二、为什么音频用不上帧间预测

视频能压两个数量级,靠的是相邻两帧里同一位置的像素几乎一样。 音频没这个便宜:当前这 20 毫秒的声音,和上一段的关系远没有那么强——说话、音乐都在不断变化。 所以【时间冗余】这条最值钱的路,音频走不通。 音频能用的只剩两样:统计冗余(相邻采样之间的相关性)与感知冗余(人听不见的部分)。

三、感知编码:利用人耳的漏洞

听不见的部分是从哪来的?人耳的听觉掩蔽效应: 频域掩蔽——一个强音旁边,弱音会被盖住,听不见; 时域掩蔽——强音之前和之后的一小段时间里,弱音也听不见; 绝对听阈——低于某个音量的频率成分,本来就听不见。 MP3 与 AAC 的做法就是把信号分到若干临界频带里,凡是落在掩蔽曲线下面的成分,直接量化成 0。 这就是有损压缩能到 10 倍以上的全部秘密——丢掉的是人耳本来就收不到的东西。

四、两类编码器的结构

按【丢不丢】分成两类,结构也不一样: 波形编码——PCM、ADPCM、FLAC、ALAC。目标是还原波形本身,不做心理声学取舍,所以最多压到 2 倍。 感知编码——MP3、AAC、Opus、AC-3。滤波器组(子带/MDCT)→ 按掩蔽阈值量化 → 熵编码,压缩比高得多。 两类共同的收尾都是熵编码(第 6.3.4 节),包括跑得很熟的霍夫曼编码。

五、音频与视频的对照

把两边并排看,结构其实很像: 相同:都要预测、量化、熵编码;都受【压缩比换算力】这条规律支配。 不同:视频的主角是时间冗余(帧间预测),音频的主角是感知冗余(掩蔽效应)。 结果就是压缩比的天壤之别:音频 10 倍级,视频 200 倍级(第 6.1 节)。

六、动手 Demo:音频压缩比为什么上不到三位数

音频的原始码率只有三个乘数:采样率 × 位深 × 声道数。

pcm = 44100 * 16 * 2
rows = [("FLAC", 700), ("AAC", 128), ("MP3", 128), ("Opus", 64)]
print("PCM  %d bps = %.1f kbps  1 : 1" % (pcm, pcm / 1000.0))
for name, kbps in rows:
    print("%-5s %4d kbps  压缩比 %.0f : 1"
          % (name, kbps, pcm / (kbps * 1000.0)))

实跑输出:

--------------------------------------------------------------------
音频压缩比为什么上不到三位数
--------------------------------------------------------------------

音频的原始码率只有三个乘数:**采样率 × 位深 × 声道数**。

  CD 音质的 PCM:44100 × 16 × 2 = **1411200 bps = 1411.2 kbps**。

  格式          采样率     位深     码率            压缩比
  ---------------------------------------------------------
  PCM(CD)     44100      16       1411 kbps       1 : 1
  FLAC 无损     44100      16       约 700 kbps     2 : 1
  AAC 128       44100      —        128 kbps        11 : 1
  MP3 128       44100      —        128 kbps        11 : 1
  Opus 64       48000      —        64 kbps         22 : 1

  两个台阶看得很清楚:
  **无损(FLAC)卡在 2 倍**——它只能去掉统计冗余,一个采样值都不能丢;
  **有损(AAC/MP3)轻松到 10 倍以上**——靠的是感知编码,丢掉听觉掩蔽掉的成分。
  与第 6.2.1 节、第 6.2.2 节的结论完全对上:**无损有天花板,有损没有。**

无损(FLAC)卡在 2 倍——它只能去掉统计冗余,一个采样值都不能丢; 有损(AAC/MP3)轻松到 10 倍以上——靠的是感知编码。 与第 6.2.1 节、第 6.2.2 节的结论完全对上。

30 秒实验

  1. 把一段 CD 音质的 WAV 分别存成 FLAC 与 AAC 128,看两个文件的大小比例。
  2. 把两者放一起 AB 对比听,体会【省掉的 90%】到底藏在哪里。

常见误区

  1. 以为音频也有【帧间预测】。音频的时间相关性远不如视频,这条路走不通。
  2. 以为无损压缩【只是算法差一点】。无损的天花板是信息论决定的,2 倍左右就到顶了。
  3. 以为比特率越高音质就一定越好。超过原始质量之后,多出来的码率只是喂给了噪声。
自测三问(点开对答案) 1. 音频有损压缩的依据是什么? —— 人耳的听觉掩蔽效应——被掩蔽掉的成分可以整段丢弃。 2. 无损音频压缩比的天花板大约多少? —— 2 倍左右,因为它只能去掉统计冗余。 3. 音频与视频的编码有什么共同点? —— 都要经过预测、量化、熵编码,都受压缩比与算力的取舍支配。

相关笔记