《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > IP电话中的低速率语音编解码器的实现

IP电话中的低速率语音编解码器的实现

2009-02-11
作者:朱欲晓1 冉妮莉2 黄永峰3

    摘  要: G.729.A 在TMS320C6201DSP上的实现方法及提高G.729.A编码器的运行速度的优化方法和编程技巧。并介绍了该编码器的测试结果。 

    关键词:  ITU-T  G.729.A  IP电话  编码器

 

    最近几年,IP电话技术突飞猛进,已从当初PC到 PC的机连接方式发展到IP电话网关方式,通过IP电话网关可以将PBX与因特网连接起来,从而实现普通话机通过因特网进行通信。因此,IP电话网关是近年来计算机和通信领域中研究的一个热点。IP电话网关的一个最主要性能指标是它的处理密度(即能同时处理的话路数)。而IP电话网关的处理密度主要取决于它所使用的语音编解码器" title="编解码器" target="_blank">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器" title="编解码器">编解码器处理一帧数据的延迟大小。目前,IP电话所遵循的标准是H.323,而H.323标准首选语音编码器是ITU-T G.729.A。ITU-T G.729.A是用于语音和其它声音信号的压缩编解码算法建议,它是G.729的简化版本,编码速率为8Kbps,并且有很高的语音质量。但是,该编码器的算法复杂,一帧语音的处理延迟较大,在很大程度上影响IP电话网关的处理密度。因此,为了提高IP电话网关的处理密度,本文在实现ITU-T G.729.A语音编解码器时,采用了目前性能最好的DSP,即TMS320C6201;针对TMS320C6201并行性和流水等特点,深入研究了在TMS320C6201上实现G.729.A的编解码器的编程技巧;归纳出一系列减少编解码器处理延迟的优化方法。采用这些优先方法和编程技巧,可以将ITU-T G.729.A的每帧编码运行时间减少到0.47毫秒(按TMS320C6201工作在200MHz计算),从而可以实现单片TMS320C6201能同时处理20路语音。这一指标已到达了国际上最先进的水平;而且,该编解码器已成功地运用在笔者开发的IP电话网关中。 

1 G.729.A编解码器的算法 

1.1 编码算法 

    ITU-T G.729.A标准采用一种称为“共轭结构代数码本激励线性预测”(Conjugate Structure Algebraic-Code-Excited Linear-Prediction,CS-ACELP)算法来对语音信号进行编码。 

    在开始编码之前,先要对输入的模拟信号进行电话带宽滤波,然后以8kHz频率对其进行采样,再将其转换为16位线性PCM码,作为编码器的输入。 

    编码器处理语音的单位是帧,1帧为10毫秒语音,包括80个声音样本(采样频率为8kHz)。编码器对每一帧语音信号进行分析,抽取出其中的CELP模型的参数(线性预测滤波器参数,自适应和固定码本索引和增益),对这些参数进行编码和传送。其编码过程如图1所示。 

 

 

    在预处理阶段,输入信号经高通滤波并乘以比例因子,然后对每一帧预处理之后的信号进行一次线性预测分析,计算出线性预测滤波器系数,其中,线性预测滤波器系数定义为:这些系数被转化成线谱对(LSP,Line Spectrum Pairs)并用可预测二阶矢量量化法量化成18位。使用合成分析搜索过程选定激励信号,使得原始信号和重构信号之间的误差在感觉加权失真测量中最小。 

    对每个子帧(5毫秒,包括40个样本)求出其激励参数(固定和自适应码本参数)。本帧的量化和未量化的线性预测滤波器系数用于第二子帧,第一子帧使用的是线性插值系数。每一帧根据感觉加权语音信号估计出开环基音延迟。然后对每一子帧进行以下操作:将线性预测残差通过加权合成滤波器W(z)/A(z)得到目标信号x(n),计算出加权合成滤波器的冲击响应h(n),使用目标信号x(n)和冲击响应h(n)在开环基音延迟周围搜索,并进行闭环基音分析(得出自适应码本延迟和增益)。第一个子帧的基音延迟编码为8位,第二个子帧采用差分方法编码为5位。通过减去(滤波后的)自适应码本贡献来更新目标信号x(n),新目标x’(n)在固定码本搜索中使用以找到最优激励。固定码本激励使用一个17位的代数码本。自适应和固定码本的贡献增益被矢量量化为7位(对固定码本增益使用移动平均预测方法)。最后,得到的激励信号被用来更新滤波器状态。所有这些参数最后封装到80位的压缩数据帧中。 

