基于DSP的G.729语音编解码算法的优化和实现

发布者:SparklingMelody最新更新时间:2009-02-09 来源: 电子技术应用关键字:G.729算法  算法优化  语音编码  TMS320C5416 手机看文章 扫描二维码
随时随地手机看文章

      随着多媒体信息技术和网络技术的飞速发展,信息量快速增长,使信道资源显得越来越宝贵。为了在有限的信道资源下传输尽可能多的信息,语音压缩成为必要手段。ITU组织(国际电信联盟)在l996年制定了G.729协议,即共轭结构码激励线性预测编码算法(CS-ACELP)。其编码速率为8kb/s,可以满足网络通信的要求,具有良好的语音质量,对不同的应用环境有较强的适应性,是一种性能较好的语音压缩国际标准,被广泛应用在个人移动通信、卫星通信等各个领域。

  1 G.729编解码算法的原理

  语音信号的波形编码力图使重建语音波形保持原始语音信号的波形形状。这类编码器通常将语音信号作为一般的波形信号来处理,它具有适应能力强、语音质量好等优点,但所需用的编码速率高。参数编码通过对语音信号特征参数的提取及编码来降低编码速率,力图使重建语音信号尽可能保持原语音的语意,而重建信号的波形同原语音信号的波形可能会有相当大的差别。二十世纪70年代中期,特别是80年代以来,语音编码技术有了突破性的进展,提出了一些非常有效的处理方法,如混合编码。这种算法克服了原有波形编码器与声码器的弱点,而结合了它们各自的长处,在4kb/s~16kb/s速率上能够得到高质量合成语音,而在本质上也具有波形编码的优点。G.729所描述的CS-ACELP(Conjugate-Structure Al2gebraic-Coder-Excited Linear Prediction)声码器采用的CELP声码器就属于这类编码器。

  CELP编码基于合成分析(A-B-S)的搜索过程、感知加权矢量量化(VQ)和线性预测(LP)技术,采用这种编码方案使传输的比特率大大降低。CS-ACELP的思想是由共轭结构码线性预测(CS-CELP)和代数码本激励线性预测(ACELP)的思想整合而来的。在编码端,主要进行有线谱对(LSP)参数的量化、基音分析、固定码本搜索和增益量化四个步骤。编码器首先对输入信号(8kHz采样16bit PCM信号)进行预处理,然后对每帧语音信号进行线性预测,得到LPC系数,并把LPC参数转换成LSP参数,最后对LSP参数进行矢量量化。在接下来的基音分析中,每一帧先搜索到最佳基音时延T的一个候选时延,然后依据候选时延搜索每一帧的最佳基音时延。最后还要对自适应码本增益和固定码本增益进行量化。在解码端,首先由接收到的比特流得到各种参数标志进行解码,得到10ms语音帧编码参数。解码器在每一子帧内,对LSP系数进行内插,并把它们变换成LP滤波器系数后,依次进行激励生成、语音合成和后处理工作。

     2 算法优化和DSP应用改进

  G.729语音编解码系统要求实时性高,需在有限的时间内对外部输入的信号完成指定处理,即信号处理的速度必须大于等于输入信号更新的速度,因此需要进行算法的优化改进。对C语言编写的代码进行优化,同时使用内联指令,又在C程序中嵌入汇编语句,尽量提高信号处理的速度。

  2.1 算法的优化改进

  首先在算法上进行改进,如图1所示,采用一种结合WD-LSP(Weighted Delta-LSP)[1]函数并结合次最优部分码本快速搜索的CS-ACELP语音编码算法,同时采用基于声学心理模型的知觉加权滤波器,使语音编码在不降低语音质量的情况下降低计算复杂度。WD-LSP函数主要用于区分UV-V(unvoice-voice)/S-V(silence-voice)的边界。其原理是:如果函数值大于给定的极限值η,则开环基音延迟Top重新估计,否则,开环基音延迟Top用前一帧自适应码本延迟来更新。在第i帧Fi的WD-LSP函数和用于确定开环基音延迟Top的算法如下:

  基于TMS320C5416的G.729语音编解码算法的优化和实现

  其中LSPi(k)是在第i帧中的k阶LSP系数;wk是加权系数,它用于增强UV-V/S-V边界的WD-LSP函数。为了获取wk,一个包含23 014个UV-V边界和9 519个S-V边界的大型数据库用于估计delta-LSP在UV-V/S-V边界的平方根值(RMS)。因此,WD-LSP用于检测VU-V/S-V边界非常敏感。η是一个设为0.01的极限值。整个计算可节省21%的计算量,经过这种算法前后语音信号如图2所示。

  基于TMS320C5416的G.729语音编解码算法的优化和实现

