AAC编解码原理概述

一引言 

本文对AAC(Advanced Audio Coding)音频编码算法进行总结。首先简要介绍MPEG音频(包括AAC)的发展历程及AAC概况,然后结合FAAC(Free AAC)的代码对AAC编码算法的各个模块进行比较详尽的分析。 

二 AAC概况 

1MPEG及其AAC音频的发展历程 

1988年ISO/IEC标准化组织成立了运动图像专家组(MPEG)(正式名称ISO/IEC JTC1/SC29/WG11)来开发通用的运动图像,相关声音以及图像声音的组合的国际标准。从1988年以来,ISO/MPEG承担了很多的视频和音频编码的标准化工作。它所制定的标准在许多方面得到了广泛的应用。 

1992年末,MPEG完成了MPEG-1视频编码标准。最后被采纳为ISO/IEC IS 11172标准。与之对应的音频部分分为三种操作模式(被称为层:Layer),从Layer-1 到Layer-3编码,提供逐级增进的音频质量,当然,与此同时复杂度也逐级增高。Layer-3提供具有最高的复杂度和最好的音频质量的编码方法,就是广泛被人们所知的MP3。 

MPEG-2的音频部分在两方面对于MPEG-1进行了扩展,同时保持音频编码的后向兼容性:对于5.1声道的支持,适应通常所谓的电影院音响效果;增加了对于16kHz,22.5kHz,24kHz采样率的支持。这就是MPEG-2 BC(Back-Compatible)。 

根据1994年提出的效验模型发现如果引进新的算法,放弃兼容性可以显著地提高编码的效率,MPEG于是便放弃了原有的兼容性要求,于是成立了一个新的工作项目,定义为AAC(Advanced Audio Coding),并于1997年形成了国际标准ISO 13818-7。这个标准是不兼容MPEG-1的,被称为MPEG-2 NBC(Non Back Compatible)编码。 

MPEG-4规定了两种编码方法来对音频部分编码。对于中到高比特率的音频是由改进了的AAC编码实现的,低比特率的音频,则采用NTT(日本电信电话公司)等开发的TwinVQ编码方法。 

MPEG-4之后的MPEG-7和MPEG-21的注意力已经不是集中在提高质量降低码率方面,而是转而解决多媒体数据的表达检索等问题。所以AAC是迄今为止MPEG所提出的质量最好的音频编码标准。 

AAC综合了许多新的技术,有很多新的特性。它支持从8k到96k的各种采样率,支持多种声道配置方案。与MPEG Layer-3相比,AAC提高了频率分辨率,增加了线性预测和时域噪声整形,改进了联合立体声编码以及哈夫曼码本,在时-频变换中使用了自适应的长短窗切换机制,有效地增加了压缩比,提高了音频质量。这一切都使AAC拥有较其他编码标准更加优异的编码质量和性能。 

2AAC算法简介 

AAC系统包含了滤波器组、心理声学模型、量化与编码、预测、TNS、立体声处理和增益控制等多种高效的编码工具。这些模块或过程的有机组合形成了AAC系统的基本编解码流程。在实际应用中,并不是所有的功能模块都是必需的,下表列出了各模块的可选性.

          工具(模块)

      可选性

          码流打包

       必需

         无噪声编码

       必需

          量化器

       必需

         缩放因子处理

       必需

         M/S立体声处理

       可选

           预测

       可选

  IS(强度立体声) / 耦合声道处理

       可选

           TNS

       可选

         滤波器组

       必需

        增益控制(预处理)

       可选

     心理声学模型(感知模块)

       必需

MPEG-2 AAC编码器各模块的可选性 

为了能够适应于不同的应用场合,在AAC标准中定义了三种不同复杂度的框架(Profile)。分别为: 

MainProfile:在这种框架具有最高的复杂度,可以用于存储量和计算能力都很充足的场合。在这种框架中,利用了除增益控制以外的所有编码工具来提高压缩效率。 

LC(Low Complexity) Profile:这种框架用于要求在有限的存储空间和计算能力的条件下进行压缩场合。在这种框架中,没有预测和增益控制这两种工具,TNS的阶数比较低。 

SSR(Scalable SampleRate) Profile:在这种框架中,使用了增益控制工具,但是预测和耦合工具是不被允许的,具有较低的带宽和TNS阶数。对于最低的一个PQF子带不使用增益控制工具。当带宽降低时,SSR框架的复杂度也可降低,特别适应于网络带宽变化的场合。 

