数字信号处理课程设计-语音信号处理.doc_第1页
数字信号处理课程设计-语音信号处理.doc_第2页
数字信号处理课程设计-语音信号处理.doc_第3页
数字信号处理课程设计-语音信号处理.doc_第4页
数字信号处理课程设计-语音信号处理.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

武汉工程大学课程设计(论文)课程设计(论文)题 目语音信号处理姓 名学 号指 导 老 师指导教师职称讲师年级专业班级12信息与计算科学(1,2)班所 在 学 院理学院2015年7 月 1日i目录目录i摘要ii前言iii 课题背景11.1 课题要求11.2 课题意义11.3 文献综述2 设计方案论证32.1 实验基本步骤32.2 原始信号和加噪后的分析4 数字滤波器的设计63.1 数字滤波器的设计步骤63.2 滤波器的性能指标的设定6 gui界面设计及滤波结果分析74.1 gui界面设计74.2 滤波结果及分析8 总结12致谢13参考文献14程序代码15i摘要本课题主要是运用matlab 7.0,解决数字信号处理的声音加噪滤波问题的运算程序。我们通过对录音的信号进行时域、频域波形分析,然后加噪分析,最后选择iir和fir滤波器的低通、带通、高通方式对加噪的语音信号进行滤波恢复原始信号。在实验的过程中,我们需要掌握滤波器方式的概念和应用知识。本文还给出了对这一程序的测试情况、测试结果的分析和完整程序代码。关键词:加噪、iir、firii前言本文详细介绍了关于语音信号处理课题内容的应用程序的设计与开发。全文共5章。第1章是介绍了本次课题的实验要求、课题意义和文献综述。第2章介绍了实验的基本步骤和对语音信号的图谱分析以及加噪后的图谱分析。第3章主要介绍了关于数字滤波器的基本步骤以及对iir、fir下的三种滤波方式的性能指标的设定。全文的核心部分都写在程序代码中。第4章主要是由两部分构成,包括程序运行后的结果和对结果的具体比较和分析。第5章是对数字信号处理问题程序开发过程的总结。总结了本次课程设计的意义,以及谈到了我在本次课程设计中的收获与感想。全文的最后是致谢、参考文献。邹强 陈伟 温春威2015-07-01 于武汉工程大学理学院iii 课题背景课题要求录制一段自己的语音信号(可以录制含有噪音的信号,或者录制语音后再加进噪音信号), 要求: (1)对语音信号进行采样,画出采样后语音信号的时域波形和频谱图(2)对语音信号进行加噪,画出加噪后语音信号的时域波形和频谱图; (3)设计iir、fir的6个滤波器,并画出滤波器的频率响应曲线; (4)用设计的滤波器对语音信号进行滤波,画出滤波后信号的时域波形和频谱图; (5)对滤波前后的信号进行对比,分析信号的变化; (6)回放语音信号。课题意义数字信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。通过语言相互传递信息是人类最重要的基本功能之一。语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。 数字信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。文献综述文献0较详细地介绍了数字信号处理这门学科的发展历史和经典定义定理,对于解决本次课题内容提供了很好地参考。文献error! reference source not found.介绍了如何运用matlab对各种信号处理的程序实现,利用计算机直观地表现课本上一些抽象的定理,对于本次课题内容起到了很大的帮助。 设计方案论证2.1 实验基本步骤 1. 理论依据 根据设计要求分析系统功能,掌握设计中所需理论(采样频率、采样位数的概念,采样定理; 时域信号的fft分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较),阐明设计原理。 2. 信号采集 采集语音信号,并对其进行fft频谱分析,画出信号的时域波形图和频谱图。3. 构造受干扰信号并对其进行fft频谱分析 对所采集的语音信号加入干扰噪声,对语音信号进行回放,感觉加噪前后声音的变化,分析原因,得出结论。并对其进行fft频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析,阐明原因,得出结论。 4. 数字滤波器设计 根据待处理信号特点,设计合适数字滤波器,绘制所设计滤波器的幅频和相频特性。5. 信号处理 用所设计的滤波器对含噪语音信号进行滤波。对滤波后的语音信号进行fft频谱分析。画出处理过程中所得各种波形及频谱图。 对语音信号进行回放,感觉滤波前后声音的变化。比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析,阐明原因,得出结论。 6. 设计图形用户界面 设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。2.2 原始信号和加噪后的分析用计算机的录音机录音,然后保存。我们将录音在matlab平台下打开,主要程序如下:file=music.wav;%录音的音频文件 %y是音频的数据向量,fs是采样频率(单位hz),nbits是每一个采样点的数据深度(即比特数)y,fs,nbits=wavread(file); %把语音信号进行加载入matlab仿真软件平台sound(y,fs,nbits); %回放语音信号n=length(y);%求出语音信号的长度 y=fft(y,n); %傅里叶变换 axes(handles.axes1);plot(y);title(原始信号波形);grid;axes(handles.axes2);plot(abs(y);title(原始信号频谱);grid;图1 原是信号分析图加噪信号程序如下:y,fs,nbits=wavread (music.wav);n=length(y);%求出语音信号的长度noise=0.02*randn(n,2);%随机函数产生噪声s=y+noise;%语音信号加入噪声sound(s,fs,nbits);%回放声音的信号wavwrite(s,fs,nbits,addnoise)%将加噪的文件存入当前文件夹中 s=fft(s);%傅里叶变换 axes(handles.axes3);plot(s);title(加噪语音信号的时域波形); grid;axes(handles.axes4);plot(0:length(s)-1)/length(s)*8000,abs(s);title(加噪语音信号的频域波形);grid;图2 加噪后的信号分析图 数字滤波器的设计3.1 数字滤波器的设计步骤 不论是iir滤波器还是fir滤波器的设计都包括三个步骤:1) 按照实际任务的要求,确定滤波器的性能指标。 2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。根据不同的要求可以用iir系统函数,也可以用fir系统函数去逼近。 3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。3.2 滤波器的性能指标的设定根据语音信号的特点给出有关滤波器的性能指标: 低通滤波器的性能指标 fp=1000hz,fc=1200hz,as=40db ,ap=1db 高通滤波器的性能指标 fp=4800hz,fc=3500hz,as=40db,ap=1db 带通滤波器的性能指标 fp1=1200hz,fp2=3000hz,fc1=1000hz,fc2=3200hz, as=40db,ap=1db 在matlab中,可以利用函数fir1 设计fir 滤波器,利用函数butter,cheby1和ellip设计iir 滤波器,利用matlab中的函数freqz画出各步步器的频率响应。分析如下: 函数fir1 默认的设计滤波器的方法为窗函数法中可选的窗函数有rectangular barlrtt hamming hann blackman窗相应的都有实现函数。 函数butter,cheby1 和ellip设计iir 滤波器时都是默认的双线性变换法,所 以在设计滤波器时只需要代入相应的实现函数即可。 gui界面设计及滤波结果分析4.1 gui界面设计在控件布局设计区放置个2panel控件、7个axes控件、9个text控件、6个pushbutton控件、2个radiobutton控件、1个buttongroup控件。程序运行后的界面外观如下:图3 程序运行后的界面外观图4.2 滤波结果及分析滤波结果图图4 iir低通滤波器滤波图图5 iir带通滤波器滤波图图6 iir高通滤波器滤波图图7 fir低通滤波器滤波图图8 fir带通滤波器滤波图图9 fir高通滤波器滤波图结果分析首先,先看低通滤波的结果。从信号波形上看,滤波后波形基本上接近原式信号波形。其次,到带通滤波的结果。无论是iir还是fir滤波器,滤波后信号时频与原信号相差很远,耳机中也没有原音,滤波效果极差。最后,是高通滤波结果。iir滤波器滤波后波形基本上接近原式信号波形,而fir滤波器滤波后信号十分杂乱,丝毫没有滤出原始信号。从频谱上看,滤波后,绝大部分的噪带被滤除。从耳机播出的声音来听,基本上已经没有噪音,但是音质受到了部分影响。而同样是低通滤波,fir的效果略微强iir。从频谱上面分析,原始信号集中于低频区域,而随机噪声主要分布于高频。由此我们完全可以预见,只有低通滤波器能够取得预想的滤波效果。高通和带通则会把原始信号完全滤除,只剩下大部分的噪音。 综上六种滤波器,可以看到,在处理指定的音频信号时,低通滤波器可以最好地滤除加噪信号中的随机。13 总结课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不少的过程”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义我今天认真地进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。 通过本次课程设计,我感受到只有在了解课本知识的前提下,才能更好的应用matlab;并且熟练的应用matlab也可以很好的加深我对课程的理解,为我带来方便。这次设计使我了解了matlab的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。同时我相信,进一步加强对matlab的学习与研究对我今后的学习将会起到很大的帮助。 这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。此外,我还对滤波器有了更深的认识,尤其是滤波器参数对滤波器性能的影响。通带截止频率、阻带截止频率、通带波纹系数、阻带波纹系数都是影响滤波器的阶数的,而滤波器的阶数越大,其选频特性越好。 总的来说,这次课程设计还是比较成功的,在设计中遇到了一些问题,在同学和书本的帮助下,也都解决了,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,还锻炼了自己的能力,感到收获很大。通过这样的课程设计锻炼了自己的能力,在实践过程中碰到了很多困难,都被我一一解决,本次可设使我收获颇丰,对我日后的发展必将起到积极的推动作用。致谢一份课程设计的总结,一份对老师的感谢。他严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我们。让我们在数理统计方面得到了深入的了解,在数据统计与分析方面得到了进一步认识和理解。在此,我向严老师致以诚挚的谢意和崇高的敬意。同时我还要感谢我的同学们。在论文设计中,当我遇到问题时,他们都给了我很多的建议和帮助,我不仅得到了新的知识,更得到了更深厚的友谊。参考文献1 姚天任,江太辉.数字信号处理m.武汉:华中科技大学出版社,2007.2 刘泉,阙大顺.数字信号处理原理与实现m.北京:电子工业出版社.2005. 程序代码function varargout = music(varargin)gui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, music_openingfcn, . gui_outputfcn, music_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);endfunction music_openingfcn(hobject, eventdata, handles, varargin)% choose default command line output for musichandles.output = hobject;% update handles structureguidata(hobject, handles);% - outputs from this function are returned to the command line.function varargout = music_outputfcn(hobject, eventdata, handles) varargout1 = handles.output;% - executes on button press in radiobutton1.function radiobutton1_callback(hobject, eventdata, handles)% - executes on button press in radiobutton2.function radiobutton2_callback(hobject, eventdata, handles)% - executes on button press in pushbutton5.function pushbutton5_callback(hobject, eventdata, handles)y,fs,nbits=wavread (music.wav);n=length(y);%求出语音信号的长度noise=0.02*randn(n,2);%随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s);%傅里叶变换 if get(handles.radiobutton1,value) %iir低通滤波器 fp=1000;%阻带截止频率 fs=1200;%通带截止频率 ft=8000;%采集频率 as=40;%阻带波纹as=40 ap=1;%通带波纹ap=1 wp=2*pi*fp/ft;ws=2*pi*fs/ft; fp=2*ft*tan(wp/2);fs=2*ft*tan(ws/2); n,wn=buttord(wp,ws,ap,as,s); %求低通滤波器的阶数和截止频率 b,a=butter(n,wn,s); %求s域的频率响应的参数 num,den=bilinear(b,a,1); %双线性变换实现s域到z域的变换 h,w=freqz(num,den); %根据参数求出频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h);title(iir低通滤波器);axis(0 4000 0 1.5);grid; z=filter(num,den,y); %滤波后的信号 sound(z,fs,nbits);%播放滤波后的信号声音 axes(handles.axes5);plot(z);title(滤波后的信号波形);grid; axes(handles.axes6);plot(0:length(z)-1)/length(z)*8000,abs(z),r);title(滤波后信号的频谱);grid; endif get(handles.radiobutton2,value) %fir低通滤波器 ft=8000;fp=1000;fs=1200; wp=2*fp/ft; ws=2*fs/ft;ap=1;as=40; p=1-10.(-ap/20);%通带阻带波纹 s1=10.(-as/20); fpts=wp ws; mag=1 0;dev=p s1; n,wn,beta,ftype=kaiserord(fpts,mag,dev); b=fir1(n,wn,kaiser(n+1,beta);%由fir1 设计滤波器 h,w=freqz(b,1);%得到频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h);title(fir低通滤波器);axis(0 4000 0 1.5);grid; z=filter(b,1,y);%滤波后的信号 sound(z,fs,nbits);%播放滤波后的信号声音 axes(handles.axes5);plot(z);title(滤波后的信号波形);grid; axes(handles.axes6);plot(0:length(z)-1)/length(z)*8000,abs(z),r);title(滤波后信号的频谱);axis(0 8000 0 0.2);grid;end% - executes on button press in pushbutton6.function pushbutton6_callback(hobject, eventdata, handles)y,fs,nbits=wavread (music.wav);n=length(y);%求出语音信号的长度noise=0.02*randn(n,2);%随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s);%傅里叶变换 if get(handles.radiobutton1,value) %iir带通滤波器 fp1=1200; fp2=3000; fs1=1000; fs2=3200; ft=8000; %带通到低通滤波器的转换 wp1=tan(pi*fp1/ft); wp2=tan(pi*fp2/ft); ws1=tan(pi*fs1/ft); ws2=tan(pi*fs2/ft); w=wp1*wp2/ws2; bw=wp2-wp1;wp=1; ws=(wp1*wp2-w.2)/(bw*w); as=40;%阻带波纹as=40 ap=1;%通带波纹ap=1 n1,wn1=buttord(wp,ws,ap,as,s); %求低通滤波器的阶数和截止频率 b,a=butter(n1,wn1,s); %求s 域的频率响应参数 num1,den1=lp2bp(b,a,sqrt(wp1*wp2),bw);%将s 域低通参数转为带通的 num2,den2=bilinear(num1,den1,1);%双线性变换频率响应s到z域转换 h,w=freqz(num2,den2);%根据参数求出频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h);title(iir带通滤波器);axis(0 4000 0 1.5);grid; z=filter(num2,den2,y); %滤波后的信号 sound(z,fs,nbits);%播放滤波后的信号声音 axes(handles.axes5);plot(z);title(滤波后的信号波形); grid; axes(handles.axes6);plot(0:length(z)-1)/length(z)*8000,abs(z),r);title(滤波后信号的频谱); grid; endif get(handles.radiobutton2,value) %fir带通滤波器 fp1=1200;fp2=3000; fs1=1000;fs2=3200;ft=8000; wp1=tan(pi*fp1/ft);%带通到低通滤波器参数转换 wp2=tan(pi*fp2/ft);ws1=tan(pi*fs1/ft); ws2=tan(pi*fs2/ft); w=wp1*wp2/ws2; bw=wp2-wp1;wp=1; ws=(wp*wp2-w.2)/(bw*w); as=40;%阻带波纹as=40 ap=1;%通带波纹ap=1 n,wn=buttord(wp,ws,ap,as,s);%求低通滤波器的阶数和截止频率 b,a=butter(n,wn,s);%求s 域的频率响应的参数 num,den=lp2bp(b,a,sqrt(wp1*wp2),bw);%将s 域低通参数转为带通 num1,den1=bilinear(num,den,1);%双线性变换实现s 域到z 域的转换 h,w=freqz(num1,den1);%根据参数求出频率响应 axes(handles.axes7);plot(w*8000*0.5/pi,abs(h);title(fir带通滤波器);axis(0 4000 0 1.5);grid; z=filter(num1,den1,y); %滤波后的信号 sound(z,fs,nbits);%播放滤波后的信号声音 axes(handles.axes5);plot(z);title(滤波后的信号波形); grid; axes(handles.axes6);plot(0:length(z)-1)/length(z)*8000,abs(z),r);title(滤波后信号的频谱); grid; end% - executes on button press in pushbutton7.function pushbutton7_callback(hobject, eventdata, handles)y,fs,nbits=wavread (music.wav);n=length(y);%求出语音信号的长度noise=0.02*randn(n,2);%随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s);%傅里叶变换 if get(handles.radiobutton1,value) ft=8000; fp=4000; fs=3500; wp1=tan(pi*fp/ft);%高通到低通滤波器参数转换 ws1=tan(pi*fs/ft);wp=1; ws=wp1*wp/ws1; as=40;%阻带波纹as=40 ap=1;%通带波纹ap=1 n1,wn1=buttord(wp,ws,ap,as,s);%求低通滤波器的阶数和截止频率 b,a=cheby1(n1,1,wn1,s);%求s 域的频率响应的参数 num,den=lp2hp(b,a,wn1);%将s 域低通参数转为高通的 num1,den1=bilinear(num,den,1);%双线性变换频率响应s 到z 域转换 h,w=freqz(num1,den1); axes(handles.axes7);plot(w*21000*0.5/pi,abs(h);title(iir高通滤波器);axis(0 12000 0 1.5);grid; z=filter(num1,den1,y);%滤波后的信号 sound(z,fs,nbits);%播放滤波后的信号声音 axes(handles.axes5);plot(z);title(滤波后的信号波形);grid; axes(handles.axes6);plot(0:length(z)-1)/length(z)*8000,abs(z),r);title(滤波后信号的频谱);grid; endif get(handles.radiobutton2,value) %fir高通滤波器 ft=8001;fp=4000;fs=3500; wp=2*fp/ft;ws=2*fs/ft; ap=1;as=40; p=1-10.(-ap/20); %通带阻带波纹 s1=10.(-as/20); fpts=ws wp;mag=0 1;dev=p s1; n,wn,beta,ftype=kaiserord(fpts,mag,dev); b=fir1(n,wn,high,kaiser(n+1,beta);%由fir1 设计滤波器 h,w=freqz(b,1);%得到频率响应 axes(handles.axes7);plot(w*12000*0.5/pi,abs(h);title(fir高

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论