基于TMS320C5416的G.729语音编解码算法的优化和实现

  2.2 进行C语言优化

  基于G.729标准的声码器最终在定点TMS320C5416上实时实现。在定点TMS320C5416内,浮点数是通过将小数点固定在特定位置来表示的,这是定点TMS320C5416的局限之一。为了区分小数的不同值域,使用了Q-格式。不同的Q-格式在于小数点的位置不同,因此整数域也不同。当两个数相乘时,会产生一个特殊的符号位。如:两个Q4数相乘, 需要附加一个左移的操作以去除这个多余的符号位,乘积应该是一个Q9格式的。如果DSP中的FRST位被置位,这个去除多余符号位的移位操作能够自动完成。对于16位数的乘法运算,应该得到32 位的乘积。但是,由于只需要16位的积,该32位乘积中只有高16位被存储下来,积的低16位被丢弃。为了达到高准确性,在连续的乘法运算过程中(如卷积),应该一直保持32位的计算结果,只对最终的计算结果进行丢弃低16位的截短操作。为了达到更高的准确性,在这一操作过程中会使用到一种双重精度格式, 这种格式仅仅出现在使用单精度不够,而又不必要使用32位精度的时候。两个32位数相乘,只需要32位的乘积,而不是64位,不过注意到TMS320C5416是16位的,所以在双重精度格式中,32位整数分为高位字和低位字。高、低位字中都含有符号位,以进行快乘运算。其格式如下:

  L_32=hi_word<<16+lo_word<<1

   Hi_word=L_32>>16

   Lo_word=L_32-hi_word>>1

   当累加器中的数值超过一定范围时将会产生溢出。在G.729算法标准中, 累加器的值被限定在80000000~7FFFFFFF之内——即最小负数和最大正数。不过在TMS320C5416中,如果将PMST寄存器中的OVM置位,则溢出会得到自动处理。

[page]

      2.3 内联指令的应用和C程序中嵌入汇编语句

  由于语音编码的特点,编解码函数都是由一些基本的加减乘除简单函数组织而成,这些函数定义在BASIC OP.C和OPER_32B.C两个文件中,如果能够对这些简单函数进行内联指令(intrinsic)的优化,就能达到事半功倍的效果。内联指令是汇编指令的直接映射,具有很高的效率。例如:

   #define muh_ r(varl,var2)     _mpylir(varl,var2)

   #define L_ add(L_var1,L_var2)    _sadd(L_var1,L_var2)

   #define L_ muh(var1,var2)      _smpy(var1,var2)

   在C程序中嵌入汇编语句的方法比较简单,只需在汇编语句的左右加上一个引号,然后用小括弧将汇编语句括住,并在括弧前加上ASM标识符,例如ASM(“汇编语句”)。采用这种方法一方面可以在C程序中实现用C语言无法实现的一些硬件控制功能,如修改中断控制寄存器、中断使能或屏蔽、读取状态寄存器和中断标志寄存器等;另一方面,也可以用这种方法在C程序中的关键部分用汇编语句代替C语言以优化程序。而采用这种方法的缺点是比较容易破坏C环境,因为C编译器在编译嵌入了汇编语句的C程序时并不检查或分析所嵌入的汇编语句。采用这种方法需要注意以下几点:

  (1)不要破坏C环境,因为C编译器并不检查和分析嵌入的汇编语句。

   (2)汇编语句不要改变C程序中变量的值,不要在汇编语句中加入汇编器而改变汇编环境。

   在简化算法的基础上,使用CCS提供的C优化器进行C语言优化,同时还使用内联函数和汇编优化。

  3 G.729在TMS320C5416上的实现

  3.1 TMS320C5416的体系结构和应用

   TMS320C5416(以下简称C5416)是TI公司最近推出的一款高性价比的通用l6位定点DSP芯片,它的内核CPU基本组成与TMS320C54X系列一样。C5416的单指令周期为6.25 RS,每秒执行的指令数为160×106,指令系统丰富并具有很多多功能指令,使用了6级指令流水线结构,这些都很适合实现低时延的G.729声码器。采用一个40bit ALU、128K×16bit片内RAM(包括64KB的片内DARAM和64KB的片内SARAM)、3个独立的l6bit数据内存总线、1个程序内存总线、3个MCBSP、6信道DMA控制器、1个8/l6位并行增强主机端口接口及2个l6bit计时器。

