现实的语音通信可能发生在嘈杂的噪声环境中,例如工厂中的手机通讯会受到机器轰鸣声的影响;火车驾驶室中的语音通信会受到电机运行和铁轨碰撞声的干扰。噪声的统计特性跟现场密切相关,即使同一场合的噪声统计特性也可能会随时间发生某种变化,这都要求消噪设备必须具有噪声跟踪的自适应能力。自适应信号处理的理论经过40多年的发展和完善,已经在许多领域中得到应用[1,2]。本文将自适应信号处理技术应用于语音通信的噪声对消,通过仿真研究和样机实验对软硬件参数进行了优化设计,研制了一种适用于手机麦克风、火车驾驶室中使用的自适应对消系统。
1噪声对消原理
自适应噪声对消系统的原理如图1所示。他有两个输入:原始输入和参考输入,参考输入为噪声源ν1(n),原始输入为受噪声污染的信号x(n)=s(n)+ν0(n)。当噪声成分ν0(n)与信号s(n)不相关、与噪声源ν1(n)相关时,自适应滤波器AF可以根据误差信号ej来调整自身滤波器的系数,使其输出yj趋于原始输入中的ν0(n),从而使误差信号0趋于信号s(n)。
最小均方(LMS)算法以其算法简单、运算量小、实现容易等优点在众多自适应信号处理算法中占有举足轻重的地位[3,4],本文的系统设计采用递推方法实现LMS算法。
自适应滤波器AF在j时刻的输出表示为:
这里的Wj为j时刻的滤波器系数,Xj为j时刻的滤波器输入。下一时刻(j+1)的权系数要根据当前时刻j的误差信号ej进行调整,调整的递推算法为:
其中μ为步长因子,他影响系统的收敛性,系统收敛的充分条件为:
μ值要针对语音通信的实际折衷考虑:μ太小时,权系数收敛慢,不能适应噪声不平稳的场合;μ太大时,对消效果差,甚至引起系统发散。
2 系统仿真
2.1声音样本的获取
Matlab 7.0的信号处理工具箱提供了从计算机标准音频设备实时读取音频数据的Simulink模块--From Wave Device,如图2所示。
图2中的Signal To workspace将采集的音频数据保存到Matlab的工作空间。作为示例,本文采集了约0.3 s的人声作为原始信号,采样率为16 kHz,其时域波形如图3所示。
2.2 步长因子优化
用250 Hz的正弦波模拟现场噪声,考虑到现场噪声情况,噪声幅度的取值应与之相当,这里取0.01。将声音样本和噪声叠加作为系统的原始输入,如图4所示。
取μ=0.5,采用128阶的自适应滤波器进行语音消噪,由图5可以看出经过0.03 s对消系统的输出与原始信号相似。
自适应滤波器的Wj,需要迭代多次才能达到理想值即E[ej2]E趋势于[Eej2)min需要一个过程,鉴于步长因而会显著影响系统的对消效果,下面重点考察了μ取不同时的学习曲线,如图所示。
由图6可以看出:
(1)随着μ值变大,系统的学习速度明显变快;
(2)信号非平稳时,过大的μ值容易引起系统失调,0.1处的均方误差明显变大。因而μ的取值应当折衷考率:一方面当噪声非平稳时,系统的学习时间应小于一个音的平稳时间(约0.1 s);另一方面,尽量减小系统失调。细对比可以发现:μ=0.25时的学习时间已经小于一个节的平稳时间,这比μ=0.1时已经大大改善,所以将长因子取为0.25就可以满足系统需要。
3 系统实现
3.1 电路设计
自适应对消系统的信号处理器采用TI公司的定点DSP-TMS320VC5509,其内核时钟可以稳定工作在200 MHz,完成两次乘累加(MAC)运算仅需要一个指令周期(5 ns)。
系统有两个麦克风通道,其中一个用于采集原输入,另一个用于采集参考输入。两通道的电路形式完全一致,信号调理与模数转换电路如图7所示。其中16 b Codec AD73311通过同步串行接口与DSP相连。AD73311的参考输出经过AD8058的Buffer 作为麦克风的直流偏置;驻极体麦克风信号采用交流耦合输入,放大电路的增益为50,以适应模数转换器的动态范围。AD733ll采集数据会周期性地触发接收中断,通知DSP接收数据并做相应处理。
3.2软件设计
自适应滤波对系统的实时性要求很高,因而将权系数递推、滤波、噪声对消放在采样中断服务程序中完成。软件设计采用了DSP专门用于自适应滤波的指令 LMS,该指令可以在1个指令周期内完成2个并行操作:乘累加(MAC)和权系数递推。该指令大大提高了代码效率,增强了自适应信号处理的实时性。
TI-DSP开发环境CCS5000提供了相应的DSP库Dsplib的支持,库中包含自适应滤波在内的常规数字信号处理函数,其中绝大部分为汇编代码,代码效率高。库函数提供C语言函数原型声明,允许C程序直接访问,降低了数字信号处理编程的难度。
自适应滤波的库函数对缓冲区首地址的对齐要求严格,软件用伪语句"#pragma DATA SECTION()"对cmd文件的存储器分配进行了特定的约束,从而更加合理地利用DSP芯片的运算资源。
4结 语
经过反复实验,样机已经能在特定的安装条件下解决语音通信中的去噪问题。
为保证两通道的噪声成分具有足够的相关性,麦克风的安装间距应小于20 cm,说话人(信号)距离原始输入端应小于5 cm,否则系统输出会出现大量未抵销的不相关的噪声分量。
实验中发现,增加原始输入端的延迟有利于改善噪声的对消效果。经分析,这与自适应滤波器的工作状态有关,若参考输入端的噪声超前于原始输入信号(不同步),自适应滤波器实际上是一个预测器,预测的难度比滤波要高些且不容易实现。比较简单的解决方法是对原始输入端增加软件延迟,从而提高了对消系统对噪声源位置的适应能力。