1 概述
数字音频压缩技术给人们提供了一种更为有效的音频存储、传输方法。音频压缩的技术有很多种,它们的复杂度、音频压缩质量、以及压缩比都有很大的差别。如:μ-law音频压缩算法,其特点是简单,但压缩比很低,但音质一般。根据CCITT G.711建议,采用自然对数的量化过程,在输入幅度比较小的时候能够提供比较大精度的量化,而对于出现概率比较小的大幅度信号,量化噪声相对而言则较大。这种量化方式使得8 bit的数字量化信号在量化噪声效果上等同于14 bit的线性量化。而ADPCM压缩编码则充分利用了相邻的抽样值幅度变化比较小的特点,编码输出结果是当前抽样值与预测值的差值。虽然ADPCM编码的保真度较高,但其压缩比却比较小,只能够达到4/1的压缩比。改进的ADPCM编码方法有IMA (Interactive Multimedia Association)提出的改进算法,CCITT的G.721,G.723建议等[1]。
MPEG(Motion PICture Expert Group)音频压缩标准提供了一种高保真度,高压缩比的压缩算法。在ISO11172-3标准中,描述了具有不同复杂度和性能的子带音频编码方案,以适应各种高音质数字音频的应用。根据编码计算复杂度及编码效率的不同,分为层I,层II和层III三种标准。
MPEG音频标准最初来源于被分为四种类型的算法草案,它们是音频频域感觉熵编码ASPEC(Audio SpeCTRal Perceptual Entropy Coding),掩蔽模式通用子带集成编码与多路复用MUSICAM(Masking-pattern Universal Sub-band Integrated Coding and Multiplexing),子带ADPCM SB/ADPCM(Sub-Band Adaptive Difference PCM)。经过一系列的客观和主观音质测试,考虑到不同比特率下的音质,对传输比特错误的敏感性,编码/解码复杂度,以及编解码延时等因素,在大约100 kbit/s低码率下,ASPEC和MUSICAM表现出最好的音质效果。在低码率(64 kbit/s)时,ASPEC表现出更为出色的音质,而MUSICAM则在编码解码的复杂度和延时上略胜一筹。根据ASPEC的若干算法,对 MUSICAM进行改进,加大了计算复杂度,但获得了更好的压缩比及音质,这就是ISO11172-3音频层III的标准。
层I是最简单的一种算法。如Philips公司的数字盒式录音机DCC(DIGItal ComPACt Cassette)便是利用层I的压缩算法,其应用的比特率为192 kbit/s每通道。
层II具有中等的编码复杂度,适用比特率大约为128 kbit/s每通道。广泛应用于数字音频广播DAB(Digital Audio BroADCasting)的音频编码及视频CD中。
层III是最复杂的编码算法,但是在相同的比特率下,它所提供的音质也是最好的。典型的比特率为64 kbit/s,最适合于ISDN上的音频传输。
1998年4月22日,APT(Audio Processing Technique)公司利用Apt-X100系统,通过ISDN线路,成功地转播了北京—东京—上海的“国际地球日”大型广播音乐会。但是,这次转播占用了3条(即6个B)的ISDN线路,以保证22 kHz频响的立体声传送,这是由于Apt-X100系统采用的是SB/ADPCM音频压缩方法[2]。然而,如果使用MPEG层III音频压缩方法,只需要一条ISDN线路,就可以实现22 kHz频响的立体声传送。由于MPEG层III音频压缩编码复杂度太高,运算量太大,难以用一般的DSP(Digital Signal Processor)单片实现,所以在目前的音响设备中很少使用这一算法。为了能用较低的成本实现MPEG层III这一高效音频压缩算法,我们对这一算法进行了全面分析,提出了适用于DSP实现的编码加速方案。
2 MPEG音频层III压缩编码流程及特点
MPEG音频层III压缩编码流程如图1所示,相对于层Ⅰ和层Ⅱ而言,其特点在于:
图1 MPEG音频层Ⅲ编码流程图(单声道模型)
(1)利用独立于信号频率及声压级的耳蜗扩散函数(Cochlea spreading function)—Modified Rounded 类扩散函数,计算人耳听觉的掩蔽门限。
(2)增加了MDCT模块,以提高频率分辨率。
(3)通过控制环,对非均匀量化率进行迭代分配,以保持相对恒定的信噪比。并且,采用不定长熵编码—HufFMan编码,对量化后的各子带信号可以获得更好的数据压缩比。
将层III编码算法流程分成:(1)时频映射,(2)心理声学模型,(3)量化编码等三大功能块。时频映射中,是多相混合滤波器组(Polyphase/MDCT Hybrid FiLTEr Bank)的计算,这是较规范的计算,其运算量是可计算的。而且有各种快速算法,以降低运算复杂度。心理声学模型的计算,主要运算量集中在1 024点和256点的FFT。不过,这是比较标准的计算过程,无论用哪种FFT都可以精确估计其运算复杂度。而量化编码是通过迭代循环来完成,其循环控制变量是不确定的,再加上Huffman码表的查找表过程,使其运算量和复杂度难以预测和估计。因此,我们认为:量化编码部分的规范化是优化MPEG音频层 III编码的突破点。
层III编码器迭代循环与量化编码部分完成的功能是:将子带滤波和MDCT变换后的样值进行量化并根据心理声学模型的计算结果进行量化噪声的控制,使得在一定比特率要求的情况下完成频域信号的Huffman编码。层III量化编码部分的迭代循环分为内循环和外循环,参考文献[1]中FigureC. 9.a,C.9.b,C.9.c给出了量化编码的迭代循环流图。
3 用DSP实现音频层III压缩的主要问题及解决方案
DSP编程并不提供像C语言一样的灵活指针、数组寻址操作。在用DSP实现音频层III压缩中的迭代循环量化编码时,由于涉及到非规则性的大量数组寻址操作,而消耗大量指令,降低了DSP的利用率,抑制了编码的实时实现。因此,不规则的类似表查询指令,需要经过很好的组织才能够使程序结构清楚,简洁,高效。