在TMS320C5416中通过PCM3002进行语音信号的A/D和D/A转换,PCM3002使用两个串行通道,一个用于控制内部寄存器,另外一个用于数据传输。在系统板TMS320C5416中默认的语音信号的抽样率是48kHz,通过修改PCM3002的内部控制寄存器,设定PCM3002信号的抽样率。为了满足G.729编码的要求,PCM3002信号的抽样率为8 000Hz。为了充分利用DSP进行信号处理,通过使用MCBSP和DMA把抽样的数据送入DMA的缓冲区中,当缓冲区满时产生一次中断,DSP把DMA的缓冲区中的数据读入DSP中进行处理,然后把处理过的数据送入DMA发送缓冲区。

  3.2 G.729在TMS320C5416的实现

  G.729的处理过程中采用块处理技术如图3所示。按照G.729标准,每块(帧)由80个样本组成,最初80个样本被存起来,处理过程中有两个操作是同时进行的。在处理块L中数据的同时,存储L+1块的数据。

  基于TMS320C5416的G.729语音编解码算法的优化和实现

  在G.729软件仿真时发现运算量较大的部分是LSP系数的矢量量化与激励码本(自适应码本和固定码本)的搜索,这两个部分的运算量大约占全部编解码运算量的60%以上。所以在优化过程中,着重对固定码本Acelp_Code_A()、分数基音分析pitch_fr3()、开环基音分析pitch_ol_fast()、增益量化Qua_gain()等占据绝大多数运算量的函数进行了优化;仅仅简化算法不能满足实时要求,还使用了CCS提供的C优化器进行C语言优化,同时还可以使用内联函数和汇编语句。经过以上处理后,输出的信号满足通信要求。通过分析优化前后这些主要模块的速度对照表(如表1所示),可以看出各个主要模块的优化效果是比较明显的。一帧语音信号经过处理前后幅频图(如图4所示),可以看出语音信号经过处理后保持良好的语音质量。

  基于TMS320C5416的G.729语音编解码算法的优化和实现

  

基于TMS320C5416的G.729语音编解码算法的优化和实现

  系统运行主要分为四个过程:语音存储,数据编码压缩,数据解压缩,语音回放。将输入的语音数据首先进行抗叠滤波,然后进行模数转换,经DSP采集并存入RAM存储器中,即是语音存储过程;接着运行编码程序,将前面存储的信息进行压缩并存储,这是编码过程;然后进行解码,并将数据存回原来的位置;最后DSP执行输出指令,将解码后的数据送到数模转换器中,实现模拟输出。

  用C5416最终实时实现了G.729声码器,用该声码器分别实时播放纯语音文件、语音加背景音乐文件。对重建语音质量的主观测试结果表明,恢复语音保留了很好的说话人特征,合成语音的清晰度和自然度均较好。该声码器性能测试数据如下:编解码一帧平均时钟周期数为1 010 350,CPU时钟频率为160MHz,所以编解码一帧需要7.31ms时间;程序RAM容量为9.381KB;数据和常数RAM容量为7.146KB。以上数据表明,G.729编解码器在C5416上实时实现的技术,可以很好地应用在电话会议、多媒体通信以及采用宽带语音编码的通信系统中。

关键字:G.729算法  算法优化  语音编码  TMS320C5416 引用地址:基于DSP的G.729语音编解码算法的优化和实现

上一篇:Enea获选加入德州仪器DSP合作伙伴网络
下一篇:基于DSP+CPLD的交流电机调速系统的应用

推荐阅读最新更新时间:2024-05-02 20:45

