基于 ADI ADSP-BF537的语音处理单元设计
一、G729语音编码算法介绍
目前国内数字语音处理产品大多采用专用芯片对语音数据进行编解码,导致硬件成本较高。同时,如果后续开发过程中需要对平台升级,由于硬件平台固定的缘故,必须重新进行硬件规划和设计。随着对语音理论的深入研究,市场上已开发出多种关于语音编解码的算法。其中,G729是由美国、法国、日本和加拿大的几家著名国际电信实体联合开发的。它需要符合一些严格的要求,比如在良好的信道条件下要达到长话质量,在有随机比特误码、发生帧丢失和多次转接等情况下要有很好的稳健性等。
这种语音压缩算法可以应用在很广泛的领域中,包括IP电话、无线通信、数字卫星系统和数字专用线路。虽然G729语音编码标准已公布多年,许多国家和公司的语音和声学实验室正积极从事这方面的研究,但投入实际应用的硬件编解码器并不多见。将G729语音编码技术和DSP器件有效结合,优化算法结构,在程序结构上采用汇编与C混合优化的方式,可以充分发挥DSP在数字处理方面的优势,可实现良好的语音处理功能,达到专用芯片性能。
二、语音编码选择
语音通信设备的核心功能就是语音通话,语音编码的选择对话音质量和话音信号传输系统的设计有较大影响。数字化的语音编码主要分为波形编码和参量编码两大类。波形编码发展比较早,应用广泛、语音还原度较好。比如64kbps的G.711就是长途电话所采用的编码标准;比如CVSD编码具有良好的抗干扰特性,在传输误码率较高的情况下也能还原话音,但其话音质量一般。
在1980年以后,由于对语音理论研究的突破以及高速DSP器件的广泛应用,参量编码逐步进入实用阶段。参量编码器的模型是建立在人的发生器官的生理结构的基础上,和原始语音的波形没有直接的关系,一般先求出声道模型的特征参量,然后改变激励参量,使原始信号和重构信号之间的相似性最大。由于只需传输语音特征参量就能重构话音,所以编码速率低是参量编码的最大优点,目前广泛应用的参量编码:其速率一般在2.4kpbs到16kbps之间。常用语音编码的主要特性如下图(图1)所示。
序号 | 标准 | 比特率 (kbps) |
语音质量 (MOS) |
算法复杂度 (MIPS) |
应用领域 |
1 | G.711 | 64 | 4.0+ | <<1 | 公共交换电话网 |
2 | G.729A | 8 | 4.0 | 12 | |
3 | G.723.1 | 5.3/6.3 | 3.7/3.9 | 11 | |
4 | GSM-EFR | 12.2 | 4.26 | 14 | 数字蜂窝网 |
5 | IS-893, cdma2000 |
8.5 | 3.93 | 18 |
根据语音质量、编码速率、复杂程度、应用是否广泛以及软件包的授权等方面综合考虑,采用G.729A编码作为项目的语音编码,便于项目各功能和指标的实现。该编码速率为8kbps,每10ms产生一个语音帧,语音质量与64kbps的G.711(长途电话的标准编码)话音质量相当,能较准确地识别出发话人。
三、核心处理器选型
根据G729协议的算法运行要求和系统功能要求,处理器主要用于控制和算法计算。控制操作主要有外部语音编解码芯片控制、语音收发状态控制这两种,比较简单。涉及音频信号处理的算法就比较复杂,需进行高密度的数值运算,经过比较,并结合实际情况,选用DSP类的处理器比较合适。
BF537是ADI公司基于Blackfin处理器的高性能低功耗的DSP芯片②而推出的。其接口丰富,具有视频、图像、音频、语音和数据通信的数字信号处理和控制功能,可广泛应用于数字广播、流媒体和通信等系统中。下图(图2)是ADSP-BF537芯片的内部构造图。
BF537的内核Blackfin,其工作频率为600MHz(核时钟),在BF537内部集成了基于MSA(Micro Signal Architecture)的16/32位嵌入式处理器,可支持32位RISC指令集。在内核中,拥有2个16位的乘法累加器(MAC)、2个40位的算术逻辑单元(ALU)、4个8位视频ALU和1个40位单桶形移位器。 BF537芯片的存储容量为132kB,可通过外部存储控制器提供与8位或16位的SDRAM或异步存储器的支持,以加大存储容量。内核的供电电压范围为0.8V~1.2V,I/O的供电电压范围为2.5V~3.3V。
BF537芯片所支持的外设包括:
- IEEE802-3兼容的10/100以太网MAC以及CAN2.0接口;
- 并行外设接口(PPI),该接口支持ITU-R656视频数据格式;
- 两个双通道全双工的同步串行接口(SPORT),支持8个立体声I2S通道;
- 12个外设DMA,其中2个被以太网MAC控制;
- 两个带外部请求的存储器到存储器DMA(MDMA);
- 有32个中断输入的事件处理器;
- 1个SPI兼容端口,两个支持IrDA的通用串行口,1个双线接口(TWI)控制器;
- 8个支持PWM的32位定时/计数器;
- 实时时钟模块(RTC)和Watch Dog定时器;
- 32位的内核定时器;
- 48个GPIO。
由于BF537芯片内部集成了大量各功能模块,通过对BF537芯片内部进行编程,可通过编程实现逻辑控制和对端口的控制,从而可实现对数字音频信号的采集、解码和处理。
该芯片为浮点处理器,能简化运算指令并保持较好的运算精度,非常适合对语音信号的算法处理,其能力及内部存储器等资源均能满足需求。以该芯片为核心,按单芯片最小系统架构来设计语音处理单元,既简单又适用。
四、硬件设计
4.1 电路主要组成
系统的语音处理、组网和操作控制等功能主要由语音编码芯片、DSP等部分组成。系统的硬件逻辑框图参考下图(图3)。
4.2 电路工作原理
系统主要由DSP以及外部相连的音频编解码芯片和音频放大器组成,具有功能齐全、集成度高、功耗低、结构简单的特点。
语音的采集路径的工作过程是:将输入的模拟语音信号经阻抗匹配的低通电路输入到音频编解码芯片内部,经放大ADC变换后,由软件对数字语音信号进行语音增强、语音端点检测、G.729A编码等处理。系统具有通话侧音功能,由音频编解码芯片内部寄存器控制,经放大后直接路由到音频编解码芯片的输出端,发话人可直接收听到自己发出的话音。
语音的播放路径的工作过程是:将数字语音信号经软件G.729A解码、语音融合、频率补偿、带通滤波器等算法处理后,输入到音频编解码芯片内部,经DAC变换,平滑滤波,放大和音频功率放大后,将恢复的语音模拟信号输出。
五、软件设计
在实现算法时,为了使程序结构清晰,利于修改和调试,编程中采用模块化方法,将复杂的算法分解为各个单独的程序模块分别实现,使编程变得相对容易, 同时也易于在调试中发现和改正错误。程序中定时器每10ms产生一次中断, 中断服务程序就向串口缓冲接收寄存器DDR写入一帧数据或从发送寄存器DXR取出一帧语音信号。整个程序模块的划分和流程如下图(图4) 所示。
六、MATLAB软件仿真
6.1 频响指标仿真
为有效抑制300~3500Hz的带外噪声,音频信号需要经高阶带通滤波器处理后输出。选用129阶高阶hammming带通滤波器。采用奇数阶,可以消除相位失真减少对信号的失真度的影响。较高的阶数,滤波器的滚降陡峭,获取接近矩形的理想带通曲线。该型滤波器的阻带衰减为55dB,有效消除带外噪声。该滤波器的仿真特性,如下图(图5) 所示。
输入10mV的白噪声,其经带通滤波器前后的情况如下图(图6)所示,红色部分信号的带外噪声明显被滤除。
6.2 输出音频指标仿真
通信系统语音频段在300Hz~3500Hz范围内,数字化采样频率为8kHz,对高频段信号的衰减较大。信号按如下路径:
信号源输出5mV(频率300Hz~3500Hz,按100Hz步进)à放大àADC变换àG.729A编码à传输系统àG.729A解码àDAC变换à音频功放à音频幅度测试。
采取频率补偿算法(例如预加重等)对高频信号幅度进行一定提升,可以将频响指标提升2~3dB。还是输入10mV的白噪声,先通过频率补偿算法提升高频信号,再通过带通滤波器,采用MATLAB仿真可以见到下图(图7)的效果,在300Hz~3500Hz频带范围内,红色和黄色曲线重合,在2000Hz以后信号幅度比蓝色曲线有明显提升。
系统将数字语音用频率补偿处理,经带通滤波后再输出,在300Hz~3500Hz范围内,频响指标≤3dB,满足一般系统设计要求。
七、总结
本文提出了基于ADSP-BF537的数字音频信号处理系统的基本构架,并通过MATLAB软件仿真验证了G729A编码在语音处理中的优势。同时,在以ADSP-BF537为核心处理器的语音系统中,工程师可以根据实际项目需求修改不同的语音编解码算法,使得平台的通用化程度更高。同时,在此基础上还可进一步扩展,比如增加射频前端收发单元,可实现对语音信号的无线传输,以此构成完整的数字全双工或半双工语音通信系统,具有广阔的应用前景和现实意义。
参考资料:
王 帆, 周群彪等 G729语音编解码实现方案的研究及基于DSP的实现 [J]. 四川大学学报:自然科学版,2007,44(4)