音频有损压缩是一种通过牺牲部分音频数据以显著减少文件大小的编码技术,广泛应用于音乐流媒体、视频音轨、语音通信和便携设备存储。相较于无损压缩(如FLAC),有损压缩在保证可接受音质的同时大幅降低数据量,适合网络传输和存储受限场景。
工作原理
通过去除人耳难以察觉的音频信息(感知冗余),结合频域变换、量化和编码技术,显著减少音频数据量的同时尽量保留听感质量。
音频有损压缩的基本流程包括以下步骤:
- 信号分析:将输入音频信号(通常为PCM格式)分帧,转换为频域表示(如通过快速傅里叶变换FFT或改进离散余弦变换MDCT)。
- 心理声学分析:根据人耳感知特性,识别可忽略的音频成分(如被掩蔽的频率或低能量细节)。
- 量化与编码:对保留的信号进行量化(降低精度)和熵编码(如霍夫曼编码),生成压缩数据流。
- 封装:将压缩数据封装为特定格式(如MP3、AAC),便于存储和传输。
心理声学基础
有损压缩的核心是利用人耳的感知局限,主要包括:
- 频率掩蔽:较强的频率成分会掩盖附近较弱的频率,使其难以被感知。例如,低频声音可能掩盖高频细节。
- 时间掩蔽:短时间内出现的弱信号可能被强信号掩盖,如突发的强音掩盖后续弱音。
- 听觉阈值:人耳对不同频率的敏感度不同(如2-4kHz最敏感),低于阈值的信号可忽略。
- 频率范围:人耳可感知的频率范围为20Hz-20kHz,超出范围的信号(如超高频)可丢弃。
通过心理声学模型,压缩算法分配比特资源,优先保留对听感影响大的信号,剔除冗余部分。
有损压缩算法
MP3(MPEG-1 Audio Layer III)
MP3 可能是最著名的有损压缩格式。它由德国 Fraunhofer 研究所于 20 世纪 90 年代初开发,并迅速成为数字音乐的黄金标准。
- 工作原理:MP3 的核心是利用 MDCT(修正离散余弦变换) 将音频信号转换到频域,然后应用心理声学模型来决定哪些频率分量可以被删除或以更低的精度编码。它主要依赖频域掩蔽,在一个强音附近的弱音会被直接移除。
- 优点:
- 极高的兼容性:几乎所有设备和软件都支持 MP3 格式。
- 相对高效:在当时,MP3 以极小的文件体积提供了接近 CD 的音质。
- 缺点:
- 技术过时:相比后来的算法,MP3 的压缩效率较低,尤其是在低码率下,音质会明显下降。
- 有专利限制:虽然核心专利已过期,但它在发展初期限制了其广泛应用。
AAC(Advanced Audio Coding)
AAC 被誉为 MP3 的继任者,它于 1997 年发布,旨在解决 MP3 的诸多局限。
- 工作原理:AAC 继承了 MP3 的大部分核心思想,但进行了多项技术革新。它使用了更复杂的 MDCT,并引入了预测编码、时间噪声整形和更灵活的声道编码等技术,使其在处理瞬态信号和高频部分时表现更好。
- 优点:
- 更高的压缩效率:在同等码率下,AAC 的音质通常优于 MP3,尤其是在低于 128 kbps 的码率时,优势更加明显。
- 更宽的频率范围:AAC 支持更高的采样率和多达 48 个声道,更适合处理多声道和环绕声。
- 应用:AAC 是 Apple iTunes/Apple Music、YouTube、Nintendo 3DS/Wii U 等现代主流平台的默认音频格式,得到了广泛支持。
Ogg Vorbis
Ogg Vorbis 是一个完全开放、免专利的音频压缩算法,由 Xiph.Org 基金会开发,旨在提供一个高质量、自由的替代方案。
- 工作原理:与 MP3 和 AAC 类似,Ogg Vorbis 也基于 MDCT 和心理声学模型。但其独特之处在于它使用了更灵活的块大小,可以更好地适应不同类型的声音,特别是复杂的音乐。
- 优点:
- 完全免费:任何人都可以自由使用,没有专利或授权费用。
- 出色的压缩效率:在许多听力测试中,Ogg Vorbis 在中低码率下表现优于 MP3。
- 灵活的码率控制:支持真变码率(VBR),可以根据音频内容动态调整码率,实现音质和文件大小的最佳平衡。
- 应用:主要用于开源软件、视频游戏和一些在线流媒体服务。
Opus
Opus 是一个专为实时通信而设计的现代、高性能有损压缩算法,由 IETF (Internet Engineering Task Force) 标准化。
- 工作原理:Opus 的最大特点是它结合了两种算法的优势:
- SILK:一种基于线性预测编码(LPC)的算法,擅长处理语音,提供极低码率下的高清晰度。
- CELT:一种基于 MDCT 的算法,擅长处理音乐和通用音频,提供高音质和低延迟。 Opus 能在这两种模式之间无缝切换,以适应不同的音频内容和网络环境。
- 优点:
- 极低的延迟:Opus 的编码延迟可以低至 2.5 毫秒,这对于实时通信至关重要。
- 极高的通用性:既能处理窄带语音,也能处理全频带音乐。
- 出色的音质:在任何码率下,Opus 的音质通常都优于其他所有主流有损编码。
- 应用:Opus 已成为 WebRTC 的强制性音频编码器,广泛应用于语音通话、视频会议、在线游戏和 Discord、Twitch 等实时通信平台。
G.711
概念
G.711 是国际电信联盟(ITU-T)制定的一种音频编码标准,主要用于数字电话系统。它是一种脉冲编码调制(PCM)的变体,通常被认为是一种非压缩的音频编码方式,或者更准确地说,是一种非线性量化的编码。
它之所以“非压缩”,是因为它没有像MP3那样的复杂算法来剔除冗余信息,而是直接对原始音频波形进行编码。但是,为了减少数据量,它使用了一种特殊的量化方式。
关键技术:非线性量化
G.711的核心在于其非线性量化技术,也称为压扩(Companding)。这个技术利用了人耳对声音响度感知的特点:
- 人耳对小音量声音更敏感:在安静环境下,一点微小的声音变化我们都能听见;而在嘈杂环境下,同样的声音变化可能就听不到了。
- G.711的压扩原理:它在编码时,对小信号(即低音量)采用更精细的量化,保留更多细节;而对大信号(即高音量)则采用更粗糙的量化,丢弃一些细节。这样做的结果是,在保持音质可接受的前提下,将每个采样点的位数从13或14位(线性PCM)减少到8位。
G.711有两种压扩算法,分别用于不同的地区:
- μ-law (mu-law):主要用于北美和日本。
- A-law:主要用于欧洲和中国。
尽管这两种算法的曲线略有不同,但它们都实现了从更高位数的线性PCM到8位非线性PCM的转换。
特点
- 高音质,低延时:G.711的采样率为8000Hz,每个采样点8位,因此数据速率为 8000×8=64 kbps。由于算法简单,几乎没有编码和解码的延迟,因此非常适合对实时性要求极高的电话通信。
- 高带宽占用:相较于G.729等更先进的语音编码标准,G.711的64 kbps数据速率相对较高。
- 兼容性强:作为数字电话系统的基础标准,它被广泛应用于传统的数字电话网(PSTN)、ISDN,以及大量的VoIP设备中,具有非常好的互通性。
应用场景
G.711的主要应用场景是语音通信,尤其是:
- VoIP (Voice over IP):在IP电话、视频会议等场景中,G.711因其低延迟和高音质而被广泛使用。
- PSTN:传统的数字电话网的基础编码标准。
- 视频会议:作为音频编码的一种选择,确保了语音的清晰和实时传输。
关键技术
感知编码(Perceptual Coding)
这是有损压缩的核心思想:利用人类听觉系统的掩蔽效应(如频率掩蔽、时间掩蔽)来“聪明地丢信息”。
- 临界带(Critical Bands):将频谱划分为若干频带,每个频带模拟人耳的分辨能力;
- 掩蔽模型(Masking Model):强声可以掩盖邻近的弱声,这些弱声就可以省略;
- 听觉阈值分析:只有超过阈值的频率成分才有可能被编码保存。
应用:MP3、AAC、Opus、Vorbis 等编码器都内置感知模型。
频域变换(Transform Coding)
为了更有效地分析和压缩频率成分,有损编码器会先将时域音频变换到频域。
- MDCT(改进型离散余弦变换):消除帧间边界伪影(无缝窗口重叠);
- FFT(快速傅里叶变换):用于谱分析,但重构能力不如 MDCT;
- 滤波器组(Filter Bank):结合短时傅里叶分析构建高效多带处理。
优点:将音频分解为频带后,可以更细致地分配比特、量化资源。
量化(Quantization)与比特分配(Bit Allocation)
量化是将连续幅度变为有限等级,是有损压缩中信息“丢失”的主因。
- 非均匀量化:人耳对不同频率/响度灵敏度不同,量化精度也不同;
- 动态比特分配:强信号多分配比特,弱信号分配少;
- 掩蔽域内量化误差控制:控制误差不超过掩蔽阈值,避免可闻失真。
熵编码(Entropy Coding)
为了进一步压缩数据体积,编码器使用无损压缩技术对量化结果编码:
- 霍夫曼编码(Huffman Coding):基于概率构建最优前缀码;
- 算术编码(Arithmetic Coding):压缩效率高于霍夫曼,但更复杂;
- Run-Length Encoding、LZ77 等变种:处理重复数据。
立体声压缩(Stereo Coding)
立体声录音存在左右声道冗余,有损编码中通常采用:
- 联合立体声(Joint Stereo):编码中(Mid)与侧(Side)信号,减少比特;
- 强度立体声(Intensity Stereo):忽略左右声道能量差异,仅保留主方向;
- 参数化立体声(Parametric Stereo):用少量参数恢复左右空间感(常用于低码率,如 HE-AAC)。
动态码率控制与帧打包(CBR/VBR)
- CBR(Constant Bit Rate):固定每秒比特数,适合流媒体传输;
- VBR(Variable Bit Rate):复杂音频分配更多比特,静音/简单部分少分配,提升整体音质;
- ABR(Average Bit Rate):兼顾质量与文件大小控制。
延迟控制与实时编码优化(如 Opus)
现代语音编解码器还引入了:
- 低延迟算法结构(如 CELT、SILK);
- 帧内预测、前向-后向滤波、自适应窗口切换;
- 适配 网络抖动、丢包恢复 等机制。
去块处理与重构滤波器(Post-filtering)
为减少压缩后可能出现的“块状感”或“铃声效应”,编码器或解码器中加入:
- 抗伪影滤波(Anti-alias filter)
- 重建后处理滤波(Post-reconstruction filtering)
- 噪声填充(Noise Shaping):模拟被删除的高频信号