基于RLS算法的多麦克风降噪课程设计任务书.doc

上传人:laozhun 文档编号:2393234 上传时间:2023-02-17 格式:DOC 页数:27 大小:362.50KB
返回 下载 相关 举报
基于RLS算法的多麦克风降噪课程设计任务书.doc_第1页
第1页 / 共27页
基于RLS算法的多麦克风降噪课程设计任务书.doc_第2页
第2页 / 共27页
基于RLS算法的多麦克风降噪课程设计任务书.doc_第3页
第3页 / 共27页
基于RLS算法的多麦克风降噪课程设计任务书.doc_第4页
第4页 / 共27页
基于RLS算法的多麦克风降噪课程设计任务书.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《基于RLS算法的多麦克风降噪课程设计任务书.doc》由会员分享,可在线阅读,更多相关《基于RLS算法的多麦克风降噪课程设计任务书.doc(27页珍藏版)》请在三一办公上搜索。

1、课程设计任务书题 目: 基于RLS 算法的多麦克风降噪 初始条件:pc机,matlab7.0软件要求完成的主要任务:(1)阅读参考资料和文献,明晰算法的计算过程,理解RLS算法基本过程;(2)主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,用matlab指令读取;(3)根据算法编写相应的matlab程序;(4)算法仿真收敛以后,得到增强的语音信号;(5)用matlab指令回放增强后的语音信号;(6)分别对增强前后的语音信号作频谱分析。时间安排:6月20日到6月27日 理论设计与仿真6月28日到7月1日 撰写报告7月3日 答辩 指导教师签名

2、: 年 月 日系主任(或责任教师)签名: 年 月 日 目 录 课程设计任务书1摘要3Abstract41设计任务52设计要求63基本原理73.1自适应干扰抵消原理73.2 RLS算法基本原理84方案论证105功能设计125.1读取语音文件125.2算法实现136信号的获取157调试程序167.1环境噪声中的语音波形分析167.2 RLS算法的滤波效果:187.3分别对增强前后的语音信号做频谱分析19附:MATLAB软件输出窗口如下图:228心得体会239参考文献24附录:程序清单25 摘要MATLAB即矩阵实验室,是一个可视化的计算程序,被广泛的运用在科学计算领域,包括数值计算、数据拟合图形图

3、像处理、系统模拟仿真功能。除具备卓越的数值计算能力用外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。自适应滤波器是统计信号处理的一个重要组成部分。在实际应用中,由于没有充足的信息来设计固定系数的数字滤波器,或者设计规则会在滤波器正常运行时改变,因此我们需要研究自适应滤波器。凡是需要处理未知统计环境下运算结果所产生的信号或需要处理非平稳信号时,自适应滤波器可以提供一种吸引人的解决方法,而且其性能通常远优于用常方法设计的固定滤波器。此外,自适应滤波器还能提供非自适应方法所不可能提供的新的信号处理能力。本次课程设计正是要求使用具有强大运算能力的MATLAB软件,运用自适应

4、滤波中的RLS算法实现麦克风降噪。旨在培养我们使用计算机处理庞大的数据的能力和熟悉MATLAB在信息技术中的应用。关键词:MATLAB,自适应滤波,RLS算法,麦克风降噪 AbstractMATLAB namely Matrix Laboratory, is a visual calculation procedure is widely used in the field of scientific computing, including numerical computation, data fitting, graphics, image processing, system simu

5、lation. Has proven the value of computing power, it also provides a professional level of symbolic computation, word processing, visual modeling and simulation and real-time control functions.The adaptive filter is an important part of statistical signal processing. In practical applications, does n

6、ot have sufficient information to design a fixed-coefficient digital filter design rules in the normal operation of the filter change, so we need to study the adaptive filter. Those who need to deal with the signals generated by the result of the operation environment of unknown statistics or need t

7、o deal with non-stationary signals, the adaptive filter can provide an attractive solution, and its performance is usually far superior to the fixed filter design using the regular method . In addition, the adaptive filter can also provide non-adaptive methods can not provide a new signal processing

8、 capabilities.This course design is to use the powerful computing power of MATLAB software, the use of the RLS adaptive filtering algorithm microphone noise reduction. Aims to develop the way we use computers to handle large data, familiarity with MATLAB count information.Keywords: MATLAB, adaptive