Main和LC框架式变化编码算法,采用MDCT作为其时/频分析模块,SSR框架则采用混合滤波器组,先将信号等带宽地分成4个子带,再作MDCT变换。在三种方案里,通过选用不同模块在编码质量和编码算法复杂度之间进行折衷。 

AAC属于感知音频编码。与所有感知音频编码类似,其原理是利用人耳听觉的掩蔽效应,对变换域中的谱线进行编码,去除将被掩蔽的信息,并控制编码时的量化噪声不被分辨。 

在编码过程中,时域信号先通过滤波器组(进行加窗MDCT变换)分解成频域谱线,同时时域信号经过MPEG中II型心理声学模型获得信掩比,掩蔽阈值,M/S以及强度立体声编码需要的控制信息,还有滤波器组中应使用长短窗选择信息。暂态噪声整形(TNS)模块将噪声整形为与能量谱包络形状类似,控制噪声的分布。强度立体声编码和预测以及M/S立体声编码都能有效降低编码所需比特数,随后的量化模块用两个嵌套循环进行了比特分配并控制量化噪声小于掩蔽阈值,之后就是改进了码本的哈夫曼编码。这样,与前面各模块得到的边带信息一起,就能构成AAC码流了。

三 AAC的编码流程

1、滤波器组(Filter bank) 

主要完成信号的时域到频域的转换,从而得到频域的频谱系数 

2、时域噪音修整(TNS) 

通过在频域上的预测,来修整时域上的量化噪音的分布。在一些特殊的语音和剧烈变换信号的量化上,TNS技术对音质的提高有很大贡献 

3、预测 

对音频信号进行预测可以减少冗余信息 

4、量化 

AAC的量化过程是使用两个巢状循环进行反复运算。通过对量化分享的良好控制,比特率能够有效降低 

5、比特流格式(Bit—stream format) 

在AAC中,信息的传输要经过熵编码,AAC有一个弹性的比特流结构。 

6、长时期预测(LTP) 

这是在MPEG-4中新增的,用来减少连续两个编码音频框之间的信号冗余 

7、知觉噪音代替(PNS) 

这是在MPEG-4中新增的,当编码器发现类似噪音的信号时,不对其进行量化,而是忽略掉,当解码的时候在还原出来,这样提高了效率

音频中存在的冗余

1、时域冗余。时域分布的非均匀性、样值间的相关性、信号周期之间的相关性、长时自相关性和静音。

 2、频域冗余。长时功率谱密度的非均匀性和语音特有的短时功率谱密度。 

3、听觉冗余。人耳的掩蔽效应、人耳对不同频段的声音的敏感程度不同、人耳对语音信号的相位变化不敏感。感知音频编码器原理 感知音频编码器利用心理声学模型,在采样率不变的情况下,根据信号的情况有选择的减小量化比特数,即人耳敏感的部分多分配量化比特数,使它的信号质量较好,失真较少,而对不敏感的部分少分配量化比特数,并通过掩蔽效应相应较小量化噪声的影响,这样可以在听觉质量不变的情况下,尽可能降低数据的传输速率。它利用心理声学模型,将人耳不能感知的声音成分去掉,只保留人耳感知的声音成分;另一方面,也不一味追求最小的量化噪声,只要量化噪声不被人耳感知即可。

频域编码器原理 

在介绍频域编码器之前先介绍时域编码器。时域编码方法是利用声音信号在时间域内幅度变换经PCM后形成的样本值,对不同的样本值实现二进制码代替,形成数码流。它结合声音幅度出现概率来表示选取量化比特数进行编码,在满足一定的量化噪声下压缩数据,还可以采取预测的方法来表示音频信号的全带宽,导致量化误差的频谱覆盖整个音频带宽。尽管时域编码可以压缩数据,但是压缩率太低。 

频域编码就是将时域中的声音信号进行频率变换,结合声音的相关性以及人的感知,选取量化比特数进行编码,它是基于人耳的心理声学模型特性对量化噪声进行处理的。根据任何周期信号都可以表示为振幅随时间的变化关系,也可以用振幅与相位的频率系数集来描述,我们使用傅立叶变换来建立时域和频域的对应关系,分析一系列的时间去取样值,就可以得到这段时间的频率成分。它包含下面两个部分: 

1、采用滤波和FFT变换,可在频域内将其能量较小的分量忽略,从而实现降低比特率 

