信息处理课设绝对正确.docx

上传人:b****7 文档编号:11203923 上传时间:2023-02-25 格式:DOCX 页数:31 大小:254.26KB
下载 相关 举报
信息处理课设绝对正确.docx_第1页
第1页 / 共31页
信息处理课设绝对正确.docx_第2页
第2页 / 共31页
信息处理课设绝对正确.docx_第3页
第3页 / 共31页
信息处理课设绝对正确.docx_第4页
第4页 / 共31页
信息处理课设绝对正确.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

信息处理课设绝对正确.docx

《信息处理课设绝对正确.docx》由会员分享,可在线阅读,更多相关《信息处理课设绝对正确.docx(31页珍藏版)》请在冰豆网上搜索。

信息处理课设绝对正确.docx

信息处理课设绝对正确

《信息处理课群综合训练与设计》任务书

学生姓名:

专业班级:

通信1304

指导教师:

工作单位:

信息学院

题目:

基于RLS算法的多麦克风降噪

初始条件:

Matlab软件、信号与系统、通信处理等

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

设计任务:

给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。

设计的要求:

(1)阅读参考资料和文献,明晰算法的计算过程,理解RLS算法基本过程;

(2)主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,用matlab指令读取;

(3)根据算法编写相应的MATLAB程序;

(4)算法仿真收敛以后,得到增强的语音信号;

(5)用matlab指令回放增强后的语音信号;

(6)分别对增强前后的语音信号作频谱分析。

参考书:

[1]刘泉,《信号与系统》,高等教育出版社,2006年。

[2]刘泉,《数字信号处理》,电子工业出版社,2008年。

[3]EdwardW.Kamen,BonnieS.Heck编,《信号与系统基础——应用Web和MATLAB(第二版)》,科学出版社,2002年。

时间安排:

序号

设计内容

所用时间

1

根据设计任务,分析电路原理,确定实验方案

2天

2

根据实验条件进行电路的测试,并对结果进行分析

7天

3

撰写课程设计报告

1天

合计

2周

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

目录

摘要I

AbstractII

1绪论1

2信号处理基本原理2

2.1自适应滤波器组成2

2.2自适应滤波原理2

2.3RLS算法基本原理3

3方案设计6

3.1最小二乘算法RLS算法实现6

3.2RLS算法程序程序设计8

4RLS算法滤波方案实现9

4.1信号的获取9

4.2读取语音文件9

4.3RLS算法实现9

4.4提取语音信号10

5仿真结果与分析13

5.1原始音频信号13

5.2麦克风主语音信号14

5.3噪声语音信号15

5.4降噪后语音信号16

5.5信号处理分析17

5.5.1原始语音信号与主语音信号分析17

5.5.2主语音信号与降噪后语音信号分析18

5.5.3原始语音信号与降噪后语音信号分析19

6心得体会20

参考文献21

附录源程序22

 

摘要

本次课程设计要求使用MATLAB软件,运用自适应滤波中的RLS算法实现麦克风降噪。

旨在培养我们使用计算机处理庞大的数据的能力和熟悉MATLAB在信息技术中的应用。

自适应滤波器是统计信号处理的一个重要组成部分。

在实际应用中,有可能没有足够的信息来设计滤波器,而RLS算法可以通过前一时刻的滤波器参数,根据估计误差自动调节现时刻的参数,使某代价函数最小,达到滤波最佳。

本文着重介绍RLS算法原理以及它的编程实现,最后利用RLS算法实现了单通道的自适应噪声消除。

经调试编译,得到降噪后的语音信号以及增强前后语音信号波形及频谱,最终成功实现基于RLS的语音降噪。

关键词:

MATLAB,自适应滤波,RLS算法,麦克风降噪

 

Abstract

ThiscoursedesignrequirestheuseofMATLABsoftware,andusingtheRLSadaptivefilteralgorithmtorealizethemicrophonenoisereduction.AimstocultivatetheabilitytodealwithhugedataweusethecomputerandfamiliarwithMATLABintheapplicationofinformationtechnology.

