资源描述
武汉理工大学《信息处理课群综合训练与设计》课程设计
课程设计任务书
学生姓名: 专业班级:
指导教师: 徐文君 工作单位: 信息工程学院
题 目: 基于LMS 算法的多麦克风降噪
初始条件:
Matlab软件
设计任务:
给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。
(1)阅读参考资料和文献,明晰算法的计算过程,理解LMS算法基本过程;
(2)主麦克风录制的语音信号是LMSprimsp.wav,参考麦克风录制的参考噪声是LMSrefns.wav.用matlab指令读取;
(3)根据算法编写相应的MATLAB程序;
(4)算法仿真收敛以后,得到增强的语音信号;
(5)用matlab指令回放增强后的语音信号;
(6)分别对增强前后的语音信号作频谱分析。
时间安排:
序号
阶段内容
所需时间
1
搜集学习资料
2天
2
编写程序并仿真调试
4天
3
撰写报告
2天
4
答辩
1天
合 计
9天
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
摘 要
自适应滤波器实际是一种能够自动调节本身参数的特殊维纳滤波器,在设计时不需要事先知道关于输入信号和噪声的统计特性,它能够在自己的工作过程中逐渐“了解”或估计出所需要的统计特性,并自动调整自己的参数,以达到最佳滤波效果。而基于自适应滤波器的自适应噪声抵消法对含噪语音的增强效果最好。因为这种方法比其他方法多用了一个参考噪声作为辅助输入,从而获得了比较全面的关于噪声的信息,从而能得到更好的降噪效果。
本课设研究的主要内容是基于最小均方误差准则(LMS)自适应噪声抵消法对语音信号进行增强,并应用MATLAB仿真软件对研究的内容进行分析、讨论和验证。
关键词:自适应滤波器,最小均方误差法则,语音增强,LMS算法
Abstract
Adaptive filter is actually a way to automatically adjust itself, the specific param -eters of Wiener filter, the design does not require prior knowledge about the input sig -nal and noise statistics, it can work in their own process of gradually "learn" or estim -ated the statistical properties of the required and automatically adjust their parameters to achieve the best filtering effect. The adaptive filter based on adaptive noise cancelin -g speech enhancement of noisy best. Because this method more than the other metho -ds most used an auxiliary input referred noise, to obtain more comprehensive informa -formation on the noise can get a better noise reduction.
The main contents of this course design research is based on minimum mean squ -are error (LMS) adaptive noise cancellation method to enhance the speech signal,and the application of MATLAB simulation software of analysis, discussion and verificati -on.
KEY WORDS: Adaptive filter, Minimum mean square error ,LMS, Speech enhance
II
目录
1 语音增强概述 1
1.1语音增强的应用背景 1
1.2语音增强的研究历史 1
2 语音增强的方法 2
2.1 线性滤波法 2
2.2 梳状滤波法 2
2.3自相关法 3
2.4卡尔曼滤波法 3
2.5 自适应噪声抵消法 3
2.5.1自适应噪声抵消法的原理 4
2.5.2自适应噪声抵消法的应用 5
3自适应滤波 5
3.1自适应滤波概念 5
3.2自适应滤波器的组成 6
3.3基本自适应滤波器设计原则 7
3.4 自适应滤波器结构 7
4基于自适应滤波的信号增强 8
4.1基本维纳滤波器 8
4.2最陡下降法 10
4.3 LMS算法 11
5 LMS自适应滤波设计 13
5.1 LMS原理 13
5.2 LMS算法设计 15
6 MATLAB仿真分析 15
6.1实验程序设计 16
6.2实验结果 16
6.3实验结果分析 18
7 实验总结 18
8 参考文献 19
附录 MATLAB程序 20
武汉理工大学《信息处理课群综合训练与设计》课程设计
基于LMS 算法的多麦克风降噪
1 语音增强概述
1.1语音增强的应用背景
语音增强技术是指当语音信号被各种各样的噪声(包括语音)干扰、甚至淹没后,从噪声背景中提取、增强有用的语音信号,抑制、降低噪声干扰的技术。语音增强技术无论在日常生活中,还是在其它的领域,或者对语音信号处理技术本身来说都很有应用价值。
在日常生活中,我们经常会遇到在噪声干扰下进行语音通信的问题。如:使用设置在嘈杂的马路旁或市场内的公用电话,或在奔驰的汽车、火车里使用移动电话时,旁人的喧闹声、汽车和火车的轰鸣声等背景噪声都会干扰语音通讯的质量。对受话人来说,收听夹杂着各种干扰噪声的语音,至少会引起听觉疲劳,严重一点就会错误地识别或根本无法听清对方的语音。
通信或信息交换已成为人类社会存在的必要条件,正如衣食住行对人类是必要的一样。语音作为语言的声学体现,是人类交流信息最自然、最有效、最方便的手段之一。但目前语音识别系统大多都是在安静环境中工作的,在噪声环境中尤其是强噪声环境,语音识别系统的识别率将受到严重影响。
在上述情况下,必须加入语音增强系统,或者抑制背景噪声,以提高语音通信质量,或者作为预处理器,以提高语音处理系统的抗干扰能力,维持系统性能。因此,语音增强技术在实际中有重要价值。
1.2语音增强的研究历史
语音增强方法的研究始于20世纪70年代中期。随着数字信号处理理论的成熟,语音增强发展成为语音处理领域的一个重要分支。1978年,Lim和Oppenheim提出了语音增强的维纳滤波方法。1979年,Boll提出了谱相减方法来抑制噪声。1980年,Maulay和Malpass提出了软判决噪声抑制方法。1984年,Ephraim和Malah提出基于MMSE短时谱幅度估计的语音增强方法。1987年,Paliwal把卡尔曼滤波引入到语音增强领域。在近30年的研究中,各种语音增强的方法不断被提出,它奠定了语音增强理论的基础并使之逐渐走向成熟。
语音增强不但与语音信号处理理论有关,而且涉及到人的听觉感知和语音学。噪声来源众多,随应用场合而异,它们的特性也各不相同。即使在实验室仿真条件下,也难以找到一种通用的语音增强算法去适用各种噪声环境。所以必须针对不同的噪声,采取不同的语音增强对策。
2 语音增强的方法
现阶段已有许多语音增强的方法,最常见的有线性滤波法、梳状滤波法、自相关法、卡尔曼滤波法以及自适应噪声抵消法。
2.1 线性滤波法
线性滤波法主要是利用了语音的产生模型。对于加性稳态白噪声干扰的语音信号来说,语音的频谱可以根据语音的产生模型近似地用含噪语音来预测得到。而噪声频谱则用其期望值来近似。这样得到了语音和噪声近似的频谱后就可得到滤波器,即:
(2-1)
由此滤波器可使语音得到增强。线性滤波法不仅用到了噪声的统计知识,还用到了部分语音知识,但显然这些知识都是一种近似的代替。因此这种方法对提高语音信噪比和可懂度效果十分有限。特别是当信噪比较低时,对语音参数的预测误差明显增大,从而增强效果就不明显,并且当噪声不是白噪声时,按照语音的产生模型就很难准确预测语音参数。因此对有色噪声线性滤波方法就难以实现。
2.2 梳状滤波法
梳状滤波法是利用了语音的频谱特征,即谐波性。从众多语音的频谱结构可以看出:语音频谱特别是元音部分具有明显的谐波特征。当语音受到宽带噪声干扰时,各谐波的间隙之间则基本上都是噪声成分。只要知道基频就可以把谐波之间的噪声成分完全滤掉,这时滤波器只要设计成一组谐波频率处的带通滤波器即可。这个方法的主要缺点是必须己知通信语音的基频,而当信噪比较低时,基频的确定变得十分困难。
2.3自相关法
自相关法是利用语音时域小型特征,即相关性来增强语音信号的。在语音信号中,元音和浊音都具有明显的周期性,它的相关函数也具有周期性。而噪声一般是无规则的,它的自相关函数自R(0)开始很快地衰减,因此含噪语音的相关函数基本上就是噪声中语音的相关函数。由于语音的相关函数与语音信号本身具有相同的频率成分,只是其幅度近似为语音信号幅度的平方值,因此只要对含噪语音的自相关值作适当的处理就可从噪声中提取出语音信息。
自相关法的主要缺点是对语音信息的损伤较大。一方面语音信号毕竟与其自相关信号有很大的不同,虽然能用数学的方法加以校准,但这种校准也是有限的。另一方面,辅音的持续时间较短,且周期性又很差,进一步加深了语音的失真度。
2.4卡尔曼滤波法
为了获得较好的语音增强效果,必须尽可能的了解噪声和语音的信息,以卡尔曼滤波器为主体的语音增强方法正是建立在噪声模型和语音模型的基础上。噪声和语音都可以认为是一个由高斯白噪声驱动的、具有适当阶数的自回归AR模型。估计语音模型参数时,可把噪声的影响排除,从而较准确地估计出语音模型参数,由此参数就可以估计语音值。
一般看来,这种方法似乎是一个较好的语音增强方法,但实际也存在不少问题。
(1)语音和非语音的判别问题,当信噪比很低时判别非常困难。
(2)噪声必然会对语音参数的估计产生影响,特别是在信噪比较低时,语音估计参数就难以保证有足够的精确度。
(3)整个过程的计算复杂性也较大,难以实时实现。
2.5 自适应噪声抵消法
自适应噪声抵消法比其它方法多用了一个参考噪声作为辅助输入,从而获得了比较全面的关于噪声的信息,因而能得到更好的降噪效果。特别是在辅助输入噪声与语音中的噪声完全相关的情况下,自适应噪声抵消法能完全排除噪声的随机性,彻底地抵消语音中的噪声成分,从而无论在信噪比(SNR,Signal to Noise Ratio)方面还是在语音可懂度方面都能获得较大的提高。其工作原理实质上以均方误差或方差为最小准则,对噪声进行最优估计,然后从含噪声的语音中减去噪声达到降噪,提高信噪比,增强语音。本文主要采用自适应噪声抵消法对含噪语音信号去噪。
2.5.1自适应噪声抵消法的原理
一个最简单的自适应噪声抵消原理示意图如图6-1所示:
图6-1 自适应噪声抵消原理
图6-1中抵消器的“原始输入’’为,其中s为沿信道传递到传感器的信号,为一个与信号不相关的噪声,抵消器的“参考输入’’为噪声,与信号s不相关,却以某种未知的方式与噪声相关,由图可以看出噪声经自适应滤波器输出,再从原始输入中减去该输出,产生了系统的输出。
如果可以知道噪声传输到原始输入端和参考输入端的通道特性,则一般而言,就可以设计出能够将变成的固定滤波器。然后,从原始输入减去滤波器的输出y,则系统的输出就应当只有信号,然而,一般地,传输通道均是未知的,则使用固定参数滤波器就行不通。
在图6-1的系统中,参考输入经过了一个自适应滤波器的处理,此自适应滤波器通过某种由与输出有关的误差e所控制的最小均方算法自动调节自身的冲激响应,当采用了适应的算法,滤波器可以在变化的条件下进行工作,并且不断的调节自身,使误差信号e达到最小。
在这个系统中,我们的目的是在最小均方意义下,产生对信号最佳拟合的输出信号。我们将系统输出反馈回自适应滤波器,并按照某种自适应算法调节此滤波器,使系统输出的功率达到极小,即可实现这一目标。在这个自适应噪声抵消(ACN)系统中,系统输出被用做自适应过程的误差信号。
2.5.2自适应噪声抵消法的应用
自适应噪声抵消技术是通信、雷达、声纳、生物医学工程等研究领域受到重视的问题之一,如在语音通信系统中,必须抑制由于传输误差所引入的接收语音波形的冲激式失真干扰。利用由自适应滤波器所构成的自适应噪声干扰抵消系统,可以获得自动跟踪捕捉噪声干扰源和高信噪比的优异性能。在航空战斗环境中使用自适应噪声抵消器,可以大大改善航空通信质量。在标准计量信号发生器中使用自适应滤波器,可以将电源频率的干扰降低到100dB以下。利用自适应滤波器还可以有效地降低酒会宴会厅内的噪声。
3自适应滤波
3.1自适应滤波概念
从连续的(或离散的)输入信号中滤除噪声和干扰以提取有用信号的过程称为滤波。相应的装置称为滤波器。当滤波器的输出为输入的线性函数时,该滤波器称为线性滤波器,否则就称为非线性滤波器。根据滤波器的参数是随时间变化的,又可以将滤波器分为时变和非时变滤波器两种。
滤波器研究的一个基本课题就是:如何设计和制造最佳的或者是最优的滤波器。所谓最佳滤波器是指能够根据某一最佳准则进行滤波的滤波器。假定线性滤波器的输入为有用信号和噪声之和,两者均为广义平稳随机过程。维纳根据最小均方误差准则(滤波器的输出信号与需要信号之差的均方值最小),求得了最佳线性滤波器的参数,这种滤波器被成为维纳滤波器。
要实现维纳滤波,就要求:1、输入过程是广义平稳的;2、输入过程的统计特性是已知的。然而,由于输入过程取决于外界的信号、干扰环境,这种环境的统计特性常常是未知的、变化的,因而不能满足上述两个要求。这就促使人们研究自适应滤波器。
自适应滤波器在输入过程的统计特性位置时,或输入过程的统计特性变化时,能够调整自己的参数,以满足某种最佳准则的要求。当输入过程的统计特性未知时,自适应滤波器调整自己参数的过程称为“学习过程”。而当输入过程的统计特性变化时,自适应滤波器调整自己参数的过程为“跟踪过程”。
自适应滤波器包括自适应时域滤波器和自适应空域滤波器,它和信息论、检测与估计理论等密切相关,是近二十多年来发展起来的信息科学的一个重要分支。
3.2自适应滤波器的组成
自适应滤波器的组成如图3-1所示。它可分为可编程滤波器(滤波部分)及自适应算法(控制部分)两部分。可编程滤波器即参数可变的滤波器,自适应算法对其参数进行控制以实现最佳工作。
(a)开环算法 (b)闭环算法
图3-1 自适应滤波器的组成
自适应算法主要根据滤波器输入统计特性进行处理。它可能还与滤波器输出和其他参数有关。根据自适应算法是否与滤波器输出有关,可以将其分为开环算法和闭环算法两类。开环算法的控制输出仅取决于滤波器的输入和某些其他数据,但是不取决于滤波器的输出,如图3-1(a)所示。闭环算法的控制输出则是滤波器输入、滤波器输出以及某些其他输入的函数,如图3-1(b)所示。
闭环算法利用了输出反馈,它不但能在滤波器输入变化时保持最佳的输出,而且还能在某种程度上补偿滤波器元件参数的变化和误差以及运算误差。它的缺点是存在稳定性问题以及收敛速度不高。开环算法的优点是调整速度快,一般不存在稳定性问题。但是通常要求的计算量大且不能补偿元件参数误差及运算误差。因此,多数采用闭环算法。
3.3基本自适应滤波器设计原则
自适应滤波器通常由两部分构成,其一是滤波子系统,根据它所要处理的功能而往往有不同的结构形式。另一是自适应算法部分,用来调整滤波子系统结构的参数,或滤波系数。在自适应调整滤波系数的过程中,有不同的准则和算法。自适应滤波器含有两个过程,即自适应过程和滤波过程。前一过程的基本目标是调节滤波系数,使得有意义的目标函数或代价函数最小化,滤波器输出信号逐步逼近所期望的参考信号,由两者之间的误差信号驱动某种算法对滤波系数进行调整,使得滤波器处于最佳工作状态以实现滤波过程。所以自适应过程是一个闭合的反馈环,算法决定了这个闭合环路的自适应过程所需要的时间。但是,由于目标函数是输入信号,参考信号及输出信号的函数,即
(3-1)
因此目标函数必须具有以下两个性质:
非负性
(3-2)
最佳性
(3-3)
在自适应过程中,自适应算法逐步使目标函数最小化,最终使逼近于,滤波参数或权系数收敛于,这里是自适应滤波系数的最优解即维纳解。因此,自适应过程也是自适应滤波器的最佳线性估计的过程,既要估计滤波器能实现期望信号的整个过程,又要估计滤波权系数以进行有利于主要目标方向的调整。这些估计过程是以连续的时变形式进行的,这就是自适应滤波器需要有的自适应收敛过程。如何缩短自适应收敛过程所需要的收敛时间,这个与算法和结构有关的问题是人们一直重视研究的问题之一。
3.4 自适应滤波器结构
自适应滤波器利用前一时刻的结果,自动调节当前时刻的滤波器参数,以适应信号和噪声未知或随机变化的特性,得到有效的输出,主要由参数可调的
数字滤波器和自适应算法两部分组成,如图3-2所示
图3-2 自适应滤波器原理图
x(n)称为输入信号,y(n)称为输出信号,d(n)称为期望信号或者训练信号,e(n)为误差僖号,其中,e(n)=d(n)-y(n).自适应滤波器的系数(权值)根据误差信号e(n),通过一定的自适应算法不断的进行改变,以达到使输出信号y(n)最接近期望信号
图中参数可调的数字滤波器和自适应算法组成自适应滤波器。自适应滤波算法是滤波器系数权值更新的控制算法,根据输入信号与期望信号以及它们之间的误差信号,自适应滤波算法依据算法准则对滤波器的系数权值进行更新,使其能够使滤波器的输出趋向于期望信号。
4基于自适应滤波的信号增强
4.1基本维纳滤波器
基本维纳滤波就是用来解决从噪声中提取信号问题的一种滤波方法。它的解是以均方误差最小条件下所得到的系统的传递函数或单位样本响应的形式给出的,因此更常称这种系统为最佳线性过滤器或滤波器。设计维纳滤波器的过程就是寻求在最小均方误差下滤波器的单位样本响应或传递函数的表达式,其实质是解维纳-霍夫(Wiener-Hopf)方程。
如图4-1所示,有两个信号x(k)和y(k)同时加在滤波器上。典型地y(k)包含一个与x(k)相关地分量和另一个与x(k)不相关地分量。维纳滤波器则产生y(k)中与x(k)相关分量地最优估计,再从y(k)中减去它就得到e(k)。
图4-1 基本维纳滤波器
假定一个N个系数(权值)的FIR滤波器的结构,维纳滤波和原始信号y(k)之间的差信号e(k)为:
(4-1)
其中和w分别为输入信号矢量和权矢量,由下式
(4-2)
误差平方为:
(4-3)
对上式两边取期望得到均方误差(MSE),若输入x(k)与输出y(k)是联合平稳的,则:
(4-4)
其中代表期望,是的方差,是长度为N的互相关矢量,是N×N的自相关矩阵。一个MSE滤波系数的图形是碗形地,且只有唯一地底部,这个图称为性能曲面,它是非负的。性能曲面的梯度可由下式给出:
(4-5)
图4-2 基本维纳滤波器
每组系数w(i)(i=1,2,…N-1)对应曲面是一点,在曲面矢地最小点梯度为0,滤波权矢量达到最优,
(4-6)
即著名的维纳—霍夫曼方程的解。自适应滤波的任务是采用合适的算法来调节滤波权重,从而找到性能曲面地最优点。
维纳滤波的实际用途有限,若信号为非平稳的,则R和P是时变的,必需重复计算。对于实际的应用需要能够依次加入抽样点而得到的算法。自适应算法就是用于达到这个目的,而且不需显式计算R和P或进行矩阵求逆。
4.2最陡下降法
最陡下降法构成了不少算法,是LMS算法的基础。均方误差性能函数为:
(4-7)
对W求梯度为:
(4-8)
由式(4.7)可见,均方误差是权系数,…,的二次函数。当权矢量时,达到最小值,几何上这相当于超抛物面的“碗底"。在一般情况,滤波器在迭代过程中或当输入过程统计特性发生变化时,权矢量并不正好等于最佳值上。为了减小误差,一个显然的方法是找出该工作点处使均方误差减小速率最大的方向,亦即梯度的负方向,然后令权矢量W(n)沿着梯度的负方向修正。换句话说,如果在第n次迭代上权矢量取为,则第n+1次迭代时,加权系数应取为:
(4-9)
其中为的梯度,而为常数并称为步长因子或收敛因子。的表达式为:
(4-10)
或:
(4-11)
4.3 LMS算法
为了采取最陡下降法,需要知道均方误差性能函数的梯度的精度值,这就要求输入信号和需要信号平稳且其二阶统计特性为已知。这时可以根据输入信号和需要信号的采样值估计和,从而采用最陡下降法寻求。但当上述条件不具备时,我们只能把随机的平方误差当成是均方误差。对前者进行求梯度的运算,所得到的结果就取为关于后者的真实梯度的估计。这就是由Widrow等人提出的最小均方算法,即LMS算法。下面推导一下它的公式。在最陡下降法的式中,用梯度的估计代替梯度即得:
(4-12)
LMS算法采用如下的梯度估计值:
(4-13)
即它用瞬时输出误差功率的梯度作为均方误差梯度的估计值。换句话说,它用瞬时平方误差性能函数代替了均方误差性能函数)。
得:
(4-14)
(4-15)
可得:
(4-16)
将式(4-16)代入式(4-14)得:
(4-17)
LMS算法的递推式的最大优点是它没有交叉项,因而可以方便地写成纯量方程组:
,i=1,2,…,M (4-18)
(4-19)
下面,我们对LMS算法加权矢量的平均值的变化规律和加权矢量的随机起伏所形成的影响进行讨论。
1.算法加权矢量平均值的收敛条件为
当且仅当
时
(4-20)
因为实用时很少能够知道的各个特征值,实际上,我们有
(4-21)
其中为的迹,且
(4-22)
式中为输入信号的功率。这样,我们可以写出下列的收敛充分条件
(4-21)
2.LMS算法加权矢量平均值的过渡过程为
(4-22)
其中
(4-23)
为)的第分量。 即LMS算法的加权矢量分量的平均值按M个指数函数之和的规律,由初始值收敛到最佳值,而指数函数的时间常数与特征值成反比。取决于最慢的一个指数过程。值对的收敛过程有很大影响。必须选得满足收敛条件。
3.LMS算法计算步骤为:
初始化调整步长;
初始化滤波器抽头系数矩阵
(4-24)
计算n-1时刻的误差:
(4-25)
求出当前时刻的抽头系数
(4-26)
该步计算需要乘法N+1次,加法N次,当滤波器阶数为时,完成一次迭代计算,共需要次乘法,次加法。大多数信号处理器都适宜进行乘法累加的算术操作,这就使LMS算法更具吸引力。
5 LMS自适应滤波设计
5.1 LMS原理
记数字滤波器脉冲响应为:
h(k)=[h0(k) h1(k) … hn-1(k)]T (5-1)
输入采样信号为:
x(k)=[x(k) x(k-1) … x(k-n-1)] (5-2)
误差信号为:
(5-3)
(5-4)
优化过程就是最小化性能指标J(k),它是误差的平方和:
(5-5)
求使J(k)最小的系数向量h(k),即使J(k)对h(k)的导数为零,也就是:
(5-6)
把J(k)的表达式代入,得:
(5-7)
和
(5-8)
由此得出滤波器系数的最优向量:
(5-9)
这个表达式由输入信号自相关矩阵和输入信号与参考信号的相关矩阵组成,如下所示,维数都为(n,n):
(5-10)
(5-11)
系数最优向量也可以写成如下形式:
(5-12)
自相关和互相关矩阵的递归表达式如下:
(5-13)
(5-14)
把的递归表达式代入系数向量表达式,得:
(5-15)
即
(5-16)
考虑到
(5-17)
可以记
(5-18)
用前面得到的表达式求出,并代入上式:
(5-19)
或
(5-20)
则滤波器系数的递归关系式可以记作:
(5-21)
其中
(5-22)
e(k)表示先验误差。只因为它是由前一个采样时刻的系数算出的,在实际中,很多时候由于h(k)计算的复杂度而不能应用于实时控制。用δ,I代换,其中:δ为自适应梯度,I为辨识矩阵(n,n)。
这时
(5-23)
这时就是一个最小均方准则问题。
5.2 LMS算法设计
LMS算法是自适应滤波器中常用的一种算法,与维纳算法不同的是,其系统的系数随输入序列而改变。维纳算法中截取输入序列自相关函数的一段构造系统的最佳系数。而LMS算法则是对初始化的滤波器系数依据最小均方误差准则进行不断修正来实现的。因此,理论上讲LMS算法的性能在同等条件下要优于维纳算法,但是LMS算法是在一个初始化值得基础上进行逐步调整得到的,因此,在系统进入稳定之前有一个调整的时间,这个时间受到算法步长因子u的控制,在一定值范围内,增大u会减小调整时间,但超过这个值范围时系统不再收敛,u的最大取值为R的迹。权系数更新公式为:Wi+1=Wi+2ueiXi
依据上述算式,制定LMS滤波器设计实现方法为:
(1)设计滤波器的初始化权系数W(0)=0,收敛因子u;
(2)计算输入序列经过滤波器后的实际输出值:out(n)=WT(n)*X(n);
(3)计算估计误差e(n)=xd(n)-out(n);
(4)计算n+1阶的滤波器系数Wn+1=Wn+2*u*e(n)*X(n);
(4)重复(2)--(4)过程;
6 MATLAB仿真分析
语音增强的目的就是消除噪声以加强语音的通信质量。最常见的是基于自适应的噪声抵消法对语音进行增强。本节应用LMS自适应滤波算法并结合Matlab仿真软件对语音增强模型进行讨论和分析。
6.1实验程序设计
为了噪声的精确对照,本程序采用有用信号叠加系统自生成高斯噪声信号得到含噪信号,利用加高斯噪声作为对照。可用Matlab控制生成加噪后和噪声的wav文件写入磁盘。
程序按照上一章算法设计过程进行设计,设计过程中考虑以下几点:
(1)由于滤波器的权系数必须是依据输入序列来更新的,当输入序列未达到X(N)时,由于部分存储器中没有数值或者造成滤波器输出误差只有longth- N个,系数更新达不到要求,因此要对输入前的存储器进行赋零初始化。
(2)由于自适应滤波器有一个调整时间,因此序列的长度length必须足够长,至少要大于滤波器的激励时间。否则滤波器输出都是无效数据,滤波器的设计也没有意义。
(3)同等阶数条件下,LMS自适应自适应滤波器与维纳滤波器的效果相比,理论上应该自适应滤波器的效果较好,因为它是自适应的,在程序上表现为out的输出在lms算法中是在循环程序内实现的。
6.2实验结果
收敛因子对程序的运行结果至关重要,滤波器阶数也有一定的影响。针对不同的信号需要用到不同的收敛因子。在程序经过不断调试后,确定滤波器阶数为20,收敛因子为0.05。
Matlab信号波形图、频谱分析图,期望信号与频谱分别如图6-1,6-2和6-3所示。
图6-1 信号波形图
图6-2 频谱分析图
图6-3 期望信号与频谱
6.3实验结果分析
在程序运行的开始播放了加噪的语音信号,噪音的声音很大,在程序结束的时候,播放滤波后的输出信号,可以清楚的听到人声,噪音减小了好多。达到了预期的目的
从图6-2的频谱分析图上来看,输出信号的频谱轮廓与原始信号的频谱轮廓相似,只是幅度平均值不一样,从图上来看,噪声信号的幅度值变化不大,主要集中在100左右,原始信号的幅度平均值大概等于噪声信号的平均幅度加上输出信号的平均幅度。通过输出信号的试听和频谱的分析,可以发现利用LMS 算法的多麦克风降噪的目的达到了。
从调试过程中获得了改善LMS滤波器性能的方法:在满足收敛速度要求的条件下,适当的降低收敛因子,提高滤波器的阶数可以改善滤波器输出波的平滑型,但减小收敛因子可能会在很长一段时间产生一个较大的均方误差,所以收敛速度和滤波效果有一个矛盾,二者必须折衷选择。提高滤波器的阶数也可以改善滤波效果,但需要提高存储空间。
7 实验总结
在课程设计的过程中,通过查阅我明白了基于LSM多麦克风语音信号降噪的过程以及LSM的原理及实现方法,通过MATLAB编程及仿真,实现了语音信号的降噪,并且从不清楚的语音信号中通过LSM降噪得到了清晰的语音信号,充分体会了基于LSM多麦克风语音信号降噪这一技术的作用。同时,也学会了对语音信号进行频谱分析,以及进一步熟悉了MATLAB的使用过程,加深了 对这一软件的了解,提高了自己动手的能力。
在弄懂了的LMS算法的基本原理后,我尝试自己写程序,但写出的程序错误百出,逻辑不够严密,于是参考学习了其他的资料,对程序错误的调试耗费了我很长时间,通过网络资料和书本搜罗了不少细节的资料,使我对Matlab编程的了解提高了一个新的层次。全部程序编完后,我已对算法掌握的非常熟练,甚至觉得曾经认为很难的原理现在已经变得很简单,这便是掌握知识的很高的境界了吧。有辛酸,有开心,这次课设我真的受益匪浅。
不足之处是输出的信号时域图和频域图和期望的仍有差别,即少部分噪声仍存在,原因是录音文件长度较短,采样序列长度较短导致迭代次数较少,没有真正得到最佳的迭代结果。但是基本的轮廓还是拟合的很一致,录音长度再增加的话,结果会更好。
感谢老师的指导和同学们的帮助,我会在学习的道路上走得更远。
8 参考文献
[1]姚天任,数字语音处理,武汉华中科技大学出版社,2007.
[2]邹国良,自适应滤波理论及应用[M],河北大学出版社,2007.
[3]胡广传,数字信号处理理论、算法与实现,北京清华大学出版社,2007.
[4]葛良、陶智,基于自适应滤波的语音增强算法.江苏:苏州大学学报,2006.
[5]袁俊泉,MATLAB信号处理.清华大学出版社,2002.5.
[6]赵力,语音信号处理,北京机械工业出版社,2003.
[7]韩利竹,王华.MATLAB电子仿真与应用.北京国防工业出版社,2003.
[8] 徐明远,刘增力.MATLAB仿真在信号处理中的应用[M].西安:电子科技大学出版社,2007
[9] 郭仕剑等.MATLAB7.X数字信号处理.人民邮电出版社[M],2006
[10] 钟麟,王峰.MATLAB仿真技术与应用教程[M].国防工业出版社,2004
附录 Matlab程序
clear all ;
close all;
[primary,Fs,nbits] = wavread('voice.wav'); %加噪声前信号
Noise=0.2*randn(length(primary),1); %生成高斯白噪声
s=primary+Noise; %把噪声添加进原信号
sound(s); %播放加噪信号
wavwrite(s,Fs,'D:\MATLAB7\work\noiseadded.wav')
展开阅读全文