新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > ITU-TG.729算法及其实时实现

ITU-TG.729算法及其实时实现

作者:时间:2010-12-22来源:网络收藏

G.729的解码也是按帧进行的,主要是对符合G.729协议的码流进行解码,得到相应的参数,根据语音产生的机理,合成语音。解码的方框图如图2所示,其主要部分为:参数解码;后滤波处理。

G.729解码过程如下。

·参数解码

首先解码得到线谱对参数,并将线谱对参数转换为线性预测系数。然后解码出基音周期,获得自适应码本矢量V(n)。解码出固定码本矢量的四个脉冲的位置和符号,计算出固定码本矢量c(n)。解码出固定本预测增益gc和固定码本增益,接着得到激励信号

,n=0……39。最后将激励信号

u(n)输入到线性预测合成滤波器中,计算出重构语音

·后滤波处理

后滤波处理主要是自适应后滤波。自适应后置滤波器是由三个滤波器级连而成:长时后置滤波器Hp(z),短时后置滤波器Hf(z),频谱倾斜补偿滤波器Ht(z),后面接着进行一个自适应增益控制过程。后置 滤波器的系数每一个子帧更新一次。后置滤波能够有效地改善合成出的语音质量。

2 G.729编解码器的

我们在Analog Device的定点数字处理芯片ADSP-2181[4][5]上了符合ITU-T G.729的全部功能,进行编解码总共用了22MIPS(ADSP-2181处理速度为33MIPS)。了G.729的编解码功能,主要有以下的难点。

·数据在DSP中的安排。在DSP中只要是声明的变量,DSP的连接程序就会分配数据空间。如果我们象C语言编程那样定义局部变量,就会浪费大量的存储空间。

·数据精度的处理。在16位的定点信号处理芯片上实现一些浮点时,为了使运算速度加快,往往要针对定点芯片的特点,用定点数来表示浮点数。虽然速度提高了,但是很可能导致运算精度不够。

·有限计算资源的利用。ADSP2181只有33MIPS,而且不能使所有的MIPS都用来实现G.729的编解码功能。

·DSP高速运行时,DSP与主机的数据交互。

·语音信号和编解码缓冲区的维护。这些缓冲区至少都有两者要去存储,如语音信号缓冲区, 一方面语音编码模块要调用,另一方面采集中断程序也要调用它。而在语音编码模块调用的过程中,该缓冲区不应该被其它模块所改变,所以中断程序不应该此时去存储这个缓冲区,这就存在着矛盾。

2.1 软件设计

软件设计主要包括三个部分。

· 命令解释器

命令解释器主要是用于解释主CPU发来的各种命令,如发送或接收编解码数据、查询编解码状态以及启动、停止编解码操作等。该模块不直接与主CPU打交道,而是通过接口功能模块,间接实现与主CPU的数据信息交换。

· G.729数据引擎

我们在ADSP-2181上完成了G.729的编/解码工作。

ADSP-2181不仅包含了ADSP-2100系列的基本结构(三个运算单元、数据地址发生器和一个程序序列器),还含有两个串行口、一个16位的内部IDMA口,一个8位的BMDA口、一个可编程定时器、标志输入输出(Flag I/O、外部中断能力以及片内程序和数据存储器等周边设备。ADSP-2181片内集成了共80K字节的存储器,它们分别是16K字(24bit)程序存储器和16k字(16bit)的数据存储器,大量的片内存储器使得复杂的G.729编解码能够全部放入ADSP-2181片内,无须增加任何的片外RAM,简化了硬件设计和接口。



评论


相关推荐

技术专区

关闭