1.2 解码算法 

    解码器算法框图如图2所示。 

 

 

    首先,从压缩比特流中取得各参数的索引,再从这些索引中得出一帧语音的编码器参数,包括LSP系数、2个部分基音延迟、2个固定码本向量、2套自适应和固定码本延迟,这些参数被用来生成激励信号并合成滤波器参数。LSP系数经插值后,形成每个子帧的LP滤波器。然后,对每个子帧进行如下处理: 

    ·自适应和固定码本向量乘以各自的增益系数得到激励信号; 

    ·激励信号经过线性预测合成滤波器得到重构的语音; 

    ·重构后的语音信号再经过一个后处理阶段,包括基于长时和短时合成滤波器的自适应滤波器,然后再经过高通滤波器并乘以相应的比例因子。 

2 ITU-T G.729.A编解码器实现的关键技术 

2.1 ITU-T G.729.A编解码器实现的硬件平台 

    ITU-T G.729.A编解码器实现平台是笔者开发的一种集成式IP电话网关。这种集成式IP电话网关的设计思想是以PC机为基础,集成了市场通用板卡,如LSI/C6200 DSP资源卡、Dialogic的语音卡和网卡等,并以这些板卡为硬件平台,按照相关协议,开发出一套 IP网关软件。集成式IP电话网关的硬件基本结构如图3所示。其中G.729.A编解码器是由LSI/C6200资源卡上的TMS320C6201 DSP来实现。 

 

 

    TMS320C6201 DSP是美国TEXAS INSTRUMENT公司生产的目前处理速度最快的定点数字信号处理器,TMS320C6201 DSP采用VLIW(Very Long Instruction Word)体系结构,其工作频率最高可达200MHz,内部有8个功能单元并行执行指令,因此峰值处理能力可达1600MIPS[4]。另外,TMS320C6201 DSP分别提供了64KB的内部程序RAM 和数据RAM,片外存储器可扩展到4GB,可连接SDRAM、SBSRAM和 Flash Memory。TMS320C6201 DSP还提供了丰富的外围电路接口,如:Scbus语音总线、MVIP语音总线、HOST接口以及JTAG口等。 

2.2 ITU-T G.729.A软件模块的设计 

    G.729.A编解码器运行的硬件平台是TMS320C6201 DSP,支持SPOX。SPOX是一种功能很强的实时操作系统。在SPOX操作系统的调度下,可对多路语音进行适时的语音压缩和解码。G.729.A编解码器软件主要由调度及命令解释模块、G.729.A数据压缩与解压缩模块和接口模块三部分组成。 

    (1)调度及命令解释模块 

    该模块主要用于解释HOST发来的各种命令,如发送或接收编解码数据,查询编解码状态以及启动、停止编解码操作等,该模块不直接与HOST打交道,而是以SPOX提供的中断服务方式,通过接口功能模块间接地实现与HOST之间数据交换。同时在SPOX 的支持下,完成对多路语音编解码的适时调度。 

    (2)G.729.A数据压缩与解压缩模块 

    该模块是ITU-T G.729.A编解码器的核心模块,在很大程度上影响编解码器的性能。该模块实现了ITU-T G.729.A全部功能。该部分已单独形成一个TMS320C6201函数库,可与其他任何部分连接。 

    (3)接口模块 

    该模块主要实现TMS320C6201与HOST以及与语音卡之间的数据交换,因此该模块分成两部分。一部分主要负责TMS320C6201 DSP与语音卡之间的数据传输,它负责不断地将语音卡采取的语音数据通过语音总线(如SCbus),采取等时通信方式送入到LSI/PCI6200资源卡RAM中,或者是将编解码器解码后的数据经SCbus总线送给语音卡。另一部分主要负责TMS320C6201 DSP与HOST之间的数据交换,一方面要将压缩后的语音信号由PCI总线送往HOST;另一方面将HOST解包的码流分类后读入编解码器。编解码器与HOST之间的数据交换采用中断方式进行同步。 

