目前,G.729A算法多是在TI的5000系列DSP上实现单通道或双通道语音压缩,而本设计在现有的TMS320C6711系列DSP平台上使用最少的硬件资源和软件开销,压缩编码解码时间,实现了多通道语音实时压缩解压。
选择语音压缩编码方案
在评价一个语音压缩编码方案时,一般从四个方面考虑:质量、速率、复杂度和延时。目前 ITU-U已制定的G系列标准如表1所示。
本系统需要的是一种低码率、语音质量良好、低时延、较低算法复杂度的压缩方案,从表1中可以看出,从低码率考虑就可以排除G.711、G.721、G.722和G.723。G.726在速率为16Kb/s 时,语音质量为2.0,这显然是不可以接受的。在余下的G.723.1、G.729、G.729A中,可以看到G.723.1的算法复杂度较大,而且延时较长,所以也被排除。和G.729相比,在算法复杂度方面,G.729A有较大优势。实际上,G.729A是G.729的一个简化版本,在语音质量基本维持不变的情况下,算法简化了很多。所以本系统最后选用G.729A算法。
G.729A编码方案是电话带宽的语音信号编码的标准,对输入语音性质的模拟信号用8kHz、采样,16比特线性PCM量化。CS-ACELP是基于码本激励线性预测(CELP)的编码模式,每80个样点为一语音帧,对语音信号分析并提取各种参数,把这些参数编码发送。在解码端,把收到的比特流恢复成参数编码,解码后得到各个参数,用自适应码矢序号从自适应码本中得到自适应码矢,用固定码矢序号从固定码本中得到固定码矢,分别乘以它们的增益,按点相加后构成激励序列。用线性预测滤波器系数构成合成滤波器。用自适应码本方法实现长时或基音合成滤波,计算出合成语音后,用后置滤波器进一步增强音质。G.729A算法编码器原理框图如图1所示。
图1 G.729A算法编码器原理框图
硬件系统设计
数字信号处理器具有运行速度快、性价比高、功耗低、开发快的特点。本系统选择的TMS320C6711是高性能浮点数字信号处理器,可以成功地实现实时语音压缩和解压。
1 系统原理框图
本系统以TMS320C6711为核心,外扩32MB SDRAM和2MB FLASH。DSP仿真器用于DSP的在线调试开发,可以通过软件在线控制DSP的运行状态,并能够查看DSP内部寄存器。PC是开发人员和DSP系统之间的交互界面,通过PC上安装的CCS集成开发环境,开发人员可以在友好的图形界面下对目标系统进行操作。系统原理框图如图2所示。
图2 系统硬件框图
2 模拟电路接口设计
TLV320AIC10芯片模拟电路设计包括麦克风接口设计和扬声器接口设计,由于TLV320AIC10输出具有600Ω驱动能力,足够驱动一个耳机,也可以经过一个功率放大芯片驱动扬声器,所以输出电路较为简单。
TLV320AIC10内置运算放大器电路,可以方便的与麦克风接口,接口电路如图3所示。应当注意的是VMID引脚最大输出电流为5mA,为了防止输出电流超过限制,应当串联一个起保护作用的电位器RP1。
图3 模拟电路接口
3 数字电路接口设计
TLV320AIC10支持与TI 5000和6000系列的无缝接口。TLV320AIC10通过McBSP接口与TMS320C6711 DSP相连,如图4所示。
图4 数字电路接口
注意,TLV320AIC10采用主模式,由TLV320AIC10向TMS320C6711 DSP提供串行通信频率SCLK。MCLK提供TLV320AIC10的工作频率,包括串行通信频率SCLK和采样频率fs。串行通信频率为MCLK的二分频,fs与MCLK关系如下:fs=MCLK/(256×N),N=1,2...,32。在本系统中N为4,fs为8000,故MCLK是8.19MHz。
软件系统设计
本系统实现的目标是能够实时输入语音、压缩,并能把接收到的G.729A编码解压、播放出来。事实上DSP要同时处理多个任务:从外部语音芯片获取采集数据、编码、解码、把解码后的数据送到外部语音芯片播放。本系统采用TI BIOS嵌入式实时操作系统,并在此基础上开发了硬件驱动程序和上层应用程序,最后测试了实现结果。系统软件结构如图5所示。
图5 系统软件结构图
实验结果
从实验仿真中可以得到,重建语音与原始语音的频率峰值完全相同,都在468.75Hz,这表示G.729A的LPC参数分析和基音频率估计是非常正确的,但是重建语音在200Hz、700Hz左右有一个原始语音没有的波峰,而且重建语音在800Hz以后的幅度没有迅速下降。这说明二者还是稍有差别的。
结束语
本文对基于DSP的G.729A语音压缩算法进行了严格的测试,测试结果表明:(1)算法通过了ITU-T的测试向量,达到了ITU-T标准;(2)本编码算法对于时间长度为10ms的一帧语音数据编码需要1.1ms,解码需要0.29ms,完全可以在TMS320C6711 DSP处理器上实时实现多路语音编解码。