作者:徐泽琨 黄明 彭召敏 马栋梁 李国诚 来源:《工业技术创新》2018年第03期
摘 要:从最小均方算法LMS (Least Mean Square)基本原理出发,利用该原理实现语音信号消噪。研究了LMS算法不同步长对处理结果的影响,提出了LMS算法,设计了滤波器,实现了消噪的数字设计。理论分析及实验结果表明,在合适的步长下,采用LMS算法的自适应滤波器,可以实现对含有噪声干扰的语音信号中恢复实际信号,且实验结果具有良好的收敛性、较小的稳态误差。算法和设计对同行有参考和借鉴作用。 关键词:最小均方算法(LMS);语音消噪;自适应滤波 中图分类号:TP311 文献标识码:A
文章编号:2095-8412(2018)03-052-06 引言
在日常生活里,语音信号在传递过程中都会混有一定的随机噪声。一般信号属于窄带,噪声则属于宽带,且通常会覆盖语音信号频率范围。这就需要滤波,一般是尽量滤除语音信号外的噪声信号。语音消噪技术与通话质量息息相关,应用在不同的环境,噪声差异巨大。针对特定环境下消噪需求而设计的固定滤波器,工程量大且不灵活;而在已知信号频谱范围时,在众多环境下能自适应消除噪声的滤波器设计则更具有使用价值。
本文基于最小均方(Least Means Square,LMS)算法,设计了语音消噪技术,实现了对语音噪声的有效处理。通过Matlab仿真设计了自适应滤波器,解决在不同环境下语音消噪的问题。自适应滤波器区别于固定滤波器的特征就在于它能够在未知环境中,通过系统训练,跟踪输入信号的时域特征[1]。自适应的特征可以滤除噪声。 1 算法原理
最有代表性的两类自适应算法:一是最小均方(LMS)算法;二是最小二乘(Recursive LeastSquares,RLS)算法。基于减小计算复杂度考虑,该研究采用简洁有效的LMS算法,考虑图l所示的线性离散时间滤波器。滤波器输入由无穷时间序列{(0),x(1)…,…}组成。滤波器输入为无穷时间序列x(n),y(n)=x(n)h(n)为滤波器在离散时间n时的输出,同时可以表示为已期望响应d(n)的估计值。d(n)与y(n)之差为估计误差e(n),即e(n)=d(n)-y(n)[2]。
自适应滤波分为两个部分,第一部分是基本滤波,第二部分根据e(n)来调整滤波器系数h(n)。通过多次调整使误差e(n)无限趋近于0。 1.1 LMS算法 算法基本形式是设
x(n)=x(n),x(n-1),…x(n-M+1)]T (1)
为输入样本向量。定义权向量h(n)为 h(n)=[h0(n),h1(n),…hM1(n)]T (2) 基本算法:
(1)计算第n次的滤波结果 y(n)= xT(n)h*= hHx(n) (3)
(2)根据第n-1次的权系数来更新第n次的权系数
y(n)=xT(n)h*=hHx(n)(4)
设μ(n)为第n次调整的步长因子,μ是一个控制自适应速度与稳定性的增益常数[3],之后会讨论步长因子μ 的取值对LMS算法收敛性能的影响。在这里提前给出保证算法收敛时的取值范围,即
LMS算法进行梯度估计的方法是以误差信号一次迭代的瞬时平方值代替其均方值4,并以此估计。
为了使Jn最小,则▽Jn的所有元素必须同时为0,则
式(9)第一个等号所示的算法就是LMS算法,而第二个等號则提供了一个简易的自适应求解计算过程。 1.2 小结
在实际系统中要实现LMS算法并不需要进行复杂的运算,其优点就在于它的简易性和高效性。每一个梯度向量的分量均由单个样本数据计算得到,不需要改动滤波器权向量。而梯度向量的分量则包含了一个很大的噪声成分。但是在自适应过程中,从某种意义上讲,过程的进行起着一个低通滤波的作用,因而随着时间的流逝,这个噪声是会衰减的[5]。 2 语音去噪仿真验证 2.1 采用单频周期信号仿真
根据上述算法,采用Matlab进行程序设计仿真实验。人耳能听到的频率范围在20Hz~20kHz之间,所以使用周期400Hz正弦波信号来模拟窄宽信号,使用一组15Hz低频信号和20kHz高频信号来模拟噪声带宽的下限频率和上限频率,通过自适应算法对被噪音影响的正弦信号波进行恢复处理。
假设语音信号频率为400Hz,混合噪声为15Hz+20kHz,μ取1/1 024。
仿真结果如图2所示。(1)为原始400Hz语音信号,x=cos(2π×400t);(2)为混合噪声的干扰信号,s=cos(2π×15 t)+cos(2π× 20000t);(3)为叠加干扰后的语音信号s’;(4)为滤除干扰后的语音信号s'';(5)为语音信号的频谱图;(6)为滤除干扰后的语音信号的频谱图。
LMS算法处理前后结果对比如表1所示。 2.2 采用多频周期信号仿真
在实际生活中语音信号是具有多频成分的(即视作不同频率、幅度和相位的正弦波信号相互叠加),所以在本次实验中,语音信号由两个正弦波信号叠加而成。通过自适应算法对被噪音影响的正弦信号波进行恢复处理。
假设语音信号频率为300Hz+400Hz,混合噪声为15Hz+20kHz, μ取1/1 024. 仿真结果如图3所示。(1)为原始多频语音信号x=cos(2π×400t)+cos
(2π×300t+0.25π);(2)为混合噪声的干扰信号,s=cos(2π×15t)+cos(2π×20000t);(3)为叠加干扰后的语音信号s’;(4)为滤除干扰后的语音信号s'';(5)为语音信号的频谱图;(6)为滤除干扰后的语音信号的频谱图。
LMS算法处理前后结果对比如表2所示。 2.3 小结
由图2、图3、表1和表2可以看出,当环境噪声频率发生改变时,无论是低频还是高频,均能完成对干扰信号的滤波,且效果明显。说明自适应滤波器可以满足不同环境下尽量消除噪声的要求。
3 算法中可调参数μ对 LMS算法性能的影响. 3.1 理论分析
在实际应用中,不仅要考虑消除噪声的效果,也要在尽量消除噪声的同时考虑自适应时间的长短。参数μ直接影响LMS算法的收敛速度和稳态误差。
根据式(9),步长因子μ首先要满足LMS算法的收敛条件,以保证完成对噪声尽量滤除,其次,步长因子μ决定着LMS算法的收敛速度。自适应时间的长短与LMS算法的收敛速度正相关。
本仿真实验在保持窄宽信号频率不变的同时,通过改变步长因子μ的大小,使用迭代次数的多少来模拟LMS算法的收敛速度。 3.2 参数μ的仿真验证 3.2.1 测试案例
(1)案例1。假设语音信号频率为400Hz,混合噪声为15Hz+20kHz,μ取1/1024。仿真结果如图4所示。滤波效果良好,能满足尽量消除噪声的需求,迭代次数为656次。
(2)案例2。假设语音信号频率为400Hz,混合噪声为15Hz+20kHz,μ取1/512。仿真结果如图5所示。滤波效果较好,基本满足尽量消除噪声的需求,迭代次数为604次。 (3)案例3。假设语音信号频率为400Hz,混合噪声为15Hz+20kHz,μ取1/256。仿真结果如图6所示。滤波效果很差,不能满足尽量消除噪声的需求,迭代次数为15次。 3.2.2 小结
综合章节3.2.1的三个仿真,可以得出不同 μ取值的LMS算法处理结果对比,如表3所示。可以看出,当噪声频率不变时,若只改变滤波器的迭代步长μ,滤波结果受到了一定的影响。当μ由1/1024增大到1/512时,预测信号基本上接近输入信号,但效果不好。当μ由1/512增大到1/256时,滤波器的预测信号出现了巨大失真,且不能满足滤波要求。在选择步长时,稳态误差和收敛速度之间是相互矛盾的:步长越小,稳态误差越小,收敛速度慢;步长越大,收敛速度越快,收敛后的稳态误差也越大[6]。 3.3 收敛速度和信噪比的取舍原则
在保持窄宽信号频率不变的同时,继续减小μ,并记录收敛后信噪比,如图7所示。当步长因子μ逐渐减小时,收敛速度增快。当步长因子μ达到1/1024时,稳态误差逐渐稳定。在本次设计中,步长因子μ取1/512时可以基本满足消噪需求。但是在实际应用中,读者在设计自适應滤波器时,需要根据这种特性合理选择参数μ,以达到相对良好的收敛性和较小的稳态误差[7,8]。 4 结论
本文基于LMS算法,给出了一种适用范围较广、比较有效的语音自适应消噪的设计实现方法。在案例实现的讨论中,提出如何选择合理的步长因子μ,以平衡稳态误差和收敛速度。设计出的自适应滤波器具有良好的收敛性、较小的稳态误差、良好的适应性。本设计对语音消噪具有一定的参考价值。 参考文献
[1]程佩青.数字信号处理教程[M]北京:清华大学出版社,2007 [2]张贤达.现代信号处理:第3版[M]北京:清华大学出版社,2015 [3]李明阳,柏鹏.基于FPGA的自适应谱线增强系统设计[J]现代电 子技术,2010,33(10):118-121
[4]袁鹏飞,杨燕翔,廖国军,等.语音去噪LMS自适应滤波器算法的 改进[J]电子设计工程,2011,19(1): 80-83.
[5]杨波,林长吉,李学忠.自适应井下信号补偿器[J].石油管材与仪器,2002, 16(5): 9-12+60
[6] 茅正冲,涂文辉.改进自适应对消算法在工业噪声处理中的应用[J]传感器与微系统,2017,36(3): 157-160.
[7] 薛年喜MATLAB在数字信号处理中的应用[M].北京:清华大学出版社,2010 [8] 陈桂明,张明照,戚红雨应用MATLAB语言处理数字信号与数字图像[M]北京:科学出版社,2000
因篇幅问题不能全部显示,请点此查看更多更全内容