1、IIR滤波器语音去噪处理 课程设计(论文)之欧侯瑞魂创作题 目基于IIR数字滤波器的有噪语音信号的处理课程设计(论文)任务书学 院: 电气工程学院 题 目: 基于IIR数字滤波器的有噪语音信号的处理起 止 时 间:2016年10月25日至16年11月20日学 生 姓 名: 专 业 班 级: 指 导 教 师: 教研室主 任: 院 长: 2016年 11 月 20 日论文 (设计) 内容及要求:一、课程设计(论文)原始依据 在信号传输过程中,由于实验条件或各种其他主观或客观条件的原因,不成防止的会引进一些噪声信号,因此除噪成了研究信号传输过程中必不成少的一环。基于MATLAB的有噪语音信号处理,通
2、过MATLAB强大的数据运算能力,可以极大程度上消弱噪声影响,还原出真实的语音信号。二、课程设计(论文)主要内容课程设计内容如下:1. 绪论2. 基于滤波器的语音信号的处理3. 滤波器的设计4. 仿真及结果分析5. 课题结论6. 参考文献7. 谢辞8. 附录附录1:IIR数字滤波器的主要程序附录2:比较滤波前后语音信号的波形及频谱三、课程设计(论文)基本要求(1)技术要求:编制 Matlab 程序,完成以下功能,发生系统输入信号;根据系统差分方程求解单位脉冲响应序列;根据输入信号求解输出响应;用实验方法检查系统是否稳定;绘制相关信号的波形。(2)工作要求:简述离散系统时域分析和判断系统稳定性方
3、法;完成所给设计实验,并对结果进行分析和解释;打印程序清单和要求画出的信号波形;写出本次课程设计的收获和体会;列出参考文献。四、课程设计(论文)进度安插 课程设计进度(时间)安插如下:1. 2016年10月25日2016年10月31日 理解课程设计题目的设计要求,查阅相关资料;2. 2016年11月1日2016年11月8日 完成各部分程序代码及系统调试;3. 2016年11月9日2016年12月11日 完成课程设计初稿;4. 2016年11月12日2016年11月24日完成完整的课程设计陈述;5. 2016年11月20日 上交课程设计作品并答辩。五、主要参考文献1.高西全,丁玉美数字信号处理M
4、.北京:西安电子科技大学出版社,20082.刘泉,阙大顺数字信号处理原理与实现M北京:电子工业出版社,20053.张磊,毕靖,郭莲英MATLAB实用教程M北京:人民邮电出版社,20084.张威MATLAB基础与编程入门M西安:西安电子科技大学出版社,2006 5.周利清,苏菲数字信号处理基础M北京:北京邮电大学出版社,2005 指导老师: (签 名) 年 月 日摘 要:滤波器设计在数字信号处理中占有极其重要的地位,IIR滤波器是滤波器设计的重要组成部分。课题基于MATLAB有噪音语音信号处理的设计与实现,综合运用数字信号处理的理论知识对加噪声语音信号进行时域,频域分析和滤波。通过理论推导得出相
5、应结论,再利用 MATLAB 作为编程工具进行计算机实现。在设计实现的过程中,用巴特沃斯、切比雪夫和双线性变法设计IIR数字滤波器,并利用MATLAB 作为辅助工具完成设计中的计算与图形的绘制。通过对对所设计滤波器的仿真和频率特性分析,可知利用MATLAB信号处理工具处理工具箱可以有效快捷地设计IIR数字滤波器,结果的各项性能指标均达到指定要求。关键词:MATLAB;IIR滤波器;有噪音语音信号Abstract: filter design plays an important role in digital signal processing, IIR filter is an import
6、ant part of the filter design. Research based on MATLAB design and implementation of the noise processing of speech signal, the theory of knowledge of the integrated use of digital signal processing in time domain of speech signal plus noise, frequency domain analysis and filtering. Through theoreti
7、cal derivation corresponding conclusion using MATLAB as a programming tool for computer implementation. In the design process, with Butterworth, Chebyshev and bilinear method of IIR digital filter design, and use MATLAB as a tool Complete the drawing calculation and graphic design. Through the simul
8、ation and frequency characteristic analysis on the design of filter, MATLAB signal processing tools processing toolbox can effectively and quickly design IIR digital filter based on the results of the performance indicators to meet the specified requirements.Keywords: MATLAB; IIR filter; noisy speec
9、h signal1. 绪论12. 基于滤波器的语音信号的处理13. 滤波器的设计24. 仿真及结果分析65. 课题结论146. 参考文献167. 谢辞178. 附录18附录1:IIR数字滤波器的主要程序18附录2:比较滤波前后语音信号的波形及频谱191.绪论数字滤波器,是数字信号处理中及其重要的一部分。随着信息时代和数字技术的发展,受到人们越来越多的重视。数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。IIR滤波器采取递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加
10、等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。 本设计研究的主要内容中是先进行语音信号的收集,然后对语音信号进行频谱分析,再利用IIR两种滤波器对语音信号进行过滤和频谱分析,画出滤波之后的频谱图与时域波形,并对信号滤波前后进行分析比较,分析信号的变更,得出滤波性能。2. 基于滤波器的语音信号的处理 选择一
11、个语音信号作为分析的对象,或录制一段语音信号,对其进行频谱分析;利用MATLAB中的随机函数发生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计IIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,最后回放语音信号。2.1语音信号的采样理论依据采样频率是指计算机每秒钟收集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量尺度。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的暗示也越精确。采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才干
12、把数字信号暗示的声音还原成为原来的声音。这就是说采样频率是衡量声卡收集、记录和还原声音文件的质量尺度。位数采样位数即采样值或取样值,用来衡量声音动摇变更的参数,是指声卡在收集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要尺度。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕获到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1k
13、Hz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。理 在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max=2fmax,则采样之后的数字信号完整地保存了原始信号中的信息,一般实际应用中包管采样频率为信号最高频率的510倍;采样定理又称奈奎斯特定理。 1924年奈奎斯特(Nyquist)就推导出在理想低通信道的最高大码元传输速率的公式: 理想低通信道的最高大码元传输速率=2W*log2 N (其中W是理想低通信道的带宽,N是电平强度)的收集 利用WINDO
14、WS 操纵系统可以进行数字信号的收集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“speech”保管入g : MATLAB work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操纵系统规定的声音文件存的尺度。3. 滤波器的设计概述数字滤波器的实现有两个关键步调:一个从数字域到模拟域间的变换,这个变换实现了数字滤波器技术指标到模拟滤波器技术指标的转换,同样也实现了模拟滤波器系统函数到数字滤波器系统函数的转换;另一个是从模拟滤波器技
15、术指标到满足该指标的模拟滤波器的设计。用模拟数字变换法设计IIR数字滤波器,首先必须设计一个模拟滤波器,它有许多分歧的类型,主要有以下两种类型:巴特沃思(Botterworth简写BW)滤波器。BW滤波器是根据幅频特性在通带内具有最拼图特性而定义的滤波器,对一个N阶低通滤波器来说,所谓最平坦特性就是模拟函数的前(2N-1)阶导数在处都为零。BW滤波器的另一个特性是在通带和阻带内的幅频特性始终是频率的单调下降函数,且其模拟函数随阶次N 的增大而更接近于理想低通滤波器。切比雪夫(Chbyshev简写为CB)滤波器。CB低通滤波器的模拟函数由切比雪夫多项式定义,且在通带内的幅频响应是动摇的,在阻带则
16、单调变更。概述 IIR(Infinite Impulse Response)数字滤波器,又名“无限脉冲响应数字滤波器”,或“递归滤波器”。递归滤波器,也就是IIR数字滤波器,顾名思义,具有反馈,一般认为具有无限的脉冲响应。IIR滤波器有以下几个特点:(1)封闭函数:IIR数字滤波器的系统函数可以写成封闭函数的形式。 (2)IIR数字滤波器采取递归型结构:IIR数字滤波器采取递归型结构,即结构上带有反馈环路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不竭累积,有时会发生微弱的寄生
17、振荡。 (3)借助成熟的模拟滤波器的成果:IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,再通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。(4)需加相位校准网络:IIR数字滤波器的相位特性欠好控制,对相位要求较高时,需加相位校准网络。波器设计 无论是数字滤波器还是模拟滤波器,他们技术指标的建立都是以所谓的“固有衰减”参数为参照。以数字滤波器为例,固有衰减参数定义为 A(w)=-20lg|H(ejw)|-2
18、0lg|H(ej0)| 目前IIR数字滤波器设计的最通用的方法是借助于模拟滤波器的设计方法。模拟滤波器设计已经有了一套相当成熟的方法,它不单有完整的设计公式,而且还有较为完整的图表供查询,因此,充分利用这些已有的资源将会给数字滤波器的设计带来很大方便。IIR数字滤波器的设计步调是:按一定规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标;根据转换后的技术指标设计模拟低通滤波器;再按一定规则将G(s)转换成H(z)。若设计的数字滤波器是低通的,那么上述设计工作可以结束,若所设计的是高通,带通或带阻滤波器,那么还有步调;将高通、带通、或带阻数字l不去的技术指标先转化为低通模拟滤波器的技
19、术指标,然后依照上述步调设计出低通,再将转换为所需的H(z)。下面我们总结一下利用模拟滤波器设计IIR数字低通滤波器的步调:(1)确定数字低通滤波器的技术指标:通带鸿沟频率、通带最大衰减,阻带截止频率、阻带最小衰减。(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。(3)依照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。 接下来,我们根据语音信号的特点给出有关滤波器的技术指标: 低通滤波器的性能指标: fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB 在Matlab中,利用函数
20、butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。 MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是N,wc=butter(N,wc,Rp,As,s),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。 MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下: B,A=cheby1(N,Rp,wpo,ftypr) 函数butter,che
21、by1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。下面我们以IIR低通滤波器的设计为例:Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Fs*tan(wp/2);n11,wn11=buttord(wp,ws,1,50,s); b11,a11=butter(n11,wn11,s); num11,den11=bilinear(b11,a11,0.5);h,w=freqz(num11,den11);figure;plot(w*8000*0.5
22、/pi,abs(h);legend(IIR低通滤波器,Location,NorthWest);grid;程序结果如下图: 图用设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,IIR滤波器利用函数filter对信号进行滤波。 函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。函数filter的调用格式:yn=filter(B,A.xn),它是依照直线型结构实现对xn的滤波。其中x
23、n是输入信号向量,yn输出信号向量。4 . 仿真及结果分析利用MATLAB中的“wavread”命令来读入(收集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式。 (1)y=wavread(file) 功能说明:读取file所规定的wav文件,返回采样值放在向量y中。(2)y,fs,nbits=wavread(file) 功能说明:采样值放在向量y中,fs暗示采样频率(hz),nbits暗示采样位数。 (3)y=wavread(file,N) 功能说明:读取钱N点的采样值放在向量y中。 (4)y=wavread(file,N1,N
24、2) 功能说明:读取从N1到N2点的采样值放在向量y中。接下来,对语音信号OriSound.wav进行采样。其程序如下: y,fs,nbits=wavered (OriSound); %把语音信号加载入Matlab 仿真软件平台中然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:Xk=fft(xn,N)参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。在本次设计中,我们利用fft
25、对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。程序如下:y,fs,nbits=wavread(OriSound); %语音信号的收集sound(y,fs,nbits); %语音信号的播放n=length(y) ; Y=fft(y,n); %快速傅里叶变换figure;subplot(2,1,1);plot(y);title(原始信号波形,fontweight,bold);axis( 78000 80000 -1 1);grid;subplot(2,1,2);plot(abs(Y);title(原始信号频谱,fontweight,bold);axis( 0 150000 0 4000)
26、;grid;程序结果如下图:原始信号波形及频谱的语音信号及其频谱分析利用MATLAB中的随机函数(rand或randn)发生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者发生nn服从尺度高斯分布的随机数矩阵,后者发生mn的随机数矩阵。在这里,我们选用Randn(m,n)函数。加噪程序如下所示:y,fs,nbits=wavread(OriSound);sound(y,fs,nbits); n = length (y) ; Noise=0.2*randn(n,2);s=y+Noise;sound(s);fig
27、ure;subplot(2,1,1);plot(s);title(加噪语音信号的时域波形,fontweight,bold);axis( 78000 80000 -1 1);grid;S=fft(s); subplot(2,1,2);plot(abs(S);title(加噪语音信号的频域波形,fontweight,bold);axis( 0 150000 0 4000);grid;加噪语音信号时域及频域波形 为了验证滤波器的可使用性,我们用经常使用的sin函数来进行验证。其具体程序及运行结果如下:t=0:1/1023:1;s=sin(2*pi*t);N=length(s);y=s+0.5*ran
28、d(1,N);subplot(2,1,1);plot(y);title(加噪语音信号的时域波形,fontweight,bold);S=fft(y); subplot(2,1,2);plot(abs(S);title(加噪语音信号的频域波形,fontweight,bold);Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求S域的频率响应的参数 num11,den11=bilinear(b1
29、1,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 z11=filter(num11,den11,s);sound(z11);m11=fft(z11); %求滤波后的信号figure;subplot(2,2,1);plot(abs(S),g);title(滤波前信号的频谱,fontweight,bold);grid;subplot(2,2,2);plot(abs(m11),r);title(滤波后信号的频谱,fontweight,bold);grid;subplot(2,2,3);plot(y);title(滤波前信号的波形,fontweight,bold);grid;sub
30、plot(2,2,4);plot(z11);title(滤波后的信号波形,fontweight,bold);grid;波前后语音信号的波形及频谱 用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。 函数fftfilt用的是重叠相加法实现线性卷积的计算。调用:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。 函数filter的调用格式:yn=filter(B,A.xn),它是依照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。y,fs,nbits=wavread (OriSound); %IIR低通n = length (y) ; %求出语音信号的长度Noise=0.2*randn(n,2); %随机函数发生噪声s=y+Noise; %语音信号加入噪声S=fft(s); Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,s);%求低通滤波器的阶数和截止频率
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1