9、filter, RLS algorithm, microphone noise reduction 1设计任务 给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。 2设计要求(1)阅读参考资料和文献,明晰算法的计算过程,理解RLS算法基本过程;(2)主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,用matlab指令读取;(3)根据算法编写相应的MATLAB程序;(4)算法仿真收敛以后,得到增强的语音信号;(5)用matlab指令回放增强后的语音信号;(6)分别对增强前后的语音信号作频谱分

10、析。 3基本原理3.1自适应干扰抵消原理 如图所示的是自适应干扰抵消器的基本结构,它有着很广泛的应用。期望响应是信号和噪声之和,即,自适应处理器的输入是与相关的另一个噪声。当与不相关时,自适应处理器将调整自己的参数,以力图使成为的最佳估计。这样,将逼近信号,且其均方值为最小。噪声就得到了一定程度的抵消 + i 自适应处理器 图3-1自适应干扰抵消原理图 3.2 RLS算法基本原理RLS算法是FIR维纳滤波器的一种递归算法,它是严格以最小二乘方准则为依据的算法。FIR自适应滤波器除了LMS算法外,还有另一种算法,即自适应的递归最小二乘方(RLS)算法。这种算法实际上是FIR维纳滤波器的一种时间递

11、归算法,它是严格以最小二乘方准则为依据的算法。它的主要优点是收敛速度快,因此,首先在快速信道均衡,实时系统辨识和时间序列分析中得到广泛应用。其主要缺点是每次迭代计算量很大(对于阶横向滤波器,计算量数量级为),因此,在信号处理中它的应用曾一度收到限制。但是近年来人们重新对它产生了兴趣,主要是因为它具有收敛速度快的优点。在生物医学应用中,这种算法的自适应滤波器很容易在小型计算机上实现。RLS算法的关键是用二乘方的时间平均的最小化准则取代最小均方准则,并按时间迭代计算。具体来说,是要对初始时刻到当前时刻所有误差的平方进行平均并使其最小化,在按照这一准则确定FIR滤波器的权系数矢量,即所依据的准则是

12、(1)其中 式中,是期望响应,是L阶FIR滤波器的输出相应,即 (2) RLS的算法所采用的是最小二乘准则,其代价函数为: (3) 式中称为遗忘因子,且有01。RLS算法的权向量的迭代公式为cn=cn-1+gnen (4)式中,gn为: (5)其中,是Rn均衡器输入矢量的自相关矩阵4方案论证方案一:理解RLS算法的基本原理,自行编写RLS算法程序块,RLS算法可以理解为将输出反馈给滤波器来调整相关参数,达到校正误差的目的。算法实现代码如下所示:Worder=32; %滤波器阶数lambda=1 ; % 设置遗忘因子Delta=0.001 ; p=(1/Delta) * eye ( Worder

13、,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-Worder)=z; disp(i);end;方案二:直接调用MATLAB自带的RLS

14、算法adaptfilt.rls(l,lambda,invcov,coeffs,states)1指滤波器的长度,必须为正数,默认值为10;lambda指RLS的遗忘因子,为标量,取值范围 0 1 ,默认值为1;invcov指输入矩阵的协方差的逆,为使滤波器性能最佳,常将其初始化为正定矩阵;coeffs指初始化滤波器系数向量,长度必须为滤波器的阶数,默认下所有元素全零;states指矢量自适应滤波器的初始过滤状态,长度必须为阶数减1,默认下所有元素全零。该方案运用现成的RLS算法函数,操作简单,易实现,但不能深入了解RLS算法的根本原理,不利于RLS算法的掌握。 直接调用库的RLS算法函数的设计方

15、法比较简单,直接用Hadapt函数调用RLS数字滤波器就可以滤波输出。而直接编写RLS算法公式的设计方法就比较难,设计时要先要弄懂基本的RLS算法,公式的推导,每一步的含义等,好的是可以掌握好MATLAB指令,如何去编写公式也是难点,此方法的设计过程当中就参考了一些数字滤波器的设计资料,还有矩阵的写法与匹配问题,需要自己分析解决一些问题。为了加深对matlab的了解,我们选择方案一。5功能设计5.1读取语音文件主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,都是.wav格式,用waveread指令读取音频信号;指令写为如下:primary

