一种改进的先进音频编码固定码率控制算法*
2011-03-21解文华肖进胜易本顺黄正旭
解文华肖进胜易本顺黄正旭
(武汉大学电子信息学院,湖北武汉430079)
先进音频编码(AAC)属于感知音频编码的一种,是MPEG-2音频的非向后兼容部分,也是MPEG-4音频部分的核心.AAC是一种极为全面的编码方式,多声道和高采样率的特点使得它非常适合DVD-音频,低码率下的高音质则使它也适合移动通信、网络电话、在线广播等领域.AAC编码码率模式的实现大致分为3种:固定码率模式(CBR)、平均码率模式(ABR)和可变码率模式(VBR).CBR可以确保编码后的音频文件具有固定的大小,但不保证编码后的音频文件具有固定的音质;VBR正好与CBR相反;ABR在CBR和VBR之间找到了一个平衡点.CBR的编码器被认为是商业应用中的默认模式,在某些特定的、具有固定信道容量的应用系统(如数字广播和综合业务数字网)中,CBR是一种强制模式.
好的固定码率控制算法在实现码率平稳的同时还能起到提高音质、降低编码计算复杂度的作用.ISO标准算法建议采用双层迭代量化循环和比特缓冲池技术来实现固定码率编码,但该算法不但计算量大,而且容易造成码率的异常波动和音质的较大起伏.目前,国内外对AAC编码器的优化研究主要集中在算法优化、结构改进、高效的硬件实现等方面,心理声学模型、滤波器组和量化编码模块因计算量大、复杂度高成为了优化研究的重点[1-7].关于量化编码模块的改进,文献[1]中提出了一种改进的基于比特估算数学模型的量化器迭代算法,有效地减少了量化器的迭代次数.文献[4]中提出利用前面帧的量化信息对当前帧的初始量化步长作线性预测,同时采用BFOS算法来控制量化的步长,从而将双层量化循环结构简化为单循环结构.上述算法明显降低了量化模块的计算复杂度,但没有考虑固定码率的实现,在数字信号处理器(DSP)等硬件平台上实现时,仍存在计算量较大的问题.
为此,文中提出了一种高效的AAC固定码率控制算法:在为当前帧分配比特时,充分考虑比特缓冲池的使用情况和编码复杂度,使比特缓冲池起到真正的缓冲作用,同时根据编码所需比特数和感知熵的关系,在量化循环之前进行掩蔽阈值的预调整.文中还对ISO标准算法的比特缓冲池操作和量化编码流程进行了改进,并通过在音质评估序列库(SAQM)测试序列上的实验验证了所提算法的有效性.
1 AAC协议中的CBR模型框架及分析
固定码率编码需要兼顾码率和音质的要求,即要在码率恒定的情况下尽量实现音质的最佳化.ISO标准算法采用比特缓冲池技术和双层迭代量化循环来实现固定码率编码.在量化循环之前,AAC编码器要进行掩蔽阈值和最大可用比特数等的计算.其中,掩蔽阈值由心理声学模型根据人耳听觉的掩蔽效应计算得出[8-9],当量化噪声小于掩蔽阈值时便不能被人耳感知;为了计算当前帧的最大可用比特数,AAC编码器先利用感知熵计算编码所需比特数:
式中:ni为第i个临界频带的掩蔽阈值,即允许的最大量化失真;ei和wi分别为第i个临界频带的能量和宽度;N为临界频带的个数;P为感知熵,用于表征编码复杂度,决定编码所需比特数;Bc为编码所需比特数;AAC编码器根据输入音频信号的特征将每帧信号再划分为1个长块或8个短块进行处理,在长块下p=0.3、q=6,在短块下p=0.6、q=24.
则当前帧的最大可用比特数Bmax为
式中,B为帧目标比特数(文中采用当前码率下的平均比特数),T和L分别为比特缓冲池的大小和比特缓冲池中的剩余比特数,D=Bc-B.
然后将掩蔽阈值和可用比特数作为双层迭代量化循环的两个约束条件,双层迭代循环由内外两层循环相互制约来完成比特数的分配,内外层循环分别控制码率和量化误差[8-9].
这种双层循环的迭代结构在使用时收敛速度较慢,往往无法满足实时应用的要求,在AAC LC规格下,量化循环的计算复杂度占整个编码计算复杂度的64%以上[10].同时,当可用比特数小于编码所需比特数时,量化循环无法保证所有比例因子带的量化误差均小于掩蔽阈值.由于音质的要求和码率的限制,内层循环被反复调用,通过调整全局量化步长来降低编码所需比特数,全局量化步长的调整所造成的量化误差对各个比例因子带的音质的损伤不尽相同,而此时量化误差的相对不均匀分布往往无法在外层循环中得到平衡,因此也就不能在有限的可用比特下得到最佳的音质[11].
另外,在固定码率编码模式的实现过程中,ISO标准算法采用了比特缓冲池技术,但对比特缓冲池的操作并未达到理想效果,特别是在压缩比较高的情况下,由于标准算法总是最大程度地使用比特缓冲池,以致比特缓冲池几乎失去了缓冲作用,这不但会造成音质的较大波动,而且会引起码率的异常起伏.因此,有必要对ISO标准算法中的固定码率控制算法进行改进.
2 改进的固定码率控制算法
在固定码率编码模式下,特别是在高压缩比下(针对AAC LC编码器而言,尤指当压缩比大于20时),可用比特数往往小于编码所需比特数,ISO标准协议所建议的双层量化循环更容易暴露出收敛速度慢等问题.如果根据比特缓冲池的使用情况和感知熵来重新确定当前帧的目标比特数,同时根据编码所需比特数和感知熵的关系在量化循环之前对掩蔽阈值进行调整,可以减少量化循环的迭代次数,降低编码计算复杂度,在不降低音质的情况下获得更稳定的码率.为了保证码率平稳,同时避免音质出现较大波动,在重新确定当前帧的目标比特数时要考虑编码复杂度,同时要使比特缓冲池能真正起到缓冲作用,因此可根据B、L和P来重新确定当前帧的目标比特数B*:
式中,Pmax和Pmin分别为编码过程中的最大感知熵和最小感知熵的统计值,α、β和γ为经验值.为了实现码率的平稳性,若当前帧的编码复杂度比较小,比特缓冲池中的剩余比特也不足,则瞬时码率不应过小;若当前帧的编码复杂度比较大,比特缓冲池中的剩余比特很充裕,则瞬时码率不应过大.因此应对α、β和γ的取值做一定的限制.
得到B*后应使编码实际所用比特数与B*相接近以实现码率控制.编码所需比特数与当前帧的编码复杂度P有关,对应关系如式(1)所示;反之,根据B*可以得到一个目标感知熵P*,当通过调整掩蔽阈值使该帧的编码复杂度与P*相当时,可使编码实际所用的比特数接近B*.于是,由式(2)可得关于P*的一元二次方程:
解方程得到
为了使估算更为精确,要对由式(6)计算出来的P*进行进一步修正:当编码实际所用比特数大于B*且其差值超过一个门限时,要减小P*;当编码实际所用比特数小于B*且其差值超过一个门限时,要增大P*.
当P大于P*时,说明B*已无法保证透明编码,标准算法的双层迭代量化循环在迭代结束时,往往出现某些比例因子带的量化误差大于其掩蔽阈值的情况.为此,文中算法按一定规则预先提高掩蔽阈值以降低编码复杂度,使最终的编码所需比特数接近于B*,并保证音质不下降.掩蔽阈值的提高是在响度域中进行的,首先将掩蔽阈值转化到响度域,然后对每个频带的掩蔽阈值加上一个代表响度的常量r以提高全频域的掩蔽阈值,最后将其转换回能量域:
式中,nr,i为调整后的掩蔽阈值.
中,根据中值定理存在t(t代表平均总掩蔽门限ni的估算值),有
若P>P*,则说明当前帧编码复杂度较高,需要提高掩蔽阈值以降低编码复杂度,使熵接近P*,根据式(7)有
利用式(9)得到r的一个解r1:
将r1代入式(7)和(2)即可得到调整后的掩蔽阈值和调整后的感知熵P1.
通常情况下P1>P*,为了进一步降低编码复杂度和避免量化后产生频谱空洞,需进行第二次迭代计算,而此次迭代的目的是提高特定临界频带的掩蔽阈值,其中特定频带是指满足的频带,是根据频域掩蔽效应由e与扩散函数求卷积后i得到的结果,这些频带组成集合s.由s中的频带求as、bs、P1,s和P*s,则r2为
由r2可以得到一个新的掩蔽阈值和感知熵P2.假如P2和P*相差超过5%,则根据式(11)重复进行一次掩蔽阈值的调整.掩蔽阈值调整完成后,就可以采用新的掩蔽阈值来作为量化循环的约束条件,通过内外两层循环的相互制约来完成码率控制和量化误差的控制.在进行量化循环之前,由于根据当前帧预分配的比特数对掩蔽阈值进行了合理的调整,因而可以减少量化循环的迭代次数,降低编码计算复杂度,在低码率下效果尤为显著.改进的固定码率控制算法流程如图1所示.
图1 固定码率控制算法的流程图Fig.1 Flowchart of constant bitrate control algorithm
3 实验及结果分析
为验证所提算法的有效性,文中使用SAQM中的测试序列(44.1 kHz,16 b采样,双声道立体声)进行了一系列实验,其中实验处理器平台为TI公司的DSP处理器C64XX系列,在开源AAC编码器FAAC基础上进行了定点化及相关模块的修改.
将SAQM中的测试序列分别用标准算法和文中算法以64 kb/s的码率进行编码,对编码输出码率和编码过程中比特缓冲池的使用情况进行了对比,3种音频序列的输出结果如图2所示.
由图2可知,文中算法的输出码率稳定在目标码率附近的±1%范围内,而比特缓冲池中的剩余比特数始终维持在一个较高的水平并随编码复杂度的变化而变化;标准算法的输出码率在编码开始和编码过程中会出现异常波动,由于标准算法未对比特缓冲池的使用进行合理限制,因此其比特缓冲池中的剩余比特数几乎始终维持在一个很低的水平,失去了缓冲作用.
对SAQM中的6种测试序列以64 kb/s的码率进行编码,文中算法和标准算法的量化循环平均迭代次数和编码平均计算量的对比结果如表1所示.其中迭代次数是指每帧的迭代次数,编码计算量是指编码过程中平均每秒所需的CPU兆周期数.由表1可以看出,由于文中算法根据当前可用比特数来对掩蔽阈值进行合理的调整,因而可以提高量化迭代循环的收敛速度,进而大大降低了量化循环的平均迭代次数,使编码平均计算量也得到了很大程度的降低.
图2 3种音频序列的测试结果Fig.2 Test results of three audio sequences
表1 2种算法的迭代次数与编码计算量比较Table 1 Comparison of iteration times and encoding computational complexity between two algorithms
文中采用音频质量感知评价系统(PEAQ)[12]对由标准算法和文中算法在64 kb/s目标码率下得到的编码后的音频序列分别进行打分,结果如表2所示.该系统的输出结果表征了编码后的音频文件与原始音频文件的客观差别大小(ODG),客观差别得分越接近0表示编码后的音频与原始音频序列越接近.由表2可知,对于6个不同的音频序列,文中算法的编码质量均高于标准算法.这是由于在目标码率下,可用比特数往往小于编码所需比特数,在标准算法中的量化循环结束后,各比例因子带的量化误差不再满足心理声学模型的要求,且容易造成量化误差的相对不均匀分布,而文中算法均匀地提高了全频域的掩蔽阈值,使各比例因子带的量化噪声与由心理声学模型计算得到的掩蔽阈值曲线保持相同的趋势,从而在降低计算复杂度的同时保证了音质;同时文中算法对比特缓冲池的合理使用,使得文中算法的编码音质最终优于标准算法的编码音质.
表2 音频质量客观评价系统的评分结果比较Teble 2 Comparison of score results obtained by PEAQ
4 结语
针对ISO标准算法在实现AAC固定码率时存在的码率不稳定和计算量大的问题,文中提出了一种高效的固定码率控制算法.该算法能够有效地利用比特缓冲池,使比特缓冲池中的剩余比特数维持在一个较高的水平,真正起到了缓冲的作用,因而不会造成码率和音质的异常波动.当可用比特数小于编码所需比特数时,标准算法的双层迭代量化循环不能保证所有比例因子带的量化误差均小于各自的掩蔽阈值,为此文中算法对掩蔽阈值进行了预调整,在大大降低编码计算复杂度的同时不会造成编码音质的下降.实验结果表明:文中所提算法对比特缓冲池的利用较标准算法更为有效,编码输出码率基本维持在目标码率附近的±1%范围内,所以更适用于数字广播等具有固定信道容量的系统;文中算法能够在不降低音质的情况下显著降低双层量化循环的迭代次数,大大降低编码计算复杂度,从而降低AAC编码器对硬件处理器平台性能的要求.
[1]舒若,吴乐南.基于量化步长线性预测和BFOS算法的MPEG-4 AAC量化[J].声学技术,2009,28(6):759-760.Shu Ruo,Wu Le-nan.MPEG4-AAC quantization based on linear prediction of quantization step size and BFOS algorithm[J].Technical Acoustics,2009,28(6):759-760.
[2]Lei S F,Yao SN.A memory-free modified discrete consine transtorm architecture for MPEG-2/4 AAC[J].IET Circuits,Devices&Systems,2010,4(1):14-23.
[3]Liu CM,Hsu Han-Wen,Lee Wen-Chieh.Compression artifacts in perceptual audio coding[J].IEEE Transactions on Audio,Speech,and Language Processing,2008,16(4):681-695.
[4]张雪,杜伟韬,侯亚辉,等.一种AAC音频编码量化器的改进算法[J].电声技术,2010,34(6):61-62.Zhang Xue,Du Wei-tao,Hou Ya-hui,et al.Improved quantization algorithm of AAC audio encoder[J].Audio Engineering,2010,34(6):61-62.
[5]Wu S,Qiu X J.A bit allocation method based rate-distortion control algorithm for MPEG-4 advanced audio coding[C]∥Proceedings of International Conference on Audio,Language and Image Processing.Shanghai:IEEE,2008:237-241.
[6]王鹏军,徐淑正,张鹏,等.MPEG-4 AAC中信息隐藏的研究[J].东南大学学报:自然科学版,2007,37(增刊(I)):149-153.Wang Peng-jun,Xu Shu-zheng,Zhang Peng,et al.Practical data-hiding in MPEG-4 AAC audio[J].Journal of Southeast University:Natural Science Edition,2007,37(Suppl(I)):149-153.
[7]周建,刘鹏,梅优良,等.基于微处理器核的AAC解码软硬件协同优化[J].浙江大学学报:工学版,2007,41(8):1271-1276.Zhou Jian,Liu Peng,Mei You-liang,et al.Hardware/software co-optimization of AAC decoder based on embedded microprocessor core[J].Journal of Zhejiang University:Engineering Science,2007,41(8):1271-1276.
[8]ISO/IEC 13818-7,Information technology—generic coding of moving pictures and associated audio information—Part7:advanced audio coding(AAC)[S].
[9]ISO/IEC 14496-3,Information technology—generic coding of moving pictures and associated audio information—Part3:audio,subpart 4,general audio coding[S].
[10]Antonio P,Enrique A,Begona R,et al.Realtime implementations of MPEG-2 and MPEG-4 natural audio coders[C]∥Proceedings of the 110th AESConvention.Amsterdam:Audio Engineering Society,2001:5302-5303.
[11]Szwabe Andrzej,Jedrzejek Czeslaw.Perceptually transparent audio compression based on a variable bit rate AAC coder[C]∥Proceedings of the 4th EURASIP Conference Focused on Video/Image Processing and Multimedia Communications.Zagreb:IEEE,2003:685-690.
[12]Kabal P.An examination and interpretation of ITU-RBS.1387:perceptual evaluation of audio quality[R].Montreal:Department of Electrical&Computer Engineering,McGill University,2002.