Adaptivefilterisanimportantcomponentofstatisticalsignalprocessing.Inpractice,theremaynothaveenoughinformationtodesignfilter,andamomentbeforetheadoptionoftheRLSalgorithmcanfilterparameters,accordingtotheestimationerrorautomaticallyadjusttheparametersofthemoment,makeacostfunctionminimum,toobtaingoodfiltering.ThispaperintroducestheprincipleofRLSalgorithmanditsprogramming,finallyusingRLSalgorithmhasrealizedthesinglechanneladaptivenoisecancellation.

Thedebugcompilation,aftergetnoisespeechsignalandenhancespeechsignalwaveformandspectrumbeforeandafter,finallytoachievevoicenoisereductionbasedonRLS.

Keywords:

MATLAB,adaptivefilter,RLSalgorithm,microphonenoisereduction 

 

1绪论

在数字信号处理中除噪是一个非常重要的问题,对噪声环境中系统工作的稳定性有着很大的影响。

隐藏在有用信号中的背景噪声往往是非平稳且随时间变化的,信号和噪声的统计特性往往无法知晓,而且背景噪声中的有用信号往往微弱而不稳定,此时采用传统方法很难解决噪声环境中的信号提取问题。

近年来自适应噪声消除系统成为消除噪声的研究热点,利用自适应滤波器具有在未知环境下良好运行并跟踪输入统计量随时间变化的能力,通过不断调整抽头权系数来适应发生变化的信号和噪声的统计特性,达到消除噪声干扰的目的。

自适应滤波技术技术可以用来检测平稳的和非平稳的随机信号。

自适应数字系统具有很强的自学习,自跟踪能力和算法的简单易实现性,它在噪声信号的检测增强,噪声干扰的抵消,波形编码的线性预测,雷达声纳系统的阵列处理和波束形成,通信系统的自适应分割,以及未知系统的自适应参数辨识等方面获得了广泛的应用。

本次课程设计的题目为基于RLS的多麦克风语音降噪,主要是对给定主麦克风录制的受噪声污染的语音信号和参考麦克风录制的噪声,实现语音增强的目标,得到清晰的语音信号。

 

2信号处理基本原理

2.1自适应滤波器组成

自适应滤波器通常由两部分组成,其一是滤波子系统,根据它所要处理的功能而往往有不同的结构形式。

另一是自适应算法部分,用来调整滤波子系统结构的参数,或滤波系数。

在自适应调整滤波系数的过程中,有不同的准则和算法。

算法是指调节自适应滤波系数的步骤,以达到在所描述准则下的误差最小化。

自适应滤波器含有两个过程,即自适应过程与滤波过程。

前一过程的基本目标是调节滤波系数θ(k),使有意义的目标函数或代价函数F(·)最小化,滤波器输出信号y(n)逐步逼近所期望的参考信号d(n),由两者之间的估计误差e(n)驱动某种算法对滤波(权)系数进行调整,使滤波器处于最佳工作状态以实现滤波过程。

但是,由于目标函数F(·)是输入信号x(k)、参考信号d(k)及输出信号y(k)的函数,即F(·)=F[x(k),d(k),y(k)],因此目标函数必须具有以下两个性质:

(1)非负性

(2)最佳性

2.2自适应滤波原理

自适应滤波器与普通滤波器有两个重要区别:

(1)自适应滤波器的滤波参数是可变的,它能够随着外界信号特性的变化而动态地改变参数,保持最佳滤波状态。

自适应滤波器除了普通滤波器的硬件设备以外还有软件部分,即自适应算法。

(2)自适应算法决定了自适应滤波器如何根据外界信号的变化来调整参数。

自适应算法的好坏直接影响滤波的效果。

所谓的自适应滤波,就是利用前一时刻以获得的滤波器参数的结果,自动的调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。

自适应滤波器实质上就是一种能调节其自身传输特性以达到最优的维纳滤波器。

自适应滤波器不需要关于输入信号的先验知识,计算量小,特别适用于实时处理。

自适应滤波器的特性变化是由自适应算法通过调整滤波器系数来实现的。

一般而言,自适应滤波器由两部分组成,一是滤波器结构,二是调整滤波器系数的自适应算法。

图2-2给出了自适应滤波器的一般结构,图中为期望响应,

为自适应滤波器的输入,

为自适应滤波器的输出,e(n)为估计误差。

自适应滤波器的滤波器系数受误差信号控制,根据的值和自适应算法自动调整。

