AAC编码原理与格式浅谈

0 阅读5分钟

AAC(Advanced Audio Coding,高级音频编码)是一种感知音频编码技术。它诞生于1997年,由Fraunhofer IIS、杜比实验室、AT&T、索尼等公司联合开发,旨在取代MP3格式,在相同的比特率下提供更好的声音品质。2000年,AAC被纳入MPEG-4标准,增加了PNS(Perceptual Noise Substitution,感知噪声替换)等新技术。

本文将从心理声学原理核心编码工具规格与封装格式三个层面,深入拆解AAC的工作原理。


一、核心基石:心理声学模型

AAC之所以能用较低的比特率保持高音质,其核心秘密在于心理声学模型。简单来说,这个模型会分析音频信号,并计算出人耳能感知到的掩蔽阈值

1.1 听觉掩蔽效应

人耳对声音的感知并非线性,存在两种关键的掩蔽效应:

  • 频域掩蔽:一个强信号(如鼓声)会“盖住”它附近频率的弱信号。AAC会计算出这个掩蔽曲线,将被掩蔽的、听不见的频率成分丢弃。
  • 时域掩蔽:强信号出现前/后的短暂时间内,人耳灵敏度会降低。AAC利用此特性处理信号瞬变。

基于这些原理,AAC的心理声学模型会计算出每个频段的 “信掩比”(Signal-to-Mask Ratio),指导后续量化过程——给需要被“掩蔽”的频率成分分配更少的比特,甚至直接丢弃,从而在保证主观听感的前提下,大幅压缩数据量。

1.2 量化与编码:双循环控制

在心理声学模型计算出掩蔽阈值后,AAC进入量化与编码阶段。AAC使用了双循环控制(Two Nested Loops) 结构来精确控制每个帧的比特消耗和量化噪声:

  1. 外层循环(Rate Loop):检查编码后数据是否超过目标比特数,若超过则调整量化步长(量化步长越大,数据量越小,质量也越低)。
  2. 内层循环(Distortion Loop):检查量化噪声是否已低于心理声学模型计算出的掩蔽阈值,若低于则停止,否则进一步调整量化步长。

通过这两个循环的反复迭代,AAC能在文件大小和声音质量之间取得最佳平衡。


二、核心编码工具

除了心理声学模型,AAC还集成了一系列先进的编码工具:

2.1 滤波器组(Filter Bank)

AAC使用 MDCT(Modified Discrete Cosine Transform,改进型离散余弦变换) 将时域音频信号转换到频域。它支持两种块长度:

  • 长块(1024点):适用于稳态信号(如弦乐),频率分辨率高,压缩效率好。
  • 短块(128点):适用于瞬态信号(如打击乐),时间分辨率高,能有效避免“预回声”(Pre-echo)失真。

2.2 时域噪声整形(TNS)

TNS是AAC一个非常重要的工具。它通过在频域上进行预测,来精确控制量化噪声在时域上的分布形状。对于类似打击乐的瞬态信号,TNS能将量化噪声“整形”到信号能量高的区域附近,从而显著抑制“预回声”现象。

2.3 立体声编码(Joint Stereo Coding)

AAC提供了两种高效的立体声编码技术,用于消除左右声道间的冗余:

  • M/S(Mid/Side)立体声:记录“左右声道之和(M)”与“左右声道之差(S)”。当两个声道内容相似时,差值(S)的能量很小,可以用极少比特编码,大幅提升压缩效率。
  • 强度立体声(Intensity Stereo):利用人耳在高频区域对相位不敏感的特性,在高频部分只用一个声道加方向信息,从而节省比特。

2.4 预测(Prediction)与PNS

  • 预测(Prediction):利用已解码的前一帧数据来预测当前帧,只需编码预测误差,能有效去除信号间的冗余。但在AAC LC规格中被禁用,以降低复杂度。
  • PNS(Perceptual Noise Substitution,感知噪声替换):对于类似噪声的信号(如风声、镲片声),编码器不传输具体频谱,而只传输一个“噪声”参数,解码端据此重建相似的噪声信号,能大幅节省比特。

三、AAC的规格(Profile)与封装格式

3.1 AAC的常见规格(Profile)

AAC提供了多种规格以适应不同场景,常见的一些如下:

Profile特点典型应用
AAC LC最常见规格,复杂度低,音质优异音乐流媒体(Apple Music、YouTube)、便携播放器
HE-AAC (v1)AAC LC + SBR(频段复制)。SBR技术专门编码高频成分,在低码率下效率极高数字广播(DAB+)、低码率流媒体
HE-AAC v2HE-AAC v1 + PS(参数立体声)。PS技术用极少数据描述立体声信息极低码率(< 32kbps)的音频流,如移动网络广播
AAC-LD低延迟(Low Delay),算法延迟极低实时双向通信:视频会议、在线游戏

3.2 两种常见的封装格式:ADIF vs ADTS!!!!!

AAC编码后需要封装成文件或流,主要有两种格式:

  • ADIF(Audio Data Interchange Format,音频数据交换格式)

    • 所有数据共用一个头信息。
    • 特点:必须从头开始解码,无法随机访问和从中间开始播放。
    • 用途:适合本地文件存储。
  • ADTS(Audio Data Transport Stream,音频数据传输流)

    • 每一帧(1024个采样点)数据前都有一个独立的头信息,头部包含同步字 0xFFF
    • 特点:解码器可随时找到同步字并从任意一帧开始解码,非常适合网络流媒体传输。

总结: AAC编码的整个过程,可以理解为:高分辨率MDCT变换将信号映射到频域;心理声学模型计算出人耳听不到的“冗余”信息;TNS、M/S立体声、预测等工具进一步去除信号间的相关性;量化与Huffman编码对最终数据进行高效的无损压缩;最终数据以ADTS格式封装,用于实时传输,或以ADIF格式存储为本地文件。这一套精密流程,造就了AAC在同等码率下优于MP3的声音品质。