16、 = wavread(RLSprimsp.wav); primary = primary;ref = wavread(RLSrefns.wav); fref = fref;5.2算法实现RLS算法的收敛特性较LMS算法优越,但相应的复杂度也要高许多,考虑到收敛时间的影响,从起始时间到收敛时间经滤波器处理得到到输出误差依然很大,故直接将前32项去掉,先通过两输入作差得到预期值,再将所有预期值与对应时刻的实际输出值作差求平方,将这些平方值相加可以得到一个变量为W的函数,取W是函数的值最小。另外,显然距离n最近的量与Y(n)最接近,引入遗忘因子使得从n-1到0,相关程度逐渐减小。最后求得相关偏差,反

17、馈给滤波器以矫正输出,达到减小误差的目的。% 初始化Worder=32; %滤波器阶数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=p*n2; K=k/(1+n2*k); w = w + K*z; p0=K*n2;

18、p = (p-p0*p); output(i-Worder)=z; disp(i);end; 5.3提取语音信号用MATLAB中的wavread指令分别读取被噪声污染后的语音文件RLSprimsp.wav和噪声文件RLSrefns.wav后,进行RLS算法处理,滤除噪声后,得到语音文件,先由plot指令绘出语音文件波形,再通过MATLAB中的sound命令播放语音文件。代码如下所示:figure; %作图subplot(2,3,1);plot(primary); %画主麦克风语音波形title(primary input);subplot(2,3,2);plot(fref); %画参考麦克风语

19、音波形title(fref noise);subplot(2,3,3);plot(output); %画降噪后的语音波形title(output);wavwrite(output,fs,lym0); %生成降噪后的语音波形sound(output,fs,bits); 6信号的获取本次课程设计对我们自行处理和灵活运用的能力提出了很高的要求。因为我自己耳机的麦克风在windows8音频驱动下,输入增益太小,根本无法使用。然而直接去购买一个专用的麦克风又不划算,最后在我确定了获取被噪声污染的信号和噪声信号的方法:本次设计我算选用的噪声信号由MATLAB中随机函数randn产生的声音信号来模拟的,而语

20、音信号则用酷狗音乐盒登录“hello kugou(文件名login.wav)”和randn函数产生的噪声混合的声音信号来模拟。这样,噪声信号就和语音信号中噪声有很大相似度。我首先使用wavwrite函数,将randn函数输出的噪声信号命名为RLSrefns.wav。然后在用wavwrite函数将加载了噪声的“hello kugou”信号输出命名为RLSprimsp.wav。 7调试程序7.1环境噪声中的语音波形分析(1)麦克风主噪音RLSprimsp.wav信号波形如下:图7-1麦克风主噪音波形图(2)参考噪音RLSrefns.wav 信号波形如下:图7-2参考噪音波形图7.2 RLS算法的滤

21、波效果:算法仿真收敛以后,得到增强的语音信号图7-3增强的语音信号波形图7.3分别对增强前后的语音信号做频谱分析对于时域信号,我们往往难以找出其中蕴含的规律,仅从时域角度完成特征信号的提取、噪声信号的滤除和信号的分割不仅十分困难,有时甚至根本无法实现,这时如果从频域角度来看,问题就变得简单许多,首先将时域信号经傅里叶变换得到对应频域信号。傅里叶变换,即将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。对于离散信号,通常采用离散福利叶变换,为提高计算机的运算速度又衍生出快速离

22、散傅里叶变换,接下来频谱信号的绘制即是直接调用MATLAB中指令fft先得到对应的频谱信号,再通过plot命令得到的。 (1)对麦克风主噪音RLSprimsp.wav信号进行频谱分析: 频谱图如下:图7-4麦克风主语音输入频谱(2)对参考噪音RLSrefns.wav 信号进行频谱分析: 频谱图如下:图7-5参考麦克风语音输入频谱(3)对降噪后的输出语音lym0.wav进行频谱分析 频谱图如下:图7-6降噪后语音输出频谱图附:MATLAB软件输出窗口如下图:8心得体会这次的课程设计结束了,虽然开始的时候不知道从何入手,该怎么样达到要求,完成设计,但是经过一步步的摸索和总结,最后总算完成了这次任务