由于自适应滤波器在未知或时变系统中的明显优势,它在众多领域得到广泛应用。

 

图2-2自适应滤波原理图

2.3RLS算法基本原理

所谓自适应实现是指利用前一时刻获得的滤波器参数,根据估计误差自动调节现时刻的参数,使得某个代价函数达到最小,从而实现最优滤波。

(公式1)

下降算法:

最广泛使用的自适应算法包括自适应梯度算法(LMS)、自适应高斯-牛顿算法(RLS)。

RLS算法:

(RecursiveLeast-Squares),递归最小二乘算法。

它是利用在已知n-1时滤波器抽头权系数的情况下,通过简单的更新,求出n时刻的滤波器抽头权系数。

代价函数:

使用指数加权的误差平方和

(公式2)

(0<λ<1,称为遗忘因子)引入遗忘因子作用是离n时刻近的误差附较大权重,离n时刻远的误差赋较小权重,确保在过去某一段时间的观测数据被“遗忘”,从而使滤波器可以工作在非平稳状态下。

估计误差定义:

(公式3)

(公式4)

可取滤波器的实际输入d*(i)作为期望响应d(i)。

将误差代入代价函数得到加权误差平方和的完整表达式:

(公式5)

抽头权向量取的是n时刻的w(n)而不是i时刻的w(i)。

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所示。

滤波器滤波系数是对延迟线抽头信号加权的系数{w1(n),w2(n),w3(n),…Wm(n)},实质上,这也是滤波器的冲激响应序列。

这里滤波器长度M必须低于或等于信号数据长度n。

滤波器输出信号y(n)等于输入信号x(n)与冲激响应序列Wi(n)的卷积和,如式①。

误差信号为

,由此得到自适应横向滤波器按最小平方准则设计的代价函数:

将①代入式②中,展开得:

式中,M≤N。

简短的表示滤波器的代价函数,将上式有关项定义为以下参数:

(1)确定性相关函数表示输入信号在抽头k与抽头m之间两信号的相关性,

(2)确定性互相关函数表示期望响应与在抽头k输入型号之间的互相关性:

(3)期望响应序列的能量为:

将上述定义的三个参数代入式③中,得:

为了估算滤波器的最佳滤波系数,把式④对滤波系数(权系数)

微分一次,并令其导数等于0:

⑤得:

⑥这是最小二乘法自适应滤波的正则方程。

RLS递推计算公式为:

式中

为增益矢量,它等于相关矩阵

的逆矩阵与延迟线抽头输入阵

的乘积。

是真正的估计误差,它等于:

自适应递归最小二乘算法的信号流程图如图3-2:

 

图3-2RLS算法信号流程图

3.2RLS算法程序程序设计

在理解RLS算法的基本原理后,我决定自行编写RLS算法程序块,RLS算法可以理解为将输出反馈给滤波器来调整相关参数,达到校正误差的目的。

算法实现模块代码如下所示:

Worder=32;                          %滤波器阶数

lambda=1;                           %设置遗忘因子

Delta=0.001;                         

p=(1/Delta)*eye(Worder,Worder);      

w=zeros(Worder,1);

output=primary;                       %主语音输出

loopsize=max(size(primary));            

fori=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;

 

4RLS算法滤波方案实现

4.1信号的获取

本次课程设计对我们自行处理和灵活运用的能力提出了很高的要求。

首先,老师没有给我们提供设计中所需要用到的语音信号;其次,怎样录制噪声和被噪声污染的语音信号也是一个很现实的问题。

所以我选择自己从网上下载了一段简短的wav格式的音频,然后用randn(length(source),1)函数将其打乱作为噪声,记做RLSrefns.wav。

将这两段语音信号叠加并保存下来记做RLSprimsp.wav。

4.2读取语音文件

主麦克风录制的语音信号是RLSprimsp.wav,参考麦克风录制的参考噪声是RLSrefns.wav,都是.wav格式,用waveread指令读取音频信号;

指令写为如下:

primary=wavread('RLSprimsp.wav');

primary=primary';

ref=wavread('RLSrefns.wav');

fref=fref';

4.3RLS算法实现