2、利用人耳听觉的掩蔽效应,在满足一定量化噪声的前提下压缩数据。

数字音频编码 

数字音频编码以感知音频编码原理为基础,采用了两种频率编码器:子带编码器和变换编码器。 

1、子带编码器,采用若干子带,处理时间上相邻的取样值; 

2、变换编码器。处理频率上相邻的取样值。 

数字音频信号(即PCM信号)是基于时间取样的,在编码端,它通过分析滤波器组分成许多频带子带,通过分析每个子带取样的能量,依据心理声学模型来编码,而在变换编码中,输入实际的取样再变换到频域,根据心理声学模型对变换系数进行量化和编码,得到比较高的频率分辨率,然后组帧形成低比特速率的比特流输出。

子带编码器 

它的基本原理是用一组带通滤波器将输入信号分成若干个子带,再将这些带通信号经过频谱搬移到低频,形成一组基带信号,对他们分别采样,进行模/数变换。想要使传输速率最小,每个子带的采样频率应该是其带宽的两倍。采样后的信号经过量化,并用PCM等各种形式编码后,将各子带的编码数据合并成码流发送到信道上。注意子带的宽度可以是等宽的,也可以是不等宽的。 

音频信号虽然是一个非平稳的随机过程,但是由于发音的惯性,在短时间内可以认为它是一个平稳的信号。子带编码就是将一个短周期内的连续十几取样信号送入数字滤波器组中,滤波器组将信号分成多个子带(最多是32个),对每个子带分配不同的比特数进行独立编码(可以用心理声学模型来确定比特数)。 

子带编码器首先利用数字滤波器组将短时的音频信号分成32个子带,通过分析每个子带的能量来判断该子带是否包含可听信息,计算每个子带的平均电平值,用来计算当前子带以及相邻子带的掩蔽阈值,最后根据最小可听阈值推导出各个子带的最后掩蔽比。计算每个子带的峰值功率并与掩蔽阈值进行比较,如果子带不包含可听信息,或者子带中被其他强度大的声音掩蔽的声音信号,或者该子带被另一个子带完全掩蔽,那么就不会对这些子带进行编码。最后,必须给每个子带分配足够的位数来保证量化的噪声处于掩蔽阈值以下。在每一个子带的量化噪声低于掩蔽阈值的条件下,由信号掩蔽比(SMR,即信号最大值与掩蔽阈值之间的差值)决定分配给子带的比特位数。 

使用子带编码具有下面的优点: 

1、对信号进行分带可以去除信号之间的相关性。从而可以独立的进行量化编码 

2、由于音频和语音信号的频谱为非平坦的,通过对语音的不同子带分配不同的比特数,就可以控制各个子带相应的量化电平和量化误差,从而使编码速率与信号的信源统计分布实现更精准的匹配。对低频段使用较多的比特数来表示样值,而对高频段使用较少的比特数来表示。 

3、子带编码中各个子带内的量化噪声相互独立,从而避免了输入电平较低的子带信号被其他子带的量化噪声所淹没

变换编码 

变换编码技术与子带编码技术的不同之处在于,变换编码对一段音频数据进行“线性”的变换,对所获得的变换域参数进行量化、传输,而不是把信号分解为几个子频段。 

变换编码对频域系数编码,时域取样变换到频域产生频谱系数,对频谱系数进行量化,来实现对音频数据的有效压缩。再变换编码中,时域窗口长度的选择需要考虑两个因素:一个是时间分辨率;另一个是频域分辨率。块的长度越长,频率的分辨率越高,但是损失了时间分辨率。为了解决时间分辨率低的问题,变换编码采用将时间上连续的数据块重叠50%来增加时间分辨率。 

自适应变换编码是对每个独立子带进行量化,但是子带内的系数都被量化到相同的位数。信号经过离散余弦便函变换到频率域,利用频谱系数计算每个临界频段的信号能量,以决定每个临界频段的掩蔽阈值,采用自适应量化和合成分析法进行编码,计算对信号所需要的比特数,如果位数超过了允许分配给这块数据的比特数,就取大一点的量化台阶,重新计算所需的比特数;如果在重建信号中外循环计算可能出现量化误差,而且如果误差超过了掩蔽模型所允许的范围,就适当减小这个子带的量化台阶。 

因为子带编码的时间分辨率很好,但是频率分辨率不足;而变换编码的频率分辨率很好,但是时间分辨率很差,因此实际的编码将两者联合使用!

 


你可能感兴趣的:(音频处理)