23、。由于对于理论知识学习不够扎实,我深感“书到用时方恨少”,于是想起圣人之言“温故而知新”,便重拾教材与实验手册,对知识系统而全面进行了梳理,遇到难处先是苦思冥想再向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难知识,学会了如何思考的思维方式,找到了设计的方向。正所谓“实践是检验真理的唯一标准”,只有自己动手做过了,才能更贴切更深刻的掌握所学的知识,使自己进一步的提高。尽管课程设计是在期末才开始,我们的教材学习完毕,掌握许多知识,但是还有很多地方理解领悟不到位,所以查阅资料使必不可少的,这就养成了我们自己学习的方式通过此次学科课程设计,我掌握了自适应算法的一些基本知

24、识,加强了我对MATLAB软件的应用能力,提高了运用RLS算法进行滤波器设计的基本能力。提高自己的基础理论知识、基本动手能力,提高人才培养的基本素质,并帮助我们掌握基本的文献检索和文献阅读的方法,同时提高我们正确地撰写论文的基本能力。当然,经过此次RLS算法多麦克风语音降噪课程设计,我也发现了自己的很多不足。但是通过自己的动手动脑,既增加了知识,又给了我专业知识以及专业技能上的提升,我也会更加努力,认真学习,争取在以后的课程中做得更好。 9参考文献 1 陈怀琛. MATLAB及在电子信息课程中的应用 . 西安:西安电子科技大学出版社,20002 胡广书. 数字信号处理理论、算法与实现 . 北京

25、:清华大学出版社,20033 何振亚. 自适应信号处理 . 科学出版社,20024 安颖,侯国强. 自适应滤波算法研究与DSP实现 .现代电子技术,20075 王洪元主编. MATLAB语言以及在电子信息工程中的应用 .清华大学出版社,2004.6 郑宝玉. 自适应滤波器原理M. 北京:电子工业出版社,2006. 附录:程序清单source=wavread(login.wav); %读入hello_kugou的wav音频文件noise = 0.1*randn(length(source),1);source = source+noise;wavwrite(noise,22050,RLSrefn

26、s) ; %输出模拟噪声文件wavwrite(source,22050,RLSprimsp); %输出模拟主语音信号primary=wavread(RLSprimsp)primary=primary; fref=wavread(RLSrefns.wav); %读入参考语音信号fref= fref;Worder=32; %滤波器阶数lambda=1 ; % 设置遗忘因子Delta=0.001 ; p=(1/Delta) * eye ( Worder,Worder ) ; w=zeros(Worder,1);output=primary; %主语音输出loopsize=max(size(prima

27、ry); 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-Worder)=z;end;figure; %作图subplot(2,3,1);plot(primary); %画主麦克风语音波形title(primary input);y1,fs,bits=wavread(RLSprimsp.wa

28、v);y1Y1=fft(y1);subplot(2,3,4);plot(abs(Y1);title(麦克风主语音输入频谱);subplot(2,3,2);plot(fref); %画参考麦克风语音波形title(fref noise);y2,fs,bits=wavread(RLSrefns.wav);Y2=fft(y2);subplot(2,3,5);plot(abs(Y2);title(参考麦克风语音输入频谱);subplot(2,3,3);plot(output); %画降噪后的语音波形title(output);wavwrite(output,fs,lym0); %生成降噪后的语音y,f

29、s,bits=wavread(lym0.wav);Y=fft(y);subplot(2,3,6);plot(abs(Y);title(降噪后语音输出频谱);sound(y1,fs,bits);sound(y2,fs,bits);sound(output,fs,bits);本科生课程设计成绩评定表姓 名熊昌青性 别男专业、班级通信1102课程设计题目:基于RLS 算法的多麦克风降噪课程设计答辩或质疑记录:成绩评定依据:评 分 项 目最高分限实际得分设计说明书(论文)文理通顺、书写工整、图纸整洁。20方案设计合理,有一定创新,计算正确,论证充分。20答辩时态度谦虚有礼。10能够及时正确地回答教师所提出的问题。40仿真设计及其运行情况10最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 2013年 7月 3日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号