摘 要: 提出一种高效的编解码实现方案。在时频分析模块中,利用MDCT 的对称性和奇偶性,快速得到MDCT 变换输出值,节省运算时间和计算资源提高编码效率。在量化/熵编码模块中,采用非线性量化和Huffman编码来压缩数据,使量化的循环迭代次数减少,在保证量化误差最小化的前提下,提高编码速度。
关键词: 电子防震;时频分析;量化编码;MDCT
电子防震ESP(Electronic Shock Protection)系统在便携式或者车载伺服播放器等设备中应用非常广泛,防止这些设备由于遭受机械震动的影响而导致音频数据不能正常连续播放,电子防震时间是其中最重要的指标。电子防震系统的防震时间由DRAM容量和音频编码算法的压缩率决定,电子防震系统对音频编解码算法有3个方面的要求:(1)音质基本无损失;(2)压缩比越高,相同容量的DRAM支持的防震时间越长,或者相同防震时间下所需的DRAM更小,成本更低,一般要求达到4∶1以上的压缩率;(3)由于在峰值处理阶段,ESP系统需要并行完成2次编码运算和1次解码运算,如果采用软件实现,要求其编解码算法的运算复杂度较低。
传统的电子防震系统一般采用自适应差分脉冲编码调制(ADPCM)进行音频编解码。但是ADPCM编码器有2个显著的缺点:(1)ADPCM编解码算法采用逐点计算的结构,运算量大,只能使用专用集成电路(ASIC)实现,不适合软件实时实现,采用这种方案就需要在系统中添加专用ESP芯片,导致成本增加;(2)ADPCM编码器的压缩效率较低,高于4∶1的压缩率会导致音质明显恶化。
目前还有一种技术提出了采用MPEG1音频编解码算法作为ESP的编解码算法,能够在音质基本没有损失的条件下提高压缩比。但由于该方法采用心理声学模型并且使用混合型的滤波器组进行时频分析和逆时频分析,运算复杂度高,硬件成本开销大。
为了解决上述问题,本文提出了一种新的高效编解码方法,它具有计算复杂度低、编码速度快和适合软件实现的优点,能够有效地延长电子防震时间。在时频分析模块中,利用改进型离散余弦变换MDCT(Modified Discrete Cosine Transform)的对称性和奇偶性,快速得到MDCT变换输出值,节省运算时间和计算资源,提高编码效率。在量化/熵编码模块中,采用非线性量化和Huffman编码来压缩数据,使量化的循环迭代次数减少,在保证量化误差最小化的前提下,提高编码速度。
1 系统及编解码器架构
常用的ESP系统架构如图1所示,包含了ESP编码器,DRAM缓冲器和ESP解码器。其工作机制是,当开启ESP系统时,音频样点依次通过ESP编码器进行编码,编码后的码流存储在DRAM缓冲器中,DRAM缓冲区中的码流经ESP解码器解码输出,从而实现一定时间的电子防震效果。
2 编解码算法 2 048中选取。 本文所提出的算法能够在使CD播放器音质基本无损失的情况下,舍弃了心理声学模型,用较小的运算量,实现较高的压缩率从而达到较长的防震时间,提高动态随机存储器的使用效率,延长防震时间。同时算法采用基于块的运算结构,适合软件实现,运算复杂度低,有利于降低系统主频,从而降低系统功耗并提高系统的稳定性。该技术适合软件实现,能有效延长防震时间。
现行的ESP编码器一般都采用心理声学模型,并且使用混合型的滤波器组进行时频分析和逆时频分析,导致ESP编码器运算效率降低。本文提出的ESP编码器舍弃了心理声学模型,直接采用时频分析模块和量化/熵编码模块(或增加封装模块)架构,其结构框图如图2所示。音频样点输入时频分析模块后转换为频率系数,频率系数经过量化/熵编码模块压缩成比特流,比特流输出到DRAM缓冲器。
ESP编码器架构还可以进一步扩展,增加封装模块,其架构如图3所示:
与ESP编码器结构类似,ESP解码器的结构框图如图4所示,从DRAM缓冲器中读取1个比特块长度的比特流,然后将比特块长度的比特流送入熵解码/反量化模块的输入缓冲区,进行熵解码和反量化运算后得到重建的频率系数送入逆时频分析模块,进行逆改进型离散余弦变换IMDCT(Inverse Modified Discrete Cosine Transform)变换,重建时域信号并输出播放。
2.1 编码算法原理
ESP系统中编码步骤包括:
(1)音频样点通过时频分析转换为频率系数;
(2)频率系数经过量化/熵编码压缩成比特流。
2.1.1 时频分析
时频分析模块采用MDCT变换,该变换是基于时域混迭消除TDAC(Time-domain Aliasing Cancellation) 技术的改进型DCT,变换以帧为单位,相邻帧间有一半的样点重叠,能够很好地消除分帧引起的时间域混叠,降低边界效应,被广泛应用于数字音频编码系统的分析滤波器组中。因此,快速的MDCT实现算法是提高实时编码的关键技术之一。
本文提出的MDCT算法定义如下[1]:
2.1.2 量化/熵编码
量化编码模块采用循环结构,根据压缩率的要求,采用非线性量化和Huffman编码来压缩数据,在保证音质的条件下,至少能够达到5∶1的压缩率。具体实现步骤如下:
(1)时频分析模块输出的频率系数乘以定标因子(Scaling Factor);
(2)对定标后的频率系数进行非线性量化;
(3)将量化后的频率系数两两组合成频率系数对(每帧共N/4个频率系数对);
(4)选取Huffman码表,用该码表对频率系数对进行Huffman编码,生成比特流;
(5)判断Huffman编码产生的比特数是否超出指定压缩率的要求,如果超出就缩小定标因子,跳转到步骤(1),直至满足压缩率的要求退出迭代。
步骤(2)所述量化公式可以为:y=int[x3/4],式中的int[.]函数表示取整数部分。步骤(4)所述码表可以选取为1个固定的码表。
2.1.3 封装
本文提出的ESP编码器还可以包括封装模块。一方面由于音频信号本质上是非平稳的,在一段时间内(10 ms量级)可以看作是短时平稳信号,不同帧经量化编码输出的比特数有很大变化,通过将M帧音频信号量化编码后的比特流封装在1个比特块中,可以降低峰值比特流的影响;另一方面由于比特块的长度固定,ESP解码器很容易确定每个比特块的起始位置,无需费时地进行比特块同步搜索,减小了系统的运算开销。
该模块将量化/熵编码模块输出的M帧比特流依次封装到1个固定长度的比特块中,然后再输出到DRAM缓冲器。若M帧比特流的长度之和小于比特块的固定长度,比特块的剩余部分可以用零填充。考虑到存储空间、编解码延迟、比特率平滑要求,M可在2~16间选取。
2.2 解码器算法原理
ESP系统中解码步骤包括:
(1)将1个比特块长度的比特流进行熵解码/反量化,得到重建的频率系数。
(2)对频率系数进行逆时频IMDCT分析,得到重建后的时域信号并输出播放。
2.2.1 熵解码/反量化
同量化/熵编码过程相反,熵解码/反量化模块的具体实现步骤如下:
(1)使用与ESP编码器相同的码表对输入缓冲区的1个比特块的比特流进行Huffman解码,解码得到M×N/4个频率系数对,其中每个频率系数对包含2个频率系数,共M×N/2个频率系数,以及M个反定标因子ISF[m](m=1,…,M),其中每帧1个反定标因子。
(2)对解码得到的M×N/2个频率系数进行反量化处理,得到线性的频率系数。
(3)使用第(1)步解码得到的反定标因子ISF[m](m=1,…,M),对第(2)步得到的线性频率系数进行反定标(二者相乘),得到反定标后的频率系数。
(4)将M×N/2个反定标后的频率系数,依次分为M帧,每帧N/2个频率系数,输出至逆时频分析模块。
参考文献
[1] CHENG Mu Huo. Fast IMDCT and MDCT algorithms a matrix approach[J]. IEEE Transactions on Signal Processing, 2003,51(1).
[2] BYCOND G L. A new algorithm to compute the discrete cosine transform[J]. IEEE Transactions on Acoustics. Speech,and Signal Processing.1984,32(6):1243-1245.