1、信息处理课设绝对正确信息处理课群综合训练与设计任务书学生姓名: 专业班级: 通信1304 指导教师: 工作单位: 信息学院 题 目: 基于RLS 算法的多麦克风降噪 初始条件:Matlab软件、信号与系统、通信处理等要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计任务:给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。设计的要求:(1)阅读参考资料和文献,明晰算法的计算过程,理解RLS算法基本过程;(2)主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav
2、,用matlab指令读取;(3)根据算法编写相应的MATLAB程序;(4)算法仿真收敛以后,得到增强的语音信号;(5)用matlab指令回放增强后的语音信号;(6)分别对增强前后的语音信号作频谱分析。参考书:1 刘泉,信号与系统, 高等教育出版社, 2006年。2 刘泉,数字信号处理,电子工业出版社,2008年。3 Edward W. Kamen, Bonnie S.Heck 编,信号与系统基础应用Web 和MATLAB(第二版),科学出版社,2002 年。时间安排:序号设 计 内 容所用时间1根据设计任务,分析电路原理,确定实验方案2天2根据实验条件进行电路的测试,并对结果进行分析7天3撰写
3、课程设计报告1天合 计2周指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目 录 摘要 IAbstract II1 绪论 12 信号处理基本原理 22.1自适应滤波器组成 22.2自适应滤波原理 22.3RLS算法基本原理 33 方案设计 63.1最小二乘算法RLS算法实现 63.2 RLS算法程序程序设计 84 RLS算法滤波方案实现 94.1信号的获取 94.2读取语音文件 94.3RLS算法实现 94.4提取语音信号 105仿真结果与分析 135.1原始音频信号 135.2麦克风主语音信号 145.3噪声语音信号 155.4降噪后语音信号 165.5信号处理分析 175.
4、5.1原始语音信号与主语音信号分析 175.5.2主语音信号与降噪后语音信号分析 185.5.3原始语音信号与降噪后语音信号分析 196心得体会 20参考文献 21附录 源程序 22摘要本次课程设计要求使用MATLAB软件,运用自适应滤波中的RLS算法实现麦克风降噪。旨在培养我们使用计算机处理庞大的数据的能力和熟悉MATLAB在信息技术中的应用。自适应滤波器是统计信号处理的一个重要组成部分。在实际应用中,有可能没有足够的信息来设计滤波器,而RLS算法可以通过前一时刻的滤波器参数,根据估计误差自动调节现时刻的参数,使某代价函数最小,达到滤波最佳。本文着重介绍RLS算法原理以及它的编程实现,最后利
5、用RLS算法实现了单通道的自适应噪声消除。经调试编译,得到降噪后的语音信号以及增强前后语音信号波形及频谱,最终成功实现基于RLS的语音降噪。关键词:MATLAB,自适应滤波,RLS算法,麦克风降噪AbstractThis course design requires the use of MATLAB software, and using the RLS adaptive filter algorithm to realize the microphone noise reduction. Aims to cultivate the ability to deal with huge dat
6、a we use the computer and familiar with MATLAB in the application of information technology.Adaptive filter is an important component of statistical signal processing. In practice, there may not have enough information to design filter, and a moment before the adoption of the RLS algorithm can filte
7、r parameters, according to the estimation error automatically adjust the parameters of the moment, make a cost function minimum, to obtain good filtering. This paper introduces the principle of RLS algorithm and its programming, finally using RLS algorithm has realized the single channel adaptive no
8、ise cancellation.The debug compilation, after get noise speech signal and enhance speech signal waveform and spectrum before and after, finally to achieve voice noise reduction based on RLS.Keywords: MATLAB, adaptive filter, RLS algorithm, microphone noise reduction1 绪论在数字信号处理中除噪是一个非常重要的问题,对噪声环境中系统工
9、作的稳定性有着很大的影响。隐藏在有用信号中的背景噪声往往是非平稳且随时间变化的,信号和噪声的统计特性往往无法知晓,而且背景噪声中的有用信号往往微弱而不稳定,此时采用传统方法很难解决噪声环境中的信号提取问题。近年来自适应噪声消除系统成为消除噪声的研究热点,利用自适应滤波器具有在未知环境下良好运行并跟踪输入统计量随时间变化的能力,通过不断调整抽头权系数来适应发生变化的信号和噪声的统计特性,达到消除噪声干扰的目的。自适应滤波技术技术可以用来检测平稳的和非平稳的随机信号。自适应数字系统具有很强的自学习,自跟踪能力和算法的简单易实现性,它在噪声信号的检测增强,噪声干扰的抵消,波形编码的线性预测,雷达声纳
10、系统的阵列处理和波束形成,通信系统的自适应分割,以及未知系统的自适应参数辨识等方面获得了广泛的应用。本次课程设计的题目为基于RLS的多麦克风语音降噪,主要是对给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。2 信号处理基本原理2.1自适应滤波器组成自适应滤波器通常由两部分组成,其一是滤波子系统,根据它所要处理的功能而往往有不同的结构形式。另一是自适应算法部分,用来调整滤波子系统结构的参数,或滤波系数。在自适应调整滤波系数的过程中,有不同的准则和算法。算法是指调节自适应滤波系数的步骤,以达到在所描述准则下的误差最小化。自适应滤波器含有两个过程
11、,即自适应过程与滤波过程。前一过程的基本目标是调节滤波系数(k),使有意义的目标函数或代价函数F()最小化,滤波器输出信号y(n)逐步逼近所期望的参考信号d(n),由两者之间的估计误差e(n)驱动某种算法对滤波(权)系数进行调整,使滤波器处于最佳工作状态以实现滤波过程。但是,由于目标函数F()是输入信号x(k)、参考信号d(k)及输出信号y(k)的函数,即F()=Fx(k),d(k),y(k),因此目标函数必须具有以下两个性质:(1)非负性(2)最佳性2.2自适应滤波原理 自适应滤波器与普通滤波器有两个重要区别:(1)自适应滤波器的滤波参数是可变的,它能够随着外界信号特性的变化而动态地改变参数
12、,保持最佳滤波状态。自适应滤波器除了普通滤波器的硬件设备以外还有软件部分,即自适应算法。(2)自适应算法决定了自适应滤波器如何根据外界信号的变化来调整参数。自适应算法的好坏直接影响滤波的效果。 所谓的自适应滤波,就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。 自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。一般而言,自适应滤波器由两部分组成,一是滤波
13、器结构,二是调整滤波器系数的自适应算法。图 2-2 给出了自适应滤波器的一般结构,图中为期望响应,为自适应滤波器的输入,为自适应滤波器的输出,e(n)为估计误差。自适应滤波器的滤波器系数受误差信号控制,根据的值和自适应算法自动调整。由于自适应滤波器在未知或时变系统中的明显优势,它在众多领域得到广泛应用。 图2-2 自适应滤波原理图2.3 RLS算法基本原理所谓自适应实现是指利用前一时刻获得的滤波器参数,根据估计误差自动调节现时刻的参数,使得某个代价函数达到最小,从而实现最优滤波。 (公式1) 下降算法:最广泛使用的自适应算法包括自适应梯度算法(LMS)、自适应高斯-牛顿算法(RLS)。RLS算
14、法:(Recursive Least-Squares),递归最小二乘算法。它是利用在已知n-1时滤波器抽头权系数的情况下,通过简单的更新,求出n时刻的滤波器抽头权系数。代价函数:使用指数加权的误差平方和 (公式2) (01,称为遗忘因子)引入遗忘因子作用是离n时刻近的误差附较大权重, 离n时刻远的误差赋较小权重,确保在过去某一段时间的观测数据被“遗忘”,从而使滤波器可以工作在非平稳状态下。估计误差定义: (公式3) (公式4)可取滤波器的实际输入d*(i)作为期望响应d(i)。将误差代入代价函数得到加权误差平方和的完整表达式: (公式5) 抽头权向量取的是n时刻的w(n)而不是i时刻的w(i)
15、。i=n时刻, (公式6) (公式7)故代价函数比更合理。为了使代价函数取得最小值,可通过对权向量求导: (公式8) 解得 其中 (公式9) (公式10) 由此可见指数加权最小二乘法的解转化为Wiener滤波器的形式: 下面研究它的自适应更新过程:由公式9可得 令、原式可化为 由矩阵求逆引理得 令,则,其中k(n)为增益向量。 (公式11)又由 式中 3 方案设计3.1最小二乘算法RLS算法实现图3-1自适应横向滤波器结构框图自适应横向滤波器有两路输入,一为输入信号x(n),含有样本x(1),x(2),x(N);另一为期望信号序列为d(n),含有样本d(1),d(2),d(N)如图2所示。滤波
16、器滤波系数是对延迟线抽头信号加权的系数w1(n),w2(n),w3(n),Wm (n),实质上,这也是滤波器的冲激响应序列。这里滤波器长度M必须低于或等于信号数据长度n。滤波器输出信号y(n)等于输入信号x(n)与冲激响应序列Wi (n)的卷积和,如式。 误差信号为,由此得到自适应横向滤波器按最小平方准则设计的代价函数: 将代入式中,展开得: 式中,MN。简短的表示滤波器的代价函数,将上式有关项定义为以下参数:(1)确定性相关函数表示输入信号在抽头k与抽头m之间两信号的相关性, (2)确定性互相关函数表示期望响应与在抽头k输入型号之间的互相关性: (3)期望响应序列的能量为: 将上述定义的三个
17、参数代入式中,得: 为了估算滤波器的最佳滤波系数,把式对滤波系数(权系数)微分一次,并令其导数等于0: 得: 这是最小二乘法自适应滤波的正则方程。RLS递推计算公式为:式中为增益矢量,它等于相关矩阵的逆矩阵与延迟线抽头输入阵的乘积。是真正的估计误差,它等于:自适应递归最小二乘算法的信号流程图如图3-2: 图3-2 RLS算法信号流程图3.2 RLS算法程序程序设计在理解RLS算法的基本原理后,我决定自行编写RLS算法程序块,RLS算法可以理解为将输出反馈给滤波器来调整相关参数,达到校正误差的目的。算法实现模块代码如下所示:Worder=32; %滤波器阶数lambda=1 ; % 设置遗忘因子
18、Delta=0.001 ; p=(1/Delta) * eye ( Worder,Worder ) ;w=zeros(Worder,1);output=primary; %主语音输出loopsize=max(size(primary); for i=1+Worder:loopsize %写RLS算法公式 z=primary(i)-w*(fref(i-Worder+1:i); n2=fref(i-Worder+1:i); k=(1/lambda)*p*n2; K=k/(1+n2*k); w = w + K*z; p0=K*n2; p= (p-p0*p)/lambda; output(i-Word
19、er)=z; disp(i);end; 4 RLS算法滤波方案实现4.1信号的获取本次课程设计对我们自行处理和灵活运用的能力提出了很高的要求。首先,老师没有给我们提供设计中所需要用到的语音信号;其次,怎样录制噪声和被噪声污染的语音信号也是一个很现实的问题。所以我选择自己从网上下载了一段简短的wav格式的音频,然后用randn(length(source),1)函数将其打乱作为噪声,记做RLSrefns.wav。将这两段语音信号叠加并保存下来记做RLSprimsp.wav。4.2读取语音文件主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,都
20、是.wav格式,用waveread指令读取音频信号;指令写为如下:primary = wavread(RLSprimsp.wav); primary = primary;ref = wavread(RLSrefns.wav); fref = fref;4.3RLS算法实现RLS算法的收敛特性较LMS算法优越,但相应的复杂度也要高许多,考虑到收敛时间的影响,从起始时间到收敛时间经滤波器处理得到到输出误差依然很大,故直接将前32项去掉,先通过两输入作差得到预期值,再将所有预期值与对应时刻的实际输出值作差求平方,将这些平方值相加可以得到一个变量为W的函数,取W是函数的值最小。另外,显然距离n最近的量
21、与Y(n)最接近,引入遗忘因子使得从n-1到0,相关程度逐渐减小。最后求得相关偏差,反馈给滤波器以矫正输出,达到减小误差的目的。% 初始化Worder=32; %滤波器阶数lambda=1 ; % 设置遗忘因子Delta=0.001 ; p=(1/Delta) * eye ( Worder,Worder ) ;w=zeros(Worder,1);output=primary; %主语音输出loopsize=max(size(primary); for i=1+Worder:loopsize %RLS算法设计 u=fref(i-Worder+1:i); y= w*u e=primary(i)-y
22、; k=(p*u)/(lambda+u*p*u); w = w + k*e; p= (p-k*u*p)/lambda; output(i-Worder)=e; disp(i);end;4.4提取语音信号用MATLAB中的wavread指令分别读取被噪声污染后的语音文件RLSprimsp.wav和噪声文件RLSrefns.wav后,进行RLS算法处理,滤除噪声后,得到语音文件,先由plot指令绘出语音文件波形,再用Y=fft()函数求出频谱,由plot指令绘出语音文件频谱图,然后通过MATLAB中的sound命令播放语音文件。代码如下所示:figure;source,fs,bits=wavrea
23、d(Audio.wav); %fs表示采样频率,bits表示采样位数subplot(2,4,1)plot(source); %画出原音波形title(原音波形)source1=fft(source,length(source);subplot(2,4,5);plot(abs(source1); %画出原音频谱 title(原音频谱)%axis(0 8000 0 80);y1,Fs1,bits1=wavread(RLSprimsp.wav);subplot(2,4,2)plot(y1) %画出麦克风主语音波形title(麦克风主语音波形);Y1=fft(y1,length(y1);subplot
24、(2,4,6); plot(abs(Y1); %画出麦克风主语音频谱title(麦克风主语音输入频谱);%axis(0 8000 0 80);subplot(2,4,3); plot(fref); %画出噪声语音波形title(噪声语音波形);y2,Fs2,bits2=wavread(RLSrefns.wav);Y2=fft(y2,length(y2);subplot(2,4,7); plot(abs(Y2); %画出噪声语音频谱title(噪声语音频谱);subplot(2,4,4); plot(output); %画降噪后的语音波形title(降噪后的语音波形);wavwrite(outp
25、ut,fs,asd) %生成降噪后的语音y,Fs3,bits3=wavread(asd.wav);Y=fft(y,length(y);subplot(2,4,8);plot(abs(Y); %画出降噪后语音频谱title(降噪后语音输出频谱);%axis(0 8000 0 80);f=1;while f=1flag=input(请选择输出语音;1:原式语音 2:加噪主语音 3:噪声语音 4:降噪后语音);switch flag case 1 sound(source,fs,bits); case 2 sound(y1,Fs1,bits1); case 3 sound(y2,Fs2,bits2)
26、; case 4 sound(output,Fs3,bits3);endf=input(是否重新选择? 是 输入1 否 输入0);end5仿真结果与分析5.1原始音频信号(1)原始语音波形图5-1原始语音波形图(2)原始语音频谱 图5-2原始语音频谱5.2麦克风主语音信号(1)麦克风主语音波形图5-3增强的语音信号波形图(2)麦克风主语音频谱图5-4麦克风主语音频谱5.3噪声语音信号(1)噪声语音波形 图5-5噪声语音波形(2)噪声语音频谱图5-6噪声语音频谱5.4降噪后语音信号(1)降噪后语音波形 图5-7降噪后语音波形(2)降噪后语音频谱 图5-8降噪后语音频谱5.5信号处理分析5.5.1
27、原始语音信号与主语音信号分析主语音信号为原始语音信号加噪声信号得到的合成信号,由于噪声信号波形的幅值相对原始语音信号幅值较小,因此原始语音信号加噪前后的波形差异并不十分明显,如图5-9,但通过对比频谱还是可以看出原始语音信号加噪前后有所不同,如图5-10。图5-9原始语音与主语音波形对比图5-10原始语音与主语音频谱对比5.5.2主语音信号与降噪后语音信号分析由于噪声信号波形的幅值相对主语音信号幅值较小,因此主语音信号降噪前后的波形差异并不十分明显,如图5-11,但通过对比频谱(如图5-12)可以看出降噪后的语音信号波形刚好滤除了噪声波形,得到的波形图也更清晰。 图5-11主语音信号与降噪后语
28、音信号波形对比 图5-12主语音信号与降噪后语音信号频谱对比5.5.3原始语音信号与降噪后语音信号分析原始语音信号与降噪后语音信号几乎相同,如图5-13,对比频谱可以看出两信号频谱也几乎相同,如图5-14。说明主语音信号经过RLS算法降噪的效果很好,主语音信号得到增强。图5-13原始语音信号与降噪后语音信号波形对比图5-14原始语音信号与降噪后语音信号频谱对比6心得体会在课程设计的过程中,通过查阅我明白了基于RLS多麦克风语音信号降噪的过程以及RLS的原理及实现方法,通过MATLAB编程及仿真,实现了语音信号的降噪,知道了怎么获得一个随机噪声以及滤除噪声的过程,充分体会了基于RLS多麦克风语音
29、信号降噪这一技术的作用。同时,也学会了对语音信号进行频谱分析,进一步熟悉了MATLAB的使用过程,加深了对这一软件的了解,提高了自己动手的能力。由于对理论知识学习不够扎实,我深感书到用时方恨少,于是便重新拾起教材与实验手册,对知识系统而全面进行了梳理,遇到困难便向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难的知识,掌握了解决问题的思维方式而不是一味的具体的解决方法,找到了设计方向。正所谓实践是检验真理的唯一标准,只有自己动手做过了,才能更贴切更深刻的掌握所学的知识,使自己进一步地提高。这个过程也让我明白了学无止尽的道理,而且理论只有与实际联系起来才能更好地去学习与理解。参考文献1 刘泉,信号与系
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1