在G.729软件仿真时发现运算量较大的部分是LSP系数的矢量量化与激励码本(自适应码本和固定码本)的搜索,这两个部分的运算量大约占全部编解码运算量的60%以上。所以在优化过程中,着重对固定码本Acelp_Code_A()、分数基音分析pitch_fr3()、开环基音分析pitch_ol_fast()、增益量化Qua_gain()等占据绝大多数运算量的函数进行了优化;仅仅简化算法不能满足实时要求,还使用了CCS提供的C优化器进行C语言优化,同时还可以使用内联函数和汇编语句。经过以上处理后,输出的信号满足通信要求。通过分析优化前后这些主要模块的速度对照表(如表1所示),可以看出各个主要模块的优化效果是比较明显的。一帧语音信号经过处理前后幅频图(如图4所示),可以看出语音信号经过处理后保持良好的语音质量。
系统运行主要分为四个过程:语音存储,数据编码压缩,数据解压缩,语音回放。将输入的语音数据首先进行抗叠滤波,然后进行模数转换,经DSP采集并存入RAM存储器中,即是语音存储过程;接着运行编码程序,将前面存储的信息进行压缩并存储,这是编码过程;然后进行解码,并将数据存回原来的位置;最后DSP执行输出指令,将解码后的数据送到数模转换器中,实现模拟输出。
用C5416最终实时实现了G.729声码器,用该声码器分别实时播放纯语音文件、语音加背景音乐文件。对重建语音质量的主观测试结果表明,恢复语音保留了很好的说话人特征,合成语音的清晰度和自然度均较好。该声码器性能测试数据如下:编解码一帧平均时钟周期数为1 010 350,CPU时钟频率为160MHz,所以编解码一帧需要7.31ms时间;程序RAM容量为9.381KB;数据和常数RAM容量为7.146KB。以上数据表明,G.729编解码器在C5416上实时实现的技术,可以很好地应用在电话会议、多媒体通信以及采用宽带语音编码的通信系统中。