G.729语音编码算法_第1页
G.729语音编码算法_第2页
G.729语音编码算法_第3页
G.729语音编码算法_第4页
G.729语音编码算法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、G.729语音编码算法双击自动滚屏发布者:admin发布时间:2009-1-59:43:00阅读:841次【字体:大中小】一、G.729编码器介绍G.729是国际电信联盟(ITU,InternationalTelecommunicationUnion)于1996年推出的采用共轭结构-代数码激励线性预测(CS-ACELP,Conjugate-StructureAlgebraic-Code-ExcitedLinear-Predication)技术的具有8kbit/s码率的语音编码算法建议,该算法是以语音编码方案中的码激励线性预测(CELP,CodeExcitedLinearPredication)

2、技术为基础提出的,其原理如图1所示。G.729是一种单声道语音信号的压缩编码算法,模拟信号经过话带滤波器后,按8KHz的频率采样并转换成16bit的线性PCM信号(即128kbit/s的码流),这就是图中所示的G.729编码器的输入语音信号。G.729编码器以10ms的输入帧(80个采样点)为单位进行编码。G.729编码器的输出为8kbit/s的码流,因此其压缩比高达16:1。而经G.729解码器还原后的声音质量却达到了相当高的水准,其主观平均得分(MOS,MeanOpinionScore)在4分以上(MOS最高得分为5分),属于良好级别,人的耳朵几乎察觉不到声音有失真的情况,音质与码率为64

3、kbit/s的G.711编码标准相近,而占用的带宽仅为G.711的1/8。另外G.729编码算法的延时较小,在15ms左右。虽然G.729具有较低的码率、较高的还原音质和较小的延时等优点,但是由于其存在算法复杂度大和数据存储量大的固有缺陷,在早期并没有得到广泛的实际应用。后来随着超大规模集成电路VSLI工艺的进步,极大地推动数字信号处理器(DSP)技术的发展,各大厂商纷纷推出了各具特色的高性能DSP,也大大降低了实现G.729语音编码算法的成本。目前,G.729已经广泛应用于诸如IP电话、会议电视、数字音视频监控等领域。GcLPC伯息慝書分折*LPC薔息G了29編码鴉原理JLPC倍恳陵这比為渝

4、發数搞咼固定側本悝索ILP分析岸化内抽協临fp化加戒注波器E*回宦*弓本I:*自适应码本肉处汕二、TrimediaTM1300处理器TM1300处理器是Philips公司推出的一款32位性能优良的多媒体处理芯片,特别针对数字视频和音频应用进行了优化,集成了视频输入/输出接口、音频输入/输出接口、IIC接口、PCI接口、SDRAM控制器等外围设备接口,极大地简化了外围电路的设计,提高了系统的稳定性、可靠性,降低了系统的总体成本。因此TM1300处理器在音视频处理卡、多媒体嵌入式设备中得到了广泛的应用。TM1300处理器超强的的多媒体处理性能OpHTitiulL1OpHritiuiL2OpHrit

5、iufL3OpEI:4pHritiiiiJ得益于其核心CPU、多媒体操作指令集和存储器体系结构的设计。TM1300的核心是32位的超长指令字结构(VLIW,Very-LongInstructionWord)的处理器,内部有11种共27个执行单元,在每一个时钟周期内最多可以同时安排5个执行单元进行5个操作,如图2所示。TM1300有一整套专门针对多媒体运算的DSP操作指令,每一个操作可以执行多个算术运算,比如操作UIFIR8UU(a,b)包括4个乘法运算和1个加法运算,这使TM1300具有强大的多媒体数据处理能力。而这些DSP操作指令都可以在C程序中直接调用,大大方便了编程。TM1300处理器内

6、部含有128个通用寄存器,这些寄存器不是分段的,所有操作都能使用这些寄存器。TM1300使用32位线性寻址,寻址能力达到4GB,同时为了解决高速VLIWCPU和低速外存SDRAM之间的数据交换瓶颈,TM1300内部集成了16KB的高速数据缓存和32KB的高速指令缓存(CACHE),以确保VLIWCPU的全速运行。TM1300的二进制运行代码以压缩的格式存放在SDRAM和指令CACHE中,压缩的代码一方面可以提高指令CACHE的命中率,另一方面可以减少指令CACHE与SDRAM之间的数据交换。指令CACHE中有一个专门的指令解压机构,它负责解压缩指令并以224位的数据位宽向VLIWCPU提供指令