2.3 ITU-T G.729.A标准在TMS320C6201上实现的关键技术 

    处理密度是衡量IP电话网关性能好坏的一个重要指标。而一个IP电话网关在硬件平台确定的情况下,其处理密度主要取决于它所采用的编解码器的语音编码处理延迟,即代码的执行速度。如何提高G.729.A语音编码的执行速度是G.729.A编解码器实现的关键技术问题之一。为此,归纳出一系列编程技巧和优化方法,较好地解决了这一难题。 

    (1)G.729.A标准中规定的算法都是基本算法。因此,在实现时,可以用快速算法替换。例如,相关系数的计算,在G.729.A标准中使用一种最基本的计算方法,如果采用快速的傅里叶变换技术或采用分解因子的计算方法,就可以加快计算速度。 

    (2)算法中有很多FIR和IIR运算,如:共振峰滤波器、听觉加权滤波器、联合滤波器等,在设计这些滤波器时,使用较大数组来放滤波器的系数。这样,每计算一次输出,不需系数更新移位,从而可以减少内存操作次数,因此可以通过牺牲存储器空间来提高代码的执行速度。如:共振峰滤波器是十阶滤波器,常规的实现方法是设置一个长度为10元素的一维数组来保存最近的10个共振峰样本点。滤波器每输出一个样本点,该数组就需更新一次。对于一个子帧40个样本点,就需进行40次更新操作。如设置长度为70元素的一维数组,就可以免去更新操作。可以很大程度地提高代码的运行速度。 

    (3)多使用指针,尽量减少变量之间的反复拷贝操作。 

    (4)用查询静态表的方法来代替动态的计算,从而减少计算延迟。例如,在设计cos()函数时,程序在初始化时就生成一个512项的cos()函数表。当需要计算cos()函数值时,可以采用查表方式来代替动态计算。 

    (5)内存单元的合理分配。TMS320C6201 DSP的片内存储器有64KB数据存储器。由于TMS320C6201从片内存储器读入一个字比从片外存储器读入一个字快14倍,因此在编程时,尽量将经常使用的数据分配在片内存储器中。 

    (6)G.729.A在TMS320C6201上定点实现时,数据精度也是一个关键问题。在定点信号处理芯片上实现某些浮点算法时,可以采取定点数来表示浮点数,这样可以加快运行速度,但可能导致运算精度不够。解决的方法是在精度要求比较高的地方,可以将计算的中间变量用32位表示,甚至用40位表示。

    (7)充分利用TMS320C6201的编译器和优化工具来优化C和线性汇编代码,并合理地选择优化参数。有关速度的优化参数是:-o3、-op3、-pm、-mt、mi等。并尽量用TMS320C6201的线性汇编或汇编语音来实现G.729.A编解码器的算法。 

    (8)充分利用TMS320C6201的特点来编写代码。如流水功能,8个功能单元并行操作功能,32位字读写功能以及Intrinsics的使用等,例如:对多重循环,如最内层循环次数少而较简单,可把最内层循环展开,以便外循环做流水线;对一些简单循环而前后没有因果关系,合并这些循环也有利于做流水线。 

3 性能测试 

    分别用二种测试工具对G.729.A编解码器的处理延迟作了测试。第一种测试工具是C6X Simulator(TMS320C6201的仿真软件),测试条件是假设所有代码装在TMS320C6201片内的程序存储器中;因此,称之为Non cache测试模式。另外一种测试方式是采用TI公司的C6X的EVM卡(评估卡),测试条件是将TMS320C6201片内64KB RAM作为Cache使用;因此称之为cache模式。二种测试模式的测试结果如表1所示。 

 

 

    从表1可以看出,如果TMS320C6201工作在频率为200MHz,即每Cycles的周期为0.5毫秒,可以算出G.729.A编码一帧(30毫秒)的延迟时间是0.43~0.46毫秒。因此说,单片TMS320C6201可以同时处理大约20路G.729.A编码(当前国际最高水平是22路);而且,编解码的结果都严格地通过了G.729.A提供的测试矢量的测试,实际播放音质也很好。 

    ITU-T G.729.A语音信号压缩编解码技术集成了众多低速率语音编解码的优点,大大提高了低速率编解码的语音质量,但算法较复杂。而TMS320C6201 DSP是目前最快的定点数字信号处理器,如果在编写程序时,能充分利用上述关键技术,就可以充分发挥TMS320C6201的功能,大大减少G.729.A编解码的处理延迟,并能保持良好的语音品质。将该编解码器应用在该IP电话网关中,在很大程度上提高了IP电话网关处理密度,改善了IP电话网关的性能。因此说,本文实现的G.729.A编解码器有很大的应用价值。 

参考文献 

1  张延平, 林博文.计算机语音集成原理、 技术和应用.北京:人民邮电出版社,1997.10 

2 Richard V.Cox&Peter Kroon,Low Bit-Rate Speech Coders for Multimedia Communication.IEEE Communication Magazine, December 1996(6):21~27 

3 Gary A.Thom.H.323:The Multimedia Communications Standard for Local Area Networks. IEEE Communications Magazine, December 1996 

4 PCI/C6200 Technical Reference Manual,Version 0.90,Blue Wave System Corp., June 1998, http://www.bws.com

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。