语音的数字通信无论在可靠性、抗干扰能力、保密性还是价格方面都远优于模拟语音信号,但这是以信道占用宽频带宽为代价的。因此为了减少语音信号所占用的带宽或存储空间,就必须对数字语音信号进行压缩编码。
一个优秀的语音压缩系统要求能够在软硬件资源占用比例低和压缩编解码时间短的同时可以实现多通道语音实时压缩。目前,G.729A算法多是在TI的5000系列DSP上实现单通道或双通道语音压缩,而本设计在现有的TMS320C6711系列DSP平台上使用最少的硬件资源和软件开销,压缩编码解码时间,实现了多通道语音实时压缩解压。
选择语音压缩编码方案
在评价一个语音压缩编码方案时,一般从四个方面考虑:质量、速率、复杂度和延时。目前 ITU-U已制定的G系列标准如表1所示。
ITU-U已制定的G系列标准
本系统需要的是一种低码率、语音质量良好、低时延、较低算法复杂度的压缩方案,从表1中可以看出,从低码率考虑就可以排除G.711、 G.721、G.722和G.723。G.726在速率为16Kb/s 时,语音质量为2.0,这显然是不可以接受的。在余下的G.723.1、G.
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处理器上实时实现多路语音编解码。