7、。而其数据CACHE是双端口的,其数据位宽达64位,并且VLIWCPU与缓存之间是以CPU的运行频率交换数据的。TM1300处理器的音频输入单元(AI)外接A/D转换器,支持1个或2个声道的音频输入采样,每个采样点可以设为8位或16位,可以工作在主模式或从模式,支持标准立体声IIS格式和左对齐格式,采样的数据通过双DMA通道直接存放在SDRAM中,通过中断方式通知CPU,减轻了CPU的负担。三、G.729在TM1300上的优化、实现国际电信联盟ITU在推出G.729编解码器算法的建议的同时,给出了G.729算法的一种软件参考实现,也给出了一组测试向量,用以验证软件的正确性。该软件采用移植性较好

8、的ANSIC语言编写的,因此可以在许多硬件平台上编译、运行。但是由于软件采用的是16位定点运算,而且没有针对任何硬件平台做任何优化,也没有考虑并行运算,所以要充分发挥32位的TM1300CPU的强劲性能,降低实现成本,必须经过大量的优化工作。代码优化过程是一个不断调整改造程序、利用测试向量验证正确性和查看系统资源消耗(主要指CPU占用率和所需内存)的过程,我们主要做了下列优化工作。1、参考软件采用的是16位定点运算,而TM1300是32位的处理器,因此我们把2个16位的音频采样数据合成一个32位的数据,把绝大部分程序改造成32位定点运算的程序。2、参考软件中包含了一组用函数实现的基本操作,包括

9、16位加法、减法、乘法、取饱和、左移、右移等函数,从程序运行的角度看,这些基本函数效率十分低,而且不利于提高程序的并行度。我们利用TM1300的DSP操作指令把大部分这种函数改成单操作指令。如原来的16位加法函数:Word16add(Word16var1,Word16var2)Word16var_out;Word32L_somme;L_somme=(Word32)var1+var2;var_out=sature(L_somme);return(var_out);其中sature()又是取饱和函数,把32位带符号整数转换成16位带符号整数。利用TM1300的DSP操作指令,我们把它改成下面这样一

10、个宏定义:#defineadd(var1,var2)(Word16)DSPIDUALADD(var1),(var2)3、充分利用TM1300的128个通用寄存器,函数的临时变量尽量不要使用数组,而是直接用单个整数,因为TM1300编译器把数组编译成内存方式的变量,而单个整数的临时变量则用寄存器来保存,这样不但提高了运行速度,也有利于提高数据CACHE的命中率。4、通过调整程序的流程来尽量提高程序的并行度,特别是耗时的函数,如改变循环的次数、步长等。TM1300的软件开发工具SDE中包含有测试函数并行度的工具,可以查看单个函数的并行度。我们知道TM1300的最高并行度为5,即1个时钟周期执行5个

11、操作,经过我们的优化,G.729编码器的几个重点函数的并行度达到了4.2以上。5、在C语言程序中,直接调用TM1300的汇编指令,特别是针对多媒体运算的DSP操作,尽量选用能并行执行的操作。6、充分使用TM1300的2个高速缓存:指令CACHE和数据CACHE,提高CACHE的命中率。对于程序,在不影响并行度的前提下,使程序尽量小,避免程序的大范围跳转,这样可以提高指令CACHE的效率;M1300的数据CACHE是以64字节为单位的,即每次从SDRAM读入数据或把数据调出数据CACHE,至少是64个字节,因此在许多地方,我们对数据的存放位置进行了重新调整,使读入CACHE的数据能被CPU充分利用。通过上述优化措施,我们花比较低的代价在TM1300DSP上实现了G.729编码器算法。在DSP主频为175MHZ、SDRAM频率为140MHZ的TM1300硬件平台上,G.729编码器完成实时语音编码

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论