新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > G.729语音编码算法研究及基于DSP的实现

G.729语音编码算法研究及基于DSP的实现

作者:时间:2012-05-23来源:网络收藏

摘要:对G.729编解码的原理进行了简要分析,并提出了一种芯片TMS320VC5510的编解码方法。针对特征及体系结构的特点,提出了一些有效的优化措施。实验结果表明,运算复杂度大大降低,且在的编解码压缩过程中具有很好的重建效果。

本文引用地址:http://www.eepw.com.cn/article/171421.htm

关键词:TMS320VC5510;语音编解码;G.729算法;优化

1 G.729算法介绍

由于G.729的算法复杂度较高,ITU提出了G.729的简化版本G.729A,作为G.729的附录Annex A。后来为了进一步提高压缩率,增加了G.729B,即G.729 AnnexB。在G.729B中,主要使用了VAD和CNG技术,使得语音通信中的静音部分进一步压缩。

1.1 G.729A

1.1.1 G.729A

G.729A器的框图如图1所示。G.729A器由预处理、线性预测分析和量化内插、知觉加权、基音分析、脉冲响应的计算、目标信号的计算、自适应码本搜索、同定码本结构和搜索、增益量化以及参数编码等模块组成。

a.JPG

模拟语音信号经过话路带通滤波和8 kHz采样之后,量化成16位的PCM信号进入编码器,然后根据预处理后的输入信号进行线性预测分析,得到线性预测系数,即线性预测编码LPC(Linear Prediction Code)信息,利用该系数即可构造合成滤波器。激励信号经合成滤波器后生成重构信号,与输入信号相减后得到残差信号。该残差信号经误差加权滤波器处理,根据听觉感受改变频谱,反馈到控制回路,根据使加权残差信号均方差最小的原则确定激励信号及其增益。误差加权滤波器也是根据预测分析所得的LPC信息构造的。

基音分析模块通过自相关分析推得基音周期,据此信息搜素自适应码本,确定最佳自适应码本矢量,得到语音中具有准周期特性的激励;然后再搜素固定码本,根据最小化加权均方差(Mcan Square Error,MSE)的准则确定最佳固定码本矢量,得到语音模型的随机激励信号;最后再确定两个码本矢量的增益Gc和Gp,采用具有共匀框结构的两级码书进行矢量量化。上述过程确定的线性预测编码信息、自适应码本矢量、固定码本矢量和矢量增益构成完整的G.729声码器编码器参数。所有这些参数均以码本索引的形式发往接收端。

1.1.2 G.729A解码器

G.729A解码器结构框图如图2所示。首先从接收到码流中提取参数序号,解码这些序号得10 ms语音帧对应的编码参数。这些参数是线谱对LSP参数、两个分数基音延时、两个固定码本矢量与两组自适应和固定码本增益、每子帧LSP参数被内插并转换为LP(Linear Prediction)滤波器系数,然后以每5 ms子帧为单位合成语音,合成步骤如下:

b.JPG

①自适码本应和固定码本分别乘以各自的增益加起来构成激励。

②激励LP合成滤波器重构语音。

③重构语音信号经过后置处理,包括长时后置滤波、短时合成滤波和高通滤波。最后输出语音信号。

1.2 G.729B

G.729B是对G.729A的进一步优化,其最主要的机制是静音压缩。静音压缩主要涉及两个机制:VAD(Voice Activity Detection)和CNG(Comfort Noise Generation)。VAD主要是用于编码器,用来决定当前帧是否静音;而CNG则主要用于解码器,产生让人耳感觉舒服的噪声。

1.2.1 VAD机制

VAD算法每隔10 ms做一次判决。首先,VAD会从输入帧中提取参数,这些参数包括全带能量、低频带能量、过零率和某个频域参数。在静音段,这些参数的长时平均值随着背景噪声的性质而发生改变。每进来一帧,就要计算当前帧的参数与其长时平均值的差。根据这些差值参数,VAD可以得到初始的判决结果,最后对初始结果进行平滑,得到最终的判决结果。

1.2.2 CNG机制

舒适噪声是用伪白噪声激励内插后的LPC滤波器产生的,就跟解码器对解码后的激励进行滤波产生活动话音一样。激励水平和LPC滤波器是从前一个SID信息中获取的。子帧内插LPC滤波器是用SID的LSP参数作为当前的LSP,然后和前一帧的LSP作内插得到的,与活动帧一样。伪白噪声ex(n)是由跟活动话音同样类型的激励cx1(n)和高斯白噪声激励ex2(n)相加而产生的。G.729激励ex1(n)是由一个小增益的自适应激励和ACELP固定激励组成的,这改善了活动和非活动话音帧之间的跳变。白噪声ex2(n)的引入是为了产生一个更接近于白噪声的信号。在非活动话音期间,因为编码端和解码端需要保持同步,所以激励在两边都要产生。

首先,我们定义目标激励增益Gt为当前帧t合成激励必须要达到的平均能量的平方根。Gt是用下面的平滑公式计算得到的,其中GSID是解码后的SID增益。

c.JPG

每帧的80个样本分成两个长度为40个样本的子帧。对于每一个子帧,CNG激励样本是用下面的算法合成的:

①从间隔[40,103]中随机选择一个基音延迟。

②根据G.729 ACELP码结构随机选择网格、脉冲符号和位置来构建子帧的固定码本矢量。

③计算单位增益的自适应激励信号,记作ea(n),n=0~39;选择的子帧固定激励被记作ef(n),n=0~39。

④与活动帧一样,伪白噪声ex(n)是由跟活动话音同样类型的激励ex1(n)和高斯白噪声激励ex2(n)相加而产生的。G.729激励ex1(n)是由一个小增益的自适应激励和ACELP固定激励组成的,这改善了活动和非活动话音帧之间的跳变。高斯白噪声ex2(n)的引入是为了产生一个更接近于白噪声的信号。在非活动话音期间,因为编码端和解码端需要保持同步,所以激励在两边都要产生。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