音频没有时间冗余可用,它的压缩靠的是人耳的漏洞——把听觉掩蔽掉的成分整段丢掉,所以有损能到 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 秒实验
- 把一段 CD 音质的 WAV 分别存成 FLAC 与 AAC 128,看两个文件的大小比例。
- 把两者放一起 AB 对比听,体会【省掉的 90%】到底藏在哪里。
常见误区
- 以为音频也有【帧间预测】。音频的时间相关性远不如视频,这条路走不通。
- 以为无损压缩【只是算法差一点】。无损的天花板是信息论决定的,2 倍左右就到顶了。
- 以为比特率越高音质就一定越好。超过原始质量之后,多出来的码率只是喂给了噪声。
自测三问(点开对答案)
1. 音频有损压缩的依据是什么? —— 人耳的听觉掩蔽效应——被掩蔽掉的成分可以整段丢弃。 2. 无损音频压缩比的天花板大约多少? —— 2 倍左右,因为它只能去掉统计冗余。 3. 音频与视频的编码有什么共同点? —— 都要经过预测、量化、熵编码,都受压缩比与算力的取舍支配。- ☐ 下一节(7.4.1 ITU/ISO/JVT)
相关笔记
- ITU/ISO/JVT — 谁来定这些编码标准
- 音频编码算法 — 第四章的编码算法清单
- 数字音频 — 采样与量化那一步
- 有损压缩 — 有损那条路的总纲
- 🎬 FFmpeg入门详解 · 索引