基于G.729语音压缩编译码算法的嵌入式语音存储系统设计
为了有效地节省语音数据的传输带宽和存储系统的磁盘空间,需要在保证语音质量的前提下尽可能降低其编码比特率。本设计采用经过优化的G.729语音压缩编译码算法,以ARM处理器为载体,开发的嵌入式语音存储系统可实现语音信号的海量存储,而且处理速度快、可靠性好、扩展方便。通过严格的测试和评估,该系统能够实现对大量语音数据的压缩和记录,各项指标基本达到了预期的水平。 1 系统控制核心 嵌入式操作系统软硬件结构框图如图1所示,由硬件层、驱动层、系统层和应用层组成。硬件层包括嵌入式处理器最小系统、存储器(SD RAM、Flash、ROM等)、通用设备接口和I/O接口(A/D、D/A、I/O等),其中Linux实时操作系统和应用程序
[单片机]
基于<font color='red'>G.729</font>语音压缩编译码<font color='red'>算法</font>的嵌入式语音存储系统设计
Pixel 7或采用与前代相同相机规格 但算法上会有优化
知名爆料者 Yogesh Brar 近日分享了关于 Pixel 7 系列的信息。他表示 Pixel 7 系列在相机规格上不会比前代产品有明显升级。这位泄密者说,传闻中的 Pixel 7 可能采用与 Pixel 6 相同的光学器件。   不过,Google 通过算法上的调整优化,预估相机性能会优于 Pixel 6 系列。Google Pixel 以其出色的相机性能而闻名。尽管它是比 iPhone 和 Galaxy S 手机更便宜的机型,但在相机性能上却能击败它们。Google 也很想在未来享受相机性能方面的领先优势。
[手机便携]
基于DSP的视频算法系统优化若干策略
数字视频产品需求近些年出现猛增。主流应用包括视频通信、视频监控与工业自动化,而最热门的要算娱乐应用,如 DVD、HDTV、卫星电视、标清(SD)或高清 (HD) 机顶盒、数码相机与 HD 摄像机、高端显示器(LCD、等离子显示器、DLP)以及个人摄像机等。这些应用都向高质量的视频编解码算法及其标准提出巨大需求,目前主流压缩标准主要有MPEG2、MPEG4和H.264/AVC,而针对这些编解码标准有各种各样的实现方案。本文主要探讨基于TI 的C64系列DSP的视频解码算法标准系统优化过程中需要考虑的若干因素。   TI的C64系列DSP以其强大的处理能力被广泛用于视频处理领域,然而由于大家对C64系列DSP的结构、指令、的理解程度不一
[模拟电子]
基于DSP的视频<font color='red'>算法</font>系统<font color='red'>优化</font>若干策略
百度携手新思科技实现算法和芯片早期优化并缩短运算时间
新思科技宣布,将与百度(纳斯达克股票代码:BIDU)持续深化合作,助力实现其“让计算更加智能”的愿景。百度人工智能芯片“昆仑”已采用新思科技全流程解决方案。 此前发布的百度AI芯片“昆仑”基于先进深亚微米工艺技术,在100W+功耗下可提供260 TFLOPS的性能及512 GB/s的带宽。除了拥有深度学习算法之外,还可以适配自然语言处理、大规模语音识别、自动驾驶等终端场景计算要求。 百度主任架构师欧阳剑先生表示:“百度拥有超过8年的AI加速器和处理器研发及大规模部署经验,加上新思科技受广泛认可且经验证的全流程解决方案,能够帮助我们提高芯片通用灵活性、计算能力及能耗效率,以更好应对普适AI芯片架构所面临的极大挑战。” 在
[物联网]
低码率语音编码MELP声码器的SOPC实现
  摘 要: 讨论了低码率语音编码MELP的编解码过程,有效降低了语音编码码率并能使说话者个人语音特征减弱,特别适合需要弱化说话者语音特点的场合。给出了其FPGA的硬件实现框图,据此可进行具体的硬件设计。同时给出了MELP编解码框图,可用于进一步的软件编制。   语音编码技术在当今数字通信尤其在无线系统中发挥着越来越重要的作用。利用语音编码技术可有效降低信息存储量、提高信道利用率。混合激励线性预测(MELP)语音编码算法能在较低码率下提供较高的语音质量、自然度和清晰度,已成为美国国防部新的2.4 Kb/s的语音编码标准。   Nios II处理器是Intel公司为Altera公司推出的32位精简指令处理器软核。在Altera公
[嵌入式]
低码率<font color='red'>语音编码</font>MELP声码器的SOPC实现
MC3418数字语音编码/解码集成电路中文资料
1 引言 现场通信技术的发展日新月异,而且正迅速向各个领域渗透,就目前来说,数字通信以其抗干扰能力强,便于加密,易于集成化,有利于处理、存储、交换以及和计算机连接等优点而成为当代通信系统的主流。而现有的地震波信号检测系统普遍存在着抗干扰能力差、信噪比低、系统误差大、所记录的数据不利于后期量化处理的缺点。基于上述情况,笔者运用MC3418(编解码简单)、抗误码性能好、在比特率较低时有较高的信噪比)设计了一种数字传输电路,效果很好。 2 MC3418简介 MC3418 是MOTOROLA公司生产的一种简单数字语音编码/解码集成芯片。它有两种工作状态,在引脚15处于“1”时,完成编码功能;处于“0”时,实现解码功能。MC3
[单片机]
G.729A语音编码TMS320VC5416实时实现
  概述   近二十年来,全球半导体产业的飞速发展带动相关的软件、硬件设计达到新的水平,使得很多比较复杂的数字信号处理算法可以实时实现并且得到广泛应用。突出的代表就是数字信号处理器(DSP)与语音信号压缩编码算法相结合,并且在日常通信系统中得到广泛应用,例如数字移动电话、IP电话等。随着网络通信的发展、微处理器和信号处理专用芯片的发展,也为语音处理技术的应用提供了更加广阔的平台。所有这些因素都促进了对更加有效、可靠、高质量的语音编码系统的需要,从而促进了语音编码技术的持续发展。在最近一些年内,语音压缩编码技术有了很大的发展。最早的标准化语音编码标准是70年代CCITT公布的G.711 64kb/s脉冲编码调制PCM。此后ITU又
[嵌入式]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved