G.723.1在DSP数字对讲机基带系统中的应用

时间:2009-09-22来源:网络

4.2 语音编解码模块

  该模块主要是对G.723.1的代码处理。系统若直接使用ITU提供的定点C源代码, C5509A完成1帧的编码需要53 400 912个周期,即使C5509A工作在最高频率200 MHz,也需要267 ms。所以代码必须经过优化,且优化后的代码占用DSP的资源不能过高,这样才能保证DSP有足够的资源对后续的基带数字化进行实时处理。本设计主要从编译器、C语言级、汇编级和算法级4个方面对G.723.1的定点C代码进行优化。本文主要对算法级优化进行介绍。

  在对G.723.1算法进行仿真的过程中发现,基音估计、自适应码本搜索、固定码本搜索和代数码本搜索等模块占语音编解码的总时间超过70%,因此优化措施应着重对这几个模块的算法进行优化。

  ①开环基音估测函数Estim_Pitch()中,计算图1f[n]中的互相关值COL(j):


  寻找使得COL(j)max,开环基音周期j的搜索范围18~142。在基音周期较短时,基音频率较大;对语音信号编码质量影响较大,而基音周期较长时,基音频率较小,对语音信号编码质量较小。所以18~58之间基音周期采用逐点计算搜索,而59~142之间以采用隔点计算,可以减少运算量。

  ②高速率的脉冲激励编码(MP-MLQ)函数Find_Best()中计算预测残差信号     时需要进行卷积码预算,对其进行优化。计算误差信号的均方值     时,式中   先通过加减运算完成,最后做1次增益G的乘法运算即可得到r’[n],这样计算1次残差矢量最多需要60×6=360次加减运算,而优化前的预算量为4×8×(1+2L+58+59)=56 640。由此可见优化减少了大量的运算。

  ③基本运算库函数优化。G.723.1代码的基本运算库函数Basop.c中,存在大量数字信号处理功能的函数,而且占据绝大部分运算,如L_mac()、L_mull()、L_add()、sature()等,所以还需在这几个函数上进行一些优化工作。

1 2 3 4 5

关键词: 数字对讲机 G.723.1 语音 压缩编码 模块

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版