应用matlab对语音信号进行频谱分析及滤波_第1页
应用matlab对语音信号进行频谱分析及滤波_第2页
应用matlab对语音信号进行频谱分析及滤波_第3页
应用matlab对语音信号进行频谱分析及滤波_第4页
应用matlab对语音信号进行频谱分析及滤波_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

数字信号处理—综合实验报告综合实验名称:应用MatLab对语音信号进行频谱分析及滤波系:学生姓名:班级:学号:成绩:指导教师:开课时间学年学期目录TOC\o"1-3"\h\u29788一.综合实验题目114094二、综合实验目的和意义1243752.1综合实验目的1310232.2综合实验的意义12654三.综合实验的主要内容和要求1138833.2综合实验的要求:224151四.实验的原理2176904.1数字滤波器的概念233234.2数字滤波器的分类213453〔1〕根据单位冲激响应h(n)的时间特性分类29514五.实验的步骤311914下面对各步骤加以具体说明。5.1语音信号的采集333765.2语音信号的频谱分析;370655.3设计数字滤波器和画出其频率响应5248925.3.1设计数字滤波器的性能指标:5117535.3.2用Matlab设计数字滤波器6242115.6设计系统界面1931282六、心得体会202412参考文献:21一.综合实验题目应用MatLab对语音信号进行频谱分析及滤波二、综合实验目的和意义2.1综合实验目的为了稳固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。2.2综合实验的意义语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最根本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度开展和计算机技术的飞速前进,推动了这一技术的开展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。三.综合实验的主要内容和要求3.1综合实验的主要内容:录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行比照,分析信号的变化;回放语音信号;综合实验应完成的工作:(1〕语音信号的采集;(2〕语音信号的频谱分析;(3〕数字滤波器的设计;(4〕对语音信号进行滤波处理;(5〕对滤波前后的语音信号频谱进行比照分析;3.2综合实验的要求:(1〕学生能够根据设计内容积极主动查找相关资料;(2〕滤波器的性能指标可以根据实际情况作调整;(3〕对设计结果进行独立思考和分析;(4〕设计完成后,要提交相关的文档;①综合实验报告书(纸质和电子版各一份,具体格式参照学校课程设计管理规定),报告内容要涵盖设计题目、设计任务、详细的设计过程、原理说明、、频谱图的分析、调试总结、心得体会、参考文献〔在报告中参考文献要做标注,不少于5篇〕。②可运行的源程序代码(电子版)(5〕在根本要求的根底上,学生可以根据个人对该综合实验的理解,添加一些新的内容。四.实验的原理4.1数字滤波器的概念:假设滤波器的输入、输出都是离散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器〔DF〕。【1】数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。【2】4.2数字滤波器的分类:数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。〔1〕根据单位冲激响应h(n)的时间特性分类无限冲激响应〔IIR〕数字滤波器有限冲激响应〔FIR〕数字滤波器[1]〔2〕根据实现方法和形式分类递归型数字滤波器非递归型数字滤波器快速卷积型〔3〕根据频率特性分类低通数字滤波器、高通数字滤波器、带通数字波器4.3滤波器的作用:滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯洁的直流电【3】。对特定频率的频点或该频点以外的频率进行有效滤除的电路,就是滤波器,其功能就是得到一个特定频率或消除一个特定频率。五.实验的步骤录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法和双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行比照,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。下面对各步骤加以具体说明。

5.1语音信号的采集:利用PC机上的声卡和Windows操作系统可以进行数字信号的采集。将话筒插入计算机的语音输入插口上,启动录音机。按下录音按钮,对话筒读一段话,读完后停止录音,屏幕左侧将显示所录声音的长度。【1】5.2语音信号的频谱分析:(1)首先画出由wavread函数采样后的信号的时域波形和它的频域响应波形;语音信号的程序如下:[x1,fs,bits]=wavread('c:\wudan2.wav');%读取语音信号的数据,赋给变量x1figure(20)plot(x1)%做原始语音信号以44.1k采样后的时域图形title('原始语音采样后时域信号');xlabel('时间轴n');ylabel('幅值A');figure(21)freqz(x1)%绘制原始语音信号采样后的频率响应图title('原始语音信号采样后频率响应图');运行结果:图1图2〔2)对语音信号进行FFT变换,得到FFT频谱特性曲线,与原语音信号的频谱特性曲线进行比拟。语音信号FFT的程序如下:[x1,fs,bits]=wavread('c:\wudan2.wav');%读取语音信号的数据,赋给变量x1y1=fft(x1,1024);%对采样后信号做1024点FFT变换f=fs*(0:511)/1024;figure(19)subplot(2,1,1);plot(f,abs(y1(1:512)));title('原始语音信号频谱')xlabel('频率/Hz');ylabel('幅值')subplot(2,1,2);plot(abs(y1(1:1024)))%采样后信号的FFT频谱图title('原始语音信号FFT频谱')xlabel('点数N');ylabel('幅值');运行结果:图35.3设计数字滤波器和画出其频率响应设计数字滤波器的性能指标:①低通滤波器性能指标fb=1000Hz,fc=1200Hz,As=100db,Ap=1db。②高通滤波器性能指标fs=4800Hz,fb=5000Hz,As=100db,Ap=1db。③带通滤波器性能指标fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100db,Ap=1db。用Matlab设计数字滤波器①用双线性变换法设计上面要求的3种滤波器。在Matlab中,可以利用函数butter,cheby1和ellip设计IIR滤波器;利用Matlab中的函数frepz画出各滤波器的频率响应。【2】②用窗函数法设计上面要求的3种滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。

5.4对语音信号进行滤波处理用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。并比拟滤波前后语音信号的波形及频谱。【4】IIR低通滤波器程序如下:fs=22050;[x2]=wavread('c:\wudan2.wav');Ts=1/fs;R1=10;wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rl=100;wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,R1,'s');%选择滤波器的最小阶数[Z,P,K]=buttap(N);%创立butterworth模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线figure(16)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR低通滤波器')f1=filter(bz,az,x2);figure(17)subplot(2,1,1)plot(x2)%画出滤波前的时域图title('IIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1);%画出滤波后的时域图title('IIR低通滤波器滤波后的时域波形');sound(f1,44100);%播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(18)y2=fft(x2,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%画出滤波前的频谱图title('IIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F1=plot(f,abs(F0(1:512)));%画出滤波后的频谱图title('IIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【5】运行结果:图4图5图6IIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=50;Wp=2*pi*5000/fs;Ws=2*pi*4800/fs;Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2);%将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,Rl,'s');%选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl);%创立切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2hp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线figure(13)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR高通滤波器')f1=filter(bz,az,x1);figure(14)subplot(2,1,1)plot(x1)%画出滤波前的时域图title('IIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1);%画出滤波后的时域图title('IIR高通滤波器滤波后的时域波形');sound(f1,44100);%播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(15)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%画出滤波前的频谱图title('IIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512)));%画出滤波后的频谱图title('IIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图7图8图9IIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');Fs=22050;Ts=1/Fs;R1=30;fb1=1200;fb2=3000;fc1=1000;fc2=3200;fs=22050;W1=2*fb1*pi/fs;W2=2*fc1*pi/fs;W3=2*fb2*pi/fs;W4=2*fc2*pi/fs;Wp=[W1,W3];Ws=[W2,W4];Rp=1;Rl=100;Wp1=2/Ts*tan(Wp/2);%将模拟指标转换成数字指标Ws1=2/Ts*tan(Ws/2);[N,Wn]=cheb2ord(Wp1,Ws1,Rp,R1,'s');%选择滤波器的最小阶数[Z,P,K]=cheb2ap(N,Rl);%创立切比雪夫模拟滤波器[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2bp(Bap,Aap,2100*2*pi,1800*2*pi);[bz,az]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换[H,W]=freqz(bz,az);%绘制频率响应曲线figure(10)plot(W*fs/(2*pi),abs(H))gridxlabel('频率/Hz')ylabel('频率响应幅度')title('IIR带通滤波器')f1=filter(bz,az,x1);figure(11)subplot(2,1,1)plot(x1)%画出滤波前的时域图title('IIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f1);%画出滤波后的时域图title('IIR带通滤波器滤波后的时域波形');sound(f1,44100);%播放滤波后的信号F0=fft(f1,1024);f=fs*(0:511)/1024;figure(12)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%画出滤波前的频谱图title('IIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512)));%画出滤波后的频谱图title('IIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【6】运行结果:图10图11图12FIR低通滤波器程序如下:fs=10000;x1=wavread('c:\wudan2.wav');wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rs=100;wdelta=ws-wp;N=ceil(8*pi/wdelta);%取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率figure(7)freqz(b,a,512);title('FIR低通滤波器');f2=filter(b,a,x1);figure(8)subplot(2,1,1)plot(x1)title('FIR低通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR低通滤波器滤波后的时域波形');sound(f2,44100);%播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(9)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR低通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR低通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【7】运行结果:图13图14图15FIR高通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=1;Rs=100;wdelta=wp-ws;N=ceil(8*pi/wdelta);%取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,'high');figure(4)freqz(b,a,512);title('FIR高通滤波器');f2=filter(b,a,x1);figure(5)subplot(2,1,1)plot(x1)title('FIR高通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR高通滤波器滤波后的时域波形');sound(f2,44100);%播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(6)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR高通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)F2=plot(f,abs(F0(1:512)));title('FIR高通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');【9】运行结果:图16图17图18FIR带通滤波器程序如下:fs=22050;x1=wavread('c:\wudan2.wav');wp1=2*pi*1200/fs;wp2=2*pi*3000/fs;ws1=2*pi*1000/fs;ws2=2*pi*3200/fs;Rp=1;Rs=100;wp=(wp1+ws1)/2;ws=(wp2+ws2)/2;wdelta=wp1-ws1;N=ceil(8*pi/wdelta);%取整wn=[wpws];[b,a]=fir1(N,wn/pi,'bandpass');figure(1)freqz(b,a,512);title('FIR带通滤波器');f2=filter(b,a,x1);figure(2)subplot(2,1,1)plot(x1)title('FIR带通滤波器滤波前的时域波形');subplot(2,1,2)plot(f2);title('FIR带通滤波器滤波后的时域波形');sound(f2,44100);%播放滤波后的语音信号F0=fft(f2,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x1,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR带通滤波器滤波前的频谱')xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2)plot(f,abs(F0(1:512)));title('FIR带通滤波器滤波后的频谱')xlabel('频率/Hz');ylabel('幅值');运行结果:图19图20图215.5回放语音信号

在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。回放语音程序:[x1,fs,bits]=wavread('c:\wudan2.wav');%读取语音信号的数据,赋给变量x1sound(x1,fs);%播放语音信号【8】5.6设计系统界面本系统界面主要采用if…else语句和menu菜单函数进行设计。程序如下:b=menu('请选择选项','原始信号采样后时域图和频谱图','FIR滤波器','IIR滤波器','退出');ifb==4b==0;endifb==1temp=menu('请选择选项','播放原始语音','原始语音时域图和频率响应图','原始语音频谱图及做FFT变换后频谱图','返回');iftemp==1voice;main;elseiftemp==2time;main;elseiftemp==3pingpu;main;elsemain;endelseifb==2temp=menu('请选择选项','FIR低通滤波器','FIR高通滤波器','FIR带通滤波器','返回');iftemp==1FIR_LP;main;elseiftemp==2FIR_HP;main;elseiftemp==3FIR_BP;main;elsemain;endelseifb==3temp=menu('请选择选项','IIR低通滤波器','IIR高通滤波器','IIR带通滤波器','返回');iftemp==1IIR_LP;main;elseiftemp==2IIR_HP;main;elseiftemp==3IIR_BP;main;else

温馨提示

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

评论

0/150

提交评论