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

下载本文档

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

文档简介

数字信号处理课程设计报告课设题目:语音信号的采集与处理学 院:专 业:班 级:姓 名:学 号:指导教师:2011 年7月1日 课程设计报告撰写要求1、页面设置纸张大小设置为纵向a4,页边距设置为:上3.8厘米,下 3.5厘米,左3厘米,右3厘米,页眉设置为3厘米,页脚设置为2.7厘米,文档网络设置为指定行和字符网格,每行34字,每页34行。2、段落及字体设置除各级标题外,首行缩进2字符;图、表及图题、表题首行不缩进,居中放置;图表不应超出版心范围;行距采用单倍行距。正文中文采用小四号宋体,英文采用新罗马字体(times new roman),段前0磅,断后0磅;一级标题采用小二号黑体,段前12磅,段后12磅二级标题采用小三号黑体,段前6磅,段后6磅三级标题采用四号黑体,段前6磅,段后0磅3、装订要求采用左侧装订,订两钉。1. 不要删除行尾的分节符,此行不会被打印哈尔滨工业大学(威海)课程设计报告目 录一. 课程设计任务1二. 课程设计原理及设计方案2三. 课程设计的步骤和结果3四. 课程设计总结4五. 设计体会5六. 参考文献6 - 41 -哈尔滨工业大学(威海)课程设计报告一. 课程设计任务1、语音信号的采集 利用windows下的录音机,录制一段自己的话音,时间在1s内,然后在matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。2、语音信号的频谱分析 在matlab中,可以利用函数fft对信号进行快速傅立叶变换,得到信号的频谱特性,要求学生首先画出语音信号的时域波形,然后对语音信号进行频谱分析。3、设计数字滤波器和画出其频率响应给出各滤波器的性能指标; 给定滤波器的性能指标如下: (1)低通滤波器的性能指标:fb=1000hz,fc=1200hz,as=100db,ap=1db. (2)高通滤波器的性能指标:fc=4800hz,fb=5000hz,as=100db,ap=1db. (3)带通滤波器的性能指标:fb1=1200hz, fb2=3000hz,fc1=1000hz, fc2=3200hz,as=100db,ap=1db. 采用窗函数法和双线性变换法设计上面要求的3种滤波器,并画出滤波器的频率响应; 4、用滤波器对信号进行滤波 然后用自己设计的滤波器对采集到的信号进行滤波,画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化; 5、回放语音信号,分析滤波前后的语音变化; 6、设计系统界面 为了使编制的程序操作方便,设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数、显示滤波器的频率响应,选择信号等。二. 课程设计原理及设计方案1用窗函数法设计fir滤波器根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度n(或阶数m=n-1),窗函数类型可根据最小阻带衰减as独立选择,因为窗口长度n对最小阻带衰减as没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度n,设待求滤波器的过渡带宽为w,它与窗口长度n近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的n,在n和窗函数类型确定后,即可调用matlab中的窗函数求出窗函数wd(n)。根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求滤波器频率应为hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从w=0到w=2采样n点,采用离散傅里叶反变换(idft)即可求出。用窗函数wd(n)将hd(n)截断,并进行加权处理,得到如果要求线性相位特性, 则h(n)还必须满足:根据上式中的正、 负号和长度n的奇偶性又将线性相位fir滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。 例如, 要设计线性相位低通特性可选择h(n)=h(n-1-n)一类,而不能选h(n)=-h(n-1-n)一类。 验算技术指标是否满足要求,为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。2.用双线性变换法设计iir数字滤波器脉冲响应不变法的主要缺点是产生频率响应的混叠失真。这是因为从s平面到平面是多值的映射关系所造成的。为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-/t/t之间,再用z=est转换到z平面上。也就是说,第一步先将整个s平面压缩映射到s1平面的-/t/t一条横带里;第二步再通过标准变换关系z=es1t将此横带变换到整个z平面上去。这样就使s平面与z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。图1双线性变换的映射关系为了将s平面的整个虚轴j压缩到s1平面j1轴上的-/t到/t段上,可以通过以下的正切变换实现 (1)式中,t仍是采样间隔。当1由-/t经过0变化到/t时,由-经过0变化到+,也即映射了整个j轴。将式(1)写成将此关系解析延拓到整个s平面和s1平面,令j=s,j1=s1,则得再将s1平面通过以下标准变换关系映射到z平面z=es1t从而得到s平面和z平面的单值映射关系为: (2) (3)式(2)与式(3)是s平面与z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换式(1)与式(2)的双线性变换符合映射变换应满足的两点要求。首先,把z=ej,可得 (4)即s平面的虚轴映射到z平面的单位圆。其次,将s=+j代入式(4),得因此由此看出,当0时,|z|0时,|z|1。也就是说,s平面的左半平面映射到z平面的单位圆内,s平面的右半平面映射到z平面的单位圆外,s平面的虚轴映射到z平面的单位圆上。因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。双线性变换法优缺点双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。这是因为s平面与z平面是单值的一一对应关系。s平面整个j轴单值地对应于z平面单位圆一周,即频率轴是单值变换关系。这个关系如式(4)所示,重写如下:上式表明,s平面上与z平面的成非线性的正切关系,如图2所示。由图2看出,在零频率附近,模拟角频率与数字频率之间的变换关系接近于线性关系;但当进一步增加时,增长得越来越慢,最后当时,终止在折叠频率=处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。图2双线性变换法的频率变换关系但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(4)及图2所示。由于这种频率之间的非线性变换关系,就产生了新的问题。首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图3所示。图3双线性变换法幅度和相位特性的非线性映射对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以校正。也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。三. 课程设计的步骤和结果1、语音信号的采集 利用windows下的录音机,录制一段自己的话音,时间在1s内,然后在matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。程序: y,fs,nbits=wavread( e:matlab_yuyinmy voice.wav )得到:fs = 22050nbits = 16由此可知,采样频率为22050hz,采样点数为16bit2、语音信号的频谱分析 在matlab中,利用函数fft对信号进行快速傅立叶变换,得到信号的频谱特性,首先画出语音信号的时域波形,然后对语音信号进行频谱分析。程序:y,fs,nbits=wavread(e:matlab_yuyinmy voice.wav);sound(y,fs,nbits);y = y - mean(y); %去直流成分y = fftshift(abs(fft(y);w = linspace(-fs/2,fs/2,length(y);subplot(2,1,1),plot(y);title(原始信号波形);subplot(2,1,2),plot(w,y);title(原始信号频谱);axis(0,2000,-inf,inf);3、设计数字滤波器和画出其频率响应给出各滤波器的性能指标; 给定滤波器的性能指标如下: (1)低通滤波器的性能指标:fb=1000hz,fc=1200hz,as=100db,ap=1db. (2)高通滤波器的性能指标:fc=4800hz,fb=5000hz,as=100db,ap=1db. (3)带通滤波器的性能指标:fb1=1200hz, fb2=3000hz,fc1=1000hz, fc2=3200hz,as=100db,ap=1db. 采用窗函数法和双线性变换法设计上面要求的3种滤波器,并画出滤波器的频率响应; 4、用滤波器对信号进行滤波 用自己设计的滤波器对采集到的信号进行滤波,画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化; 窗函数法设计fir滤波器:(1) 低通滤波器clear all;ft=22050;fp=1000;fs=1200;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);wp=2*fp/ft;ws=2*fs/ft;as=100;wdel = ws - wp; %过渡带宽n= ceil( 8*pi/wdel );%取整wn = (wp + ws)/2 %截止频率即wc% n取奇数if mod(n,2)=0 n= n + 1; %若为偶数则加1endfcuts=1000*2/ft 1200*2/ft; %归一化频率mags=1 0;devs=1-10(1/-20) 10(40/-20);n,wn,beta,ftype=kaiserord(fcuts,mags,devs); %计算出凯塞窗n,beta的值b= fir1(n,wn,ftype,kaiser(n+1,beta),noscale); freq_axis = 0:pi/512:pi-pi/512; freq_norm = 0:511/512; %归一化的频率轴 h= freqz( b);%变成频率响应 %b为hn系数,1表示无极点(因为是fir),512表示点数)subplot(2,1,1);plot( freq_norm,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( fir-幅度响应);subplot(2,1,2);plot( freq_norm,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( fir-相位响应);f2=filter(b,1,y); %滤波figure(2)subplot(2,1,1)plot(y)title(fir低通滤波器滤波前的时域波形);subplot(2,1,2)plot(f2);title(fir低通滤波器滤波后的时域波形);sound(f2); %播放滤波后的语音信号f0=fftshift(abs(fft(f2);figure(3)y2 = fftshift(abs(fft(y);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,1);plot(w,y2);title(fir低通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(f0);subplot(2,1,2)plot(w,f0);title(fir低通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为低通,与题目要求的fp1=1000,fs1=1200基本吻合,阻带衰减近似为100,且为线性相位。 比较滤波前和滤波后的频谱可发现通过了低频成分,滤掉了高频成分。(2) 高通滤波器clear all;ft=22050;fp=5000;fs=4800;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);wp=2*fp/ft;ws=2*fs/ft;as=100;wdel = wp - ws; %过渡带宽n= ceil( 8*pi/wdel );%取整wn = (wp + ws)/2 %截止频率即wc% n取奇数if mod(n,2)=0 n= n + 1; %若为偶数则加1endfcuts=4800*2/ft 5000*2/ft; %归一化频率mags=0 1;devs=1-10(1/-20) 10(40/-20);n,wn,beta,ftype=kaiserord(fcuts,mags,devs); %计算出凯塞窗n,beta的值b= fir1(n,wn,ftype,kaiser(n+1,beta),noscale); freq_axis = 0:pi/512:pi-pi/512; freq_norm = 0:511/512; %归一化的频率轴 h= freqz( b);%变成频率响应 %b为hn系数,1表示无极点(因为是fir),512表示点数)subplot(2,1,1);plot( freq_norm,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( fir-幅度响应);subplot(2,1,2);plot( freq_norm,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( fir-相位响应);f2=filter(b,1,y);figure(2)subplot(2,1,1)plot(y)title(fir高通滤波器滤波前的时域波形);subplot(2,1,2)plot(f2);title(fir高通滤波器滤波后的时域波形);sound(f2); %播放滤波后的语音信号f0=fftshift(abs(fft(f2);figure(3)y2 = fftshift(abs(fft(y);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,1);plot(w,y2);title(fir高通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(f0);subplot(2,1,2)plot(w,f0);title(fir高通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为高通,与题目要求的fp1=5000,fs1=4800基本吻合,阻带衰减近似为100,且为线性相位。 比较滤波前和滤波后的频谱可发现通过了高频成分,滤掉了低频成分。(3) 带通滤波器clear all;ft=22050;fp1=1200;fp2=3000;fs1=1000;fs2=3200;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);wp1=2*fp1/ft;wp2=2*fp2/ft;ws1=2*fs1/ft;ws2=2*fs2/ft;as=100;wp=(wp1 + ws1)/2;ws=(wp2 + ws2)/2;wdel = wp1 - ws1; %过渡带宽n= ceil( 8*pi/wdel );%取整wn = wp ws; %截止频率即wc% n取奇数if mod(n,2)=0 n= n + 1; %若为偶数则加1endfcuts=1000*2/ft 1200*2/ft 3000*2/ft 3200*2/ft; %归一化频率mags=0 1 0;devs=0.01 0.1087 0.01;n,wn,beta,ftype=kaiserord(fcuts,mags,devs); %计算出凯塞窗n,beta的值b= fir1(n,wn,ftype,kaiser(n+1,beta),noscale); freq_axis = 0:pi/512:pi-pi/512; freq_norm = 0:511/512; %归一化的频率轴 h= freqz( b);%变成频率响应 %b为hn系数,1表示无极点(因为是fir),512表示点数)subplot(2,1,1);plot( freq_norm,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( fir-幅度响应);subplot(2,1,2);plot( freq_norm,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( fir-相位响应);f2=filter(b,1,y);figure(2)subplot(2,1,1)plot(y)title(fir带通滤波器滤波前的时域波形);subplot(2,1,2)plot(f2);title(fir带通滤波器滤波后的时域波形);sound(f2); %播放滤波后的语音信号f0=fftshift(abs(fft(f2);figure(3)y2 = fftshift(abs(fft(y);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,1);plot(w,y2);title(fir带通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(f0);subplot(2,1,2)plot(w,f0);title(fir带通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为带通,与题目要求的fp1=1200,fp2=3000,fs1=1000,fs2=3200基本吻合,阻带衰减近似为100,且为线性相位。 比较滤波前和滤波后的频谱可发现通过了通带中的频率成分,滤掉了低频和高频成分。双线性变换法设计iir滤波器(1)低通滤波器clear all;ft=22050;fp=1000;fs=1200;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);as=100;ap=1;wp=2*pi*fp/ft;ws=2*pi*fs/ft;fs1=1;fp=2*tan(wp/2);fs=2*tan(ws/2);n11,wn11=ellipord(wp,ws,ap,as,s);b11,a11=ellip(n11,ap,as,wn11,low,s);num11,den11=bilinear(b11,a11,fs1);h,w=freqz(num11,den11,512,ft);subplot(2,1,1);plot( w,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( iir-幅度响应);subplot(2,1,2);plot( w,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( iir-相位响应);f1=filter(num11,den11,y);figure(2)subplot(2,1,1)plot(y) %画出滤波前的时域图title(iir低通滤波器滤波前的时域波形);subplot(2,1,2)plot(f1); %画出滤波后的时域图title(iir低通滤波器滤波后的时域波形);sound(f1); %播放滤波后的信号f0=fftshift(abs(fft(f1);w = linspace(-ft/2,ft/2,length(f0);figure(3)y2=fftshift(abs(fft(y);subplot(2,1,1);plot(w,y2); %画出滤波前的频谱图title(iir低通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,2)plot(w,abs(f0); %画出滤波后的频谱图title(iir低通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为低通,与题目要求的fp1=1000,fs1=1200基本吻合,阻带衰减近似为100,但非线性相位。 比较滤波前和滤波后的频谱可发现通过了低频成分,滤掉了高频成分。(2)高通滤波器clear all;ft=22050;fp=5000;fs=4800;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);as=100;ap=1;wp=2*pi*fp/ft;ws=2*pi*fs/ft;fs1=1;fp=2*tan(wp/2);fs=2*tan(ws/2);n11,wn11=ellipord(wp,ws,ap,as,s);b11,a11=ellip(n11,ap,as,wn11,high,s);num11,den11=bilinear(b11,a11,fs1);h,w=freqz(num11,den11,512,ft);subplot(2,1,1);plot( w,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( iir-幅度响应);subplot(2,1,2);plot( w,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( iir-相位响应);f1=filter(num11,den11,y);figure(2)subplot(2,1,1)plot(y) %画出滤波前的时域图title(iir高通滤波器滤波前的时域波形);subplot(2,1,2)plot(f1); %画出滤波后的时域图title(iir高通滤波器滤波后的时域波形);sound(f1); %播放滤波后的信号f0=fftshift(abs(fft(f1);w = linspace(-ft/2,ft/2,length(f0);figure(3)y2=fftshift(abs(fft(y);subplot(2,1,1);plot(w,y2); %画出滤波前的频谱图title(iir高通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,2)plot(w,abs(f0); %画出滤波后的频谱图title(iir高通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为高通,与题目要求的fp1=5000,fs1=4800基本吻合,阻带衰减近似为100,但非线性相位。 比较滤波前和滤波后的频谱可发现通过了高频成分,滤掉了低频成分。(3)带通滤波器clear all;ft=22050;fp1=1200;fp2=3000;fs1=1000;fs2=3200;y,fs,nbits=wavread(my voice.wav);%sound(y,fs,nbits);y=y-mean(y);fp=fp1,fp2;fs=fs1,fs2;as=100;ap=1;t=2;wp1=2*pi*fp1/ft;wp2=2*pi*fp2/ft;ws1=2*pi*fs1/ft;ws2=2*pi*fs2/ft;wp1=(2/t)*tan(wp1/2);wp2=(2/t)*tan(wp2/2);ws1=(2/t)*tan(ws1/2);ws2=(2/t)*tan(ws1/2)w0=wp1*wp2;w0=sqrt(w0);bw=wp2-wp1; %带通滤波器的通带宽度lp=1; %归一化处理ls=ws1*bw/(w0-ws12);n,wn=ellipord(lp,ls,ap,as,s);b,a=ellip(n,1,40,wn,s);bt,at=lp2bp(b,a,w0,bw);num,den=bilinear(bt,at,0.5);z,p,k=tf2zp(num,den);h,w=freqz(num,den,512,ft);figure(1)subplot(2,1,1);plot( w,20*log10(abs(h) ); %画对数幅度谱hold on;xlabel( 频率w/pi ); ylabel( 幅度(db) );title( iir-幅度响应);subplot(2,1,2);plot( w,angle(h) ); hold on;xlabel( 频率w/pi ); ylabel( 相位 );title( iir-相位响应);f1=filter(num,den,y);figure(2)subplot(2,1,1)plot(y) %画出滤波前的时域图title(iir带通滤波器滤波前的时域波形);subplot(2,1,2)plot(f1); %画出滤波后的时域图title(iir带通滤波器滤波后的时域波形);sound(f1); %播放滤波后的信号f0=fftshift(abs(fft(f1);w = linspace(-ft/2,ft/2,length(f0);figure(3)y2=fftshift(abs(fft(y);subplot(2,1,1);plot(w,y2); %画出滤波前的频谱图title(iir带通滤波器滤波前的频谱)xlabel(频率/hz);ylabel(幅值);w = linspace(-ft/2,ft/2,length(y2);subplot(2,1,2)plot(w,abs(f0); %画出滤波后的频谱图title(iir带通滤波器滤波后的频谱)xlabel(频率/hz);ylabel(幅值);分析:由频率响应可看出为带通,与题目要求的fp1=1200,fp2=3000,fs1=1000,fs2=3200基本吻合,阻带衰减近似为100,但非线性相位。 比较滤波前和滤波后的频谱可发现通过了通带中的频率成分,滤掉了低频和高频成分。此外,还可以利用matlab自带的fdatool工具来设计已知fp,fs和衰减的滤波器,例1(iir滤波器设计):设计巴特沃斯高通滤波器,性能指标为fs=22050hz,fs=4800hz,fp=5000hz,ap=1,as=100。在fdatool界面中输入参数,并生成相应的.m文件,然后求得滤波器的频率响应输出。程序:%function hd = fdatool_butter_high%fdatool_butter_high returns a discrete-time filter object.% m-file generated by matlab(r) 7.8 and the signal processing toolbox 6.11.% generated on: 05-jul-2011 21:16:59% butterworth highpass filter designed using fdesign.highpass.% all frequency values are in hz.fs = 22050; % sampling frequencyfstop = 4800; % stopband frequencyfpass = 5000; % passband frequencyastop = 100; % stopband attenuation (db)apass = 1; % passband ripple (db)match = stopband; % band to match exactly% construct an fdesign object and call its butter method.h = fdesign.highpass(fstop, fpass, astop, apass, fs);hd = design(h, butter, matchexactly, match);h = freqz(hd);w = linspace(0,fs/2,length(h);subplot(2,1,1);plot(w,20*log10(abs(h);%画对数幅度谱hold on;xlabel( 归一化频率w/pi ); ylabel( 幅度(db) );title( iir-幅度响应);subplot(2,1,2);plot( w,angle(h) ); hold on;xlabel( 归一化频率w/pi ); ylabel( 相位 );title( iir-相位响应);% eof可得到频率响应如下图:例2(fir滤波器设计):设计凯撒高通滤波器,性能指标为fs=22050hz,fs=4800hz,fp=5000hz,ap=1,as=100。则关键程序为:n,wn,beta,type = kaiserord(fstop fpass/(fs/2), 0 1, dpass dstop);% calculate the coefficients using the fir1 function.b = fir1(n, wn, type, kaiser(n+1, beta), flag);hd = dfilt.dffir(b);h= freqz( b);%变成频率响应 %b为hn系数,1表示无极点(因为是fir),512表示点数)subplot(2,1,1);plot( freq_norm,20*log10(abs(h) ); %画对数幅度谱5、回放语音信号,分析滤波前后的语音变化; 使用函数sound(y,fs,nbits)播放滤波前语音信号;y经过滤波后为f2,使用sound(f2)播放滤波后语音信号语音变化:语音信号经过低通滤波能听到与原始语音信号近似的声音,但明显低沉一些,而经过高通和带通后可听到混浊的声音,但无法听清。6、设计系统界面 为了使编制的程序操作方便,设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的类型,即fir或iir,低通、高通或带通;输入滤波器的参数:fp1,fp2,fs1,fs2,ap,as;显示滤波器的频率响应;可分别播放滤波前和滤波后的语音信号,便于比较;设有generate(生成键)、reset(复位键)及quit(关闭窗口健);此外还可实现用matlab控制声卡现场录音做滤波,可自行设定录音时间。系统界面如下:主要程序如下:(1)原始语音信号按钮 vois= get(handles.voice_select,value) ; if(vois=1) y,fs,nbits=wavread(my voice.wav); sound(y,fs,nbits); else if(vois=2) load voiced sound(y,22050); endend(2)滤波后语音信号按钮load filenamesound(f2)(3)generate生成按钮fil_f = get(handles.fir_filter,value) ; fil_i = get(handles.iir_filter,value) ; fir_selection = get(handles.fir_select,value); iir_selection = get(handles.iir_select,value); type = get(handles.style,value); fp1 = get(handles.fp1_edit,string); fp1 = str2double(fp1); fp2 = get(handles.fp2_edit,string); fp2 = str2double(fp2); fs1 = get(handles.fs1_edit,string); fs1 = str2double(fs1); fs2 = get(handles.fs2_edit,string); fs2 = str2double(fs2); ap = get(handles.ap_edit,string); ap = str2double(ap); as = get(handles.as_edit,string); as = str2double(as);vois= get(handles.voice_select,value) ; if(vois=1) y,fs,nbits=wavread(my voice.wav); else if(vois=2) load voiced endend if(fil_f = 1 & fil_i = 0 ) %选定为fir滤波器 switch(fir_selection) case 1 %选定为kaiser窗 switch(type) case 1%low passcase 2%high passcase 3%band passendcase 2 switch(type)case 1%low passcase 2%high passcase 3%band passendcase 3switch(type)case 1%low passcase 2%high passcase 3%band passendendelse if (fil_f = 0 & fil_i =1 ) %选定为iir滤波器switch(iir_selection)case 1 %选定为椭圆滤波器switch(type)case 1%low passcase 2% high passcase3%band passendcase 2switch(type)case 1%low passcase 2%high passcase 3%band passendendendend其中每个滤波器中需用axes(handles.axes)函数来画图,且末尾处要用语句save filename f2将f2保存至工作区间,以便播放滤波后语音信号时利用load filename来调用f2。(4) reset(复位)按钮samelines = findobj(type,line); %查找线条对象 for i = 1 :length(samelines)

温馨提示

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

评论

0/150

提交评论