RLS算法的收敛特性较LMS算法优越,但相应的复杂度也要高许多,考虑到收敛时间的影响,从起始时间到收敛时间经滤波器处理得到到输出误差依然很大,故直接将前32项去掉,先通过两输入作差得到预期值,再将所有预期值与对应时刻的实际输出值作差求平方,将这些平方值相加可以得到一个变量为W的函数,取W是函数的值最小。

另外,显然距离n最近的量与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));            

fori=1+Worder:

loopsize%RLS算法设计

u=fref(i-Worder+1:

i)';

y=w'*u

e=primary(i)-y;

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]=wavread('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([08000080]);

[y1,Fs1,bits1]=wavread('RLSprimsp.wav');

subplot(2,4,2)

plot(y1)%画出麦克风主语音波形

title('麦克风主语音波形');

Y1=fft(y1,length(y1));

subplot(2,4,6);plot(abs(Y1));%画出麦克风主语音频谱

title('麦克风主语音输入频谱');

%axis([08000080]);

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(output,fs,'asd')%生成降噪后的语音

[y,Fs3,bits3]=wavread('asd.wav');

Y=fft(y,length(y));

subplot(2,4,8);

plot(abs(Y));%画出降噪后语音频谱

title('降噪后语音输出频谱');

%axis([08000080]);

f=1;

whilef==1

flag=input('请选择输出语音;1:

原式语音2:

加噪主语音3:

噪声语音4:

降噪后语音');

switchflag

case1

sound(source,fs,bits);

case2

sound(y1,Fs1,bits1);

case3

sound(y2,Fs2,bits2);

case4

sound(output,Fs3,bits3);

end

f=input('是否重新选择?

是输入1否输入0');

end

 

5仿真结果与分析

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原始语音信号与主语音信号分析

主语音信号为原始语音信号加噪声信号得到的合成信号,由于噪声信号波形的幅值相对原始语音信号幅值较小,因此原始语音信号加噪前后的波形差异并不十分明显,如图5-9,但通过对比频谱还是可以看出原始语音信号加噪前后有所不同,如图5-10。

 

图5-9原始语音与主语音波形对比

 

图5-10原始语音与主语音频谱对比

5.5.2主语音信号与降噪后语音信号分析

由于噪声信号波形的幅值相对主语音信号幅值较小,因此主语音信号降噪前后的波形差异并不十分明显,如图5-11,但通过对比频谱(如图5-12)可以看出降噪后的语音信号波形刚好滤除了噪声波形,得到的波形图也更清晰。

 

 

图5-11主语音信号与降噪后语音信号波形对比

 

 

图5-12主语音信号与降噪后语音信号频谱对比

 

5.5.3原始语音信号与降噪后语音信号分析

原始语音信号与降噪后语音信号几乎相同,如图5-13,对比频谱可以看出两信号频谱也几乎相同,如图5-14。

说明主语音信号经过RLS算法降噪的效果很好,主语音信号得到增强。

 

图5-13原始语音信号与降噪后语音信号波形对比

 

图5-14原始语音信号与降噪后语音信号频谱对比

6心得体会

在课程设计的过程中,通过查阅我明白了基于RLS多麦克风语音信号降噪的过程以及RLS的原理及实现方法,通过MATLAB编程及仿真,实现了语音信号的降噪,知道了怎么获得一个随机噪声以及滤除噪声的过程,充分体会了基于RLS多麦克风语音信号降噪这一技术的作用。

同时,也学会了对语音信号进行频谱分析,进一步熟悉了MATLAB的使用过程,加深了对这一软件的了解,提高了自己动手的能力。

由于对理论知识学习不够扎实,我深感书到用时方恨少,于是便重新拾起教材与实验手册,对知识系统而全面进行了梳理,遇到困难便向同学请教,终于熟练掌握了基本理论知识,而且领悟诸多平时学习难以理解掌握的较难的知识,掌握了解决问题的思维方式而不是一味的具体的解决方法,找到了设计方向。

正所谓实践是检验真理的唯一标准,只有自己动手做过了,才能更贴切更深刻的掌握所学的知识,使自己进一步地提高。

这个过程也让我明白了学无止尽的道理,而且理论只有与实际联系起来才能更好地去学习与理解。

 

参考文献

[1]刘泉,《信号与系

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1