当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]用DSP实现MPEG音频层III压缩的加速方法

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的利用率,抑制了编码的实时实现。因此,不规则的类似表查询指令,需要经过很好的组织才能够使程序结构清楚,简洁,高效。[!--empirenews.page--]3.1 Huffman编码的多重地址索引

 

  层III编码中的Huffman编码是一个穷举、查表的过程。在参考文献[1]表B.7中列出了用于层III编码的32个Huffman码表。它们的最大值域范围,码表适用的信号统计特性都不相同。在编码过程中,首先找到能够将所要编码区域样值的最大值,并依次查询各个Huffman码表,直到该码表能够对这一最大值进行编码为止,然后计算用该表进行编码所需的比特数。再尝试相同编码值域范围的另一些码表,找到最小比特数需求的码表进行最后的编码。

  由于标准中所提供的32个表中,并非所有的表都能用,而且有大量的码表只是linbits不同。因此如何存储这些码表,并能够很方便地进行查询、编码,是编码过程中很关键的问题之一。但提出的“多级索引”方法可以很好地的解决这一问题。过程如图2所示。对可能的表有不同的处理方式:

  

 

  图2 Huffman编码的多重地址索引

  正常表 如表15,即每一级索引都是对应于表15的各项信息。

  无效表 如表14,其最终的指向是码表零,即相当于无效表。

  雷同表 如表16和17实际上只是在第II级索引的linbits不同,其最后的Huffman数据是相同的。通过这样的多级码表地址索引可以很好的解决程序的模块化实现。

  3.2 层III编码迭代循环的加速

  在迭代循环编码部分,对于使用标准中所建议的初始量化常数进行量化和编码时,初始比特数要求要远远大于所允许的上限值。这时,如果只是将步长加一进行再次量化编码,将会使得系统效率大大地降低。

  经过实际的实验结果,一般初始可获得比特数大约为700 bits/Granule,而初始的量化编码结果一般在5 000 bits以上。如果再次量化步长加上20,可以迅速地逼近所要求的比特数。表1列出了一种我们使用的可能加速逼近方法。

  表1 一种可能的迭代循环加速方法

  

 

  在AD(Analog Device)公司的定点DSP芯片ADSP2181上实际的运算结果表明,这种加速方法能够将原算法的指令运算周期减少2/3左右。

  4 结束语

  MPEG音频层III压缩标准是一种高效、高保真的压缩编码算法,但由于其复杂度和运算量较高,很难用一般的DSP实时实现。在对该算法进行全面分析的基础上,提出了在用DSP实现时,降低复杂度、提高DSP运算效率的关键是优化循环迭代量化编码。提出“Huffman编码的多重地址索引”,对非规则性的大量数组寻址操作提供了简明清晰的线条,节省了寻址指令,提高了DSP的利用率。进一步还提出了“迭代循环的加速”方案,通过ADSP2181定点芯片的运算,表明该方案能减少2/3的指令周期。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