新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于TMS320C6201的G.723.1多通道语音编解码的实现

基于TMS320C6201的G.723.1多通道语音编解码的实现

作者:时间:2008-06-02来源:嵌入式开发网收藏

  当前,Voice overIP()技术正在不断普及,通过Internet的语音通信量也日渐增加。目前中使用的低码率语音压缩标准主要有G.723.1和G.729两种。随着技术的不断发展,要求产品的集成度与性能进一步提高,利用新一代高性能芯片,实现单片处理多路语音信号,是今后的发展趋势。本文根据C6201芯片的特点,作了大量针对G.723.1标准本身的优化,降低了运算量,满足了多路信号的实时实现。

本文引用地址:http://www.amcfsurvey.com/article/83480.htm

  1 G.723.1标准介绍

  G.723.1标准是ITU组织于1996年推出的一种低码率编码算法。主要用于对语音及其他多媒体声音信号的压缩,如可视电话系统、数字传输系统和高质语音压缩系统等。

  G.723.1标准可在6.3kbps和5.3kbps两种码率下工作。其中,高码率算法具有较高的重建语音质量,而低码率算法的计算复杂度则较低。与一般的低码率算法一样,G.723.1标准采用线性预测的合成分析法(Analysis-by-Synthesis)。对激励信号进行量化时,高码率算法采用多脉冲最大似然量化(MP-MLQ),而低码率算法则采用算术码本激励线性预测(ACELP)。目前,G.723.1已经能在多种芯片上实现,如美国TI公司的TMS320C5x、TMS320C54x和朗讯科技公司的DSP16xx等。

  G.723.1编码器能对以8kHz采样的话带语音信号进行压缩,其结构框图见图1(a)。从图中可以看出,编码器是基于线性预测合成分析法原理,其目的是最小化感知加权误差信号。为了降低码率,G.723.1采用了较长的帧尺寸,每帧240个样值,即30毫秒帧长。每帧输入信号首先通过一阶高通滤波器滤除直流分量,然后将之分成四个60个样值的子帧,每个子帧独立进行LPC分析。为了提高LPC系数的连续性,采用了长度为180个样值的重叠窗,即同时包含前后两个子帧,这使算法引入60个样值的超前时延,因此算法的总时延为37.5毫秒。LPC系数用线性谱频率(LSF)表示,LSF参数采用预测分裂矢量量化,只对第四子帧进行。为了提高量化感知质量,高通滤波后的语音信号需通过共振峰感知加权滤波器和谐振峰噪声整形滤波器以生成初始目标信号。前者参数由各子帧的未量化LPC系数构成,后者通过对每两子帧进行开环基音周期估计得到,其中基音周期的范围为18到142个样值。LPC合成滤波器、共振峰感知加权滤波器和谐振峰噪声整形滤波器用于系统零输入响应计算和最佳激励估计。G.723.1编码器还包括一个五阶基音预测器,其参数根据开环基音估计值和脉冲响应进行闭环基音搜寻得到。在进行最佳激励估计时,需从初始目标信号中减去系统零输入响应和基音预测器贡献以得到最终目标信号,然后针对高低码率分别采用MP-MLQ和ACELP方法进行量化。其中LSF参数、基音值和激励参数需传送给解码器。

  解码器首先根据得到的LSF参数重建LPC合成滤波器,然后根据基音值和激励参数得到自适应码本激励信号和固定码本激励信号。为了提高重建语音的主观质量,解码器还包括一个后滤波器,后滤波器由共振峰和基音后滤波器组成。激励信号依次通过基音后滤波器、合成滤波器和共振峰后滤波器合成重建语音,其结构框图见图1(b)。

  2 TMS320C6201芯片结构简介

  TMS320C6201是一种32位的定点DSP,工作频率最高达200MHz。它有两组运算单元,每组4个,共8个。除M单元只能作乘法外,其他单元都可以灵活使用,如D单元可以做Load、Store和加减操作,S单元可以进行移位和加减。C6201有32个通用寄存器,分为A、B两侧。两侧的寄存器有交叉通路,同一指令可以同时访问双侧的寄存器。C6201采用了超长指令字结构,一次最多可以同时执行8条指令(每个单元一条)。它有11级流水,所有的指令都是精简指令。C6201允许使用缓存(Cache)模式,可以运行大型程序而不降低速度。图2是C6201的结构。

  3 标准的实现

  用C6201实现G.723.1标准的最大优势在于它极强的并行处理能力,用一块DSP可以实现多路语音的压缩,大大简化了硬件的设计。C6201是TI公司推出的第一种支持C编译器的DSP芯片。通常,C编译器能完成整个工作的70%,而30%的进一步优化必须通过手写汇编来实现,所以对整个程序的优化分为C语言级和汇编语言级两部分。

  3.1 C语言级的优化

  3.1.1 循环展开(loop-unrolling)

  使用具有并行能力的DSP开发软件时,一个重要的思想就是充分利用DSP的字长和数目众多的运算单元,尽量把循环体展开。通过增加每次循环中执行的指令数来减少总的循环次数,可使得在同样的时钟周期内能运行更多的指令,提高了循环的效率。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