MATLAB的语音信号滤波设计与实现 .docx
精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习北京理工高校珠海学院课程设计可编辑资料 - - - 欢迎下载精品名师归纳总结学院: 信息科学技术学院专业: 06 级信息工程班级: 信工 3 班姓名: 谢明学号:0601331007基于 MATLAB的语音信号滤波设计与实现一、试验目的:(1) 完成对语音信号的采集、频谱分析及滤波。(2) 比较滤波前后语音信号的波形及频谱。二、试验原理:三试验设计内容 巴特沃思滤波器滤波%参%数%初始化 %clear all。 % 关闭以往仿真的数据栈A=5。 %噪声的振幅u1=0.01。%噪声振幅的衰减系数u2=0.02。u3=0.03。f1=50。%多频噪声频率f2=200。f3=800。Y,fs,bits=wavread'0601331007.wav' %读出信号 1,采样率和采样位数% soundY,fs。% X,Fs,bits=wavread'0601331007.wav'。 %读出信号 2,采样率和采样位数n=lengthY。 %求采样信号 1 的长度% m=lengthX。 %求采样信号 2 的长度t=0:1/fs:n-1/fs 。 %求采样信号 1 时域上的采样点数% t1=0:1/Fs:m-1/fs 。 %求采样信号 2 时域上的采样点数% % % % % % t=0:n-1/fs。% 构造噪声 %y1=u1*A*sin2*pi*f1*t+u1*A*sin2*pi*f2*t%两两噪声相加y2=u1*A*sin2*pi*f3*t y=y1+y2% % % % % % Z1=u1*A*sin2*pi*f1*t1+u1*A*sin2*pi*f2*t1%两两噪声相加% % % % % % Z2=u1*A*sin2*pi*f3*t1可编辑资料 - - - 欢迎下载精品名师归纳总结% % % % % % Z=Z1+Z2% figure1%画出噪声的时域图,取200 个点% % % % % % % % % % plott ,。y grid on 。% plott1:200,y1:200 。grid on 。% xlabel'时间 t' 。% ylabel'幅度( y'。% title' 噪声的时域图 '。% Fy=ffty,n。 %对噪声进行傅立叶变换% Fy1=absFy。% n1=floorn/2 。 %对 zhang 求采样点数的一半% n2=floorm/2 。 %对 zhanglow 求采样点数的一半% f=0:n1*fs/n 。 %时域上的采样点数% f1=0:n2*Fs/m。 %时域上的采样点数% figure2%画出噪声的频谱图% plotf,Fy11:n1+1。grid on。% xlabel'频率( f) '。% ylabel' 幅度( Fy1)'。% title' 噪声的频谱图 '。% %加%噪声前后的时域图比较%Y=Y:,1。%此处假设声音是双声道的,只取单声道作分析% X=X:,1。%此处假设声音是双声道的,只取单声道作分析Y1=y+Y。'%对采样信号进行转置再加上噪声% pause10。% 暂停 10ssoundY1,fs。% 读出加噪声后的采样信号% figure3 %画出加噪声前后的时域比较图% subplot2,1,1。plott,Y 。grid on 。% plott1:1000,Y1:1000 。grid on 。% xlabel'时间 t' 。% ylabel'幅度( Y'。% title' 加噪声前的时域图 ' 。% subplot2,1,2。plott,Y1 。grid on 。% % % % % % % % % % plott1:1000,Y11:1000。 grid on 。% xlabel'时间 t' 。% ylabel'幅度( Y1'。% title' 加噪声后的时域图 ' 。% %加%可编辑资料 - - - 欢迎下载精品名师归纳总结噪声前后的频域图比较% FY=fftY1,n。 %对加噪声后的采样信号1 进行傅立叶变换% FY1=absFY。% FY2=fftY,n。%对加噪声前的采样信号1 进行傅立叶变换% FY3=absFY2。% FX=fftX,m。 %对加噪声前的采样信号2 进行傅立叶变换% FX4=absFX。% figure4 %画出加噪声前后的频域比较图% subplot2,1,1。% plotf,FY31:n1+1。grid on 。% xlabel'频率( f) '。% ylabel' 幅度( FY3) '。% title' 加噪声前的频谱图 ' 。% subplot2,1,2。% plotf,FY11:n1+1。grid on 。% xlabel'频率( f) '。% ylabel' 幅度( FY1) '。% title' 加噪声后的频谱图 ' 。% %不同音调相同音量信号的频域、时域图比较% figure5% subplot2,2,1。plotf,FY31:n1+1。grid on 。%xlabel频' 率( f) '。ylabel' 幅度( FY3)' 。title'zhang 加噪声前的频谱图 '。% subplot2,2,3。plotf1,FX41:n2+1 。grid on 。%xlabel频' 率( f) '。ylabel' 幅度( FX4)' 。title'zhanglow 加噪声前的频谱图 '。% subplot2,2,2。plott,Y 。grid on 。%xlabel时' 间 t' 。ylabel'幅度( Y'。title'zhang 加噪声前的时域图 '。% subplot2,2,4。plott1,X 。grid on。%xlabel时' 间 t1' 。ylabel' 幅度( X'。title'zhanglow 加噪声前的时域图 '。% % soundY1,fs。%读出加噪后的信号%构造巴特沃思滤波器 %figure6。 %画出 zhang 加噪声后的时域图plott,Y1 。xlabel' 时间 t' 。ylabel' 幅度( Y1'。title'lishuai 加噪声后的时域图 ' 。grid on。% axis0.04 0.06 -3 3。%构%造 800Hz 的带阻滤波器 %可编辑资料 - - - 欢迎下载精品名师归纳总结f0_stop1=800 。%fc=20。%设定过渡带的频率Rp=1。%通带区的波纹系数Rs=30。%阻带区的波纹系数wp_stop1=f0_stop1-fc/fs/2 f0_stop1+fc/fs/2。% 通带的拐角频率ws_stop1=f0_stop1-5*fc/fs/2 f0_stop1+5*fc/fs/2。 % 阻带的拐角频率N_stop1,wc_stop1=buttordwp_stop1,ws_stop1,Rp,Rs,'s' 。%求出巴特沃思滤波器的阶数N 及频率参数wcnum_stop1,den_stop1=butterN_stop1,wc_stop1,'stop'。% 求出巴特沃斯带阻数字滤波器的传递函数模型系数h_stop1,w_stop1=freqznum_stop1,den_stop1,fs% 求出离散系统频率响应的数值figure7。subplot2,3,1 。%画出带阻滤波器的幅频特性图plotw_stop1*fs/2*pi,20*log10absh_stop1。xlabel' 频率( w_stop1 ) '。ylabel' 幅度( h_stop1' 。title' 带阻滤波器在800Hz 处的幅频特性图 '。gridon。B_stop1=filternum_stop1,den_stop1,Y1 。%对含噪信号 Y1 进行带阻滤波% pause10。% soundB_stop1,fs。% 读出滤去 800Hz 噪声后的采样信号subplot2,3,4 。%画出带阻滤波器滤去800Hz 噪声后的时域图plott,B_stop1 。xlabel' 时间 t)' 。ylabel' 幅度( B_stop1'。title' 用带阻滤波器滤去 800Hz 噪声后的时域图 '。grid on 。% axis0.04 0.06 -30 3。%构%造 200Hz 的带阻滤波器 %f0_stop2=200 。wp_stop2=f0_stop2-fc/fs/2 f0_stop2+fc/fs/2。% 通带的拐角频率ws_stop2=f0_stop2-5*fc/fs/2 f0_stop2+5*fc/fs/2。% 阻带的拐角频率N_stop2,wc_stop2=buttordwp_stop2,ws_stop2,Rp,Rs,'s' 。% 求出巴特沃思滤波器的阶数N 及频率参数wcnum_stop2,den_stop2=butterN_stop2,wc_stop2,'stop'。%求出巴特沃斯带阻数字滤波器的传递函数模型系数h_stop2,w_stop2=freqznum_stop2,den_stop2,fs% 求出离散系统频率响应的数值subplot2,3,2 。plotw_stop2*fs/2*pi,20*log10absh_stop2。xlabel' 频率( w_stop2 ) '。ylabel' 幅度( h_stop2' 。title' 带阻滤波器在200Hz 处的幅频特性图 '。gridon。B_stop2=filternum_stop2,den_stop2,B_stop1 。%对含噪信号 Y1 进行带阻滤波% pause10。% soundB_stop2,fs。% 读出滤去 800Hz 和 200Hz 噪声后的采样信号subplot2,3,5 。%画出带阻滤波器滤去800Hz 和 200Hz 噪声后的时域图plott,B_stop2 。xlabel' 时间 t) '。ylabel' 幅度( B_stop2'。title' 带阻滤波器滤去 800Hz 和 200Hz 噪声后的时域图 '。grid on。% axis0.04 0.06 -3 3。可编辑资料 - - - 欢迎下载精品名师归纳总结%构%造 50Hz 的带阻滤波器 %f0_stop3=50ws_stop3=f0_stop3-fc/fs/2% 阻带的拐角频率wp_stop3=f0_stop3+5*fc/fs/2% 通带的拐角频率Wws=0.0075。Wwp=0.0375 。N_stop3,wc_stop3=buttordWwp,Wws,Rp,Rs,'s' 。% 求出巴特沃思滤波器的阶数N 及频率参数 wc num_stop3,dem_stop3=butterN_stop3,wc_stop3,'high'。% 求出巴特沃斯高通数字滤波器的传递函数模型系数h_stop3,w_stop3=freqznum_stop3,dem_stop3,fs 。%求出离散系统频率响应的数值subplot2,3,3 。 %画出高通滤波器的幅频特性图plotw_stop3*fs/2*pi,20*log10absh_stop3。xlabel' 频率( w_stop3 ) '。ylabel' 幅度( h_stop3' 。title' 高通滤波器在 50Hz 处的幅频特性图 '。grid on 。B_stop3=filternum_stop3,dem_stop3,B_stop2 。subplot2,3,6 。%画出高通滤波器滤去800Hz 和 200Hz 和 50Hz 噪声后的时域图plott,B_stop3 。xlabel' 时间 t )'。ylabel' 幅度( B_stop3'。title' 滤去 800Hz 和 200Hz 和 50Hz 噪声后的时域图 '。grid on。% axis0 10 -60000 60000。%用%不%同 的滤 波 器滤 去 相 噪声 频 率 后的 时 域比 较图 %figure8。subplot2,2,1 。plott,Y1 。grid on。xlabel' 时间 t' 。ylabel' 幅度( Y1'。title' 加噪声后的时域图 '。subplot2,2,2 。plott,B_stop1 。xlabel' 时间 t )' 。ylabel' 幅度( B_stop1'。title' 用带阻滤波器滤去 800Hz 噪声后的时域图 '。grid on。subplot2,2,3 。plott,B_stop2 。xlabel' 时间 t )' 。ylabel' 幅度( B_stop2'。title ' 带阻滤波器滤去 800Hz 和 200Hz 噪声后的时域图 '。grid on 。subplot2,2,4 。plott,B_stop3 。xlabel' 时间 t )' 。ylabel' 幅度( B_stop3'。title ' 高通滤波器滤去800Hz 和 200Hz 和 50Hz 噪声后的时域图 '。grid on 。%用%不 同 的 滤 波 器 滤 去 相 应 噪 声 频 率 后 的 频 域 比较 %figure9。FY=fftY1,n。%对加噪声后的采样信号1 进行傅立叶变换FY1=absFY。 n1=floorn/2 。f=0:n1*fs/n 。FY_B_stop1=fftB_stop1,n。 %对滤去 800Hz 噪声后的采样信号进行傅立叶变换FY1_B_stop1=abs FY_B_stop1。FY_B_stop2=fftB_stop2,n。 %对滤去 800Hz 和 200Hz 噪声后的采样信号进行傅立叶变换FY1_B_stop2=abs FY_B_stop2。可编辑资料 - - - 欢迎下载精品名师归纳总结FY_B_stop3=fftB_stop3,n。 %对滤去 800Hz 和 200Hz 和 50Hz 噪声后的采样信号进行傅立叶变换FY1_B_stop3=abs FY_B_stop3。%画%出%用不同的滤波器滤去相应噪声频率后的频域比较图 %subplot2,2,1 。plotf, FY11:n1+1。grid on 。xlabel'频率( f)'。ylabel' 幅度( FY1) '。title'加噪声后的频谱图 '。subplot2,2,2 。plotf, FY1_B_stop11:n1+1。grid on 。xlabel'频率( f)'。ylabel' 幅度( FY1_B_stop1)'。 title' 用带阻滤波器滤去800Hz 噪声后的的频谱图 ' 。subplot2,2,3 。plotf, FY1_B_stop21:n1+1。grid on 。xlabel'频率( f)'。ylabel' 幅度( FY1_B_stop2)'。 title' 用带阻滤波器滤去 800Hz 和 200Hz 噪声后的的频谱图 '。subplot2,2,4 。plotf, FY1_B_stop31:n1+1。grid on 。xlabel'频率( f)'。ylabel'幅度( FY1_B_stop3)' 。 title' 用高通滤波器滤去 800Hz 和 200Hz 和 50Hz 噪声后的的频谱图 '。%读% 出 和 写 出 滤 波 后 的 语 音 信号 %pause5。%暂停 5swavplayB_stop3,fs。% 读出滤去 800Hz 和 200Hz 和 50Hz 噪声后的采样信号wavwriteB_stop3,fs,16,'0601331007 巴特沃思滤波器滤波后的语音信号.wav'。% 写出滤波后的语音信号切比雪夫 I 型滤波器滤波%参%数%初始化 %clear all。 % 关闭以往仿真的数据栈A=5。 %噪声的振幅u1=0.01。%噪声振幅的衰减系数u2=0.02。u3=0.03。f1=50。%多频噪声频率f2=200。f3=800。Y,fs,bits=wavread'0601331007.wav' 。 %读出信号 1,采样率和采样位数% soundY,fs。% X,Fs,bits=wavread'zhanglow.wav'。 %读出信号 2,采样率和采样位数n=lengthY。 %求采样信号 1 的长度% m=lengthX。 %求采样信号 2 的长度t=0:1/fs:n-1/fs 。 %求采样信号 1 时域上的采样点数% t1=0:1/Fs:m-1/fs 。 %求采样信号 2 时域上的采样点数% % % % % % t=0:n-1/fs。% 构造噪声 %y1=u1*A*sin2*pi*f1*t+u1*A*sin2*pi*f2*t%两两噪声相加可编辑资料 - - - 欢迎下载精品名师归纳总结y2=u1*A*sin2*pi*f3*t y=y1+y2% % % % % % Z1=u1*A*sin2*pi*f1*t1+u1*A*sin2*pi*f2*t1%两两噪声相加% % % % % % Z2=u1*A*sin2*pi*f3*t1% % % % % % Z=Z1+Z2% figure1%画出噪声的时域图,取200 个点% % % % % % % % % % plott ,。y grid on 。% plott1:200,y1:200 。grid on 。% xlabel'时间 t' 。% ylabel'幅度( y'。% title' 噪声的时域图 '。% Fy=ffty,n。 %对噪声进行傅立叶变换% Fy1=absFy。% n1=floorn/2 。 %对 zhang 求采样点数的一半% n2=floorm/2 。 %对 zhanglow 求采样点数的一半% f=0:n1*fs/n 。 %时域上的采样点数% f1=0:n2*Fs/m。 %时域上的采样点数% figure2%画出噪声的频谱图% plotf,Fy11:n1+1。grid on。% xlabel'频率( f) '。% ylabel' 幅度( Fy1)'。% title' 噪声的频谱图 '。% %加%噪声前后的时域图比较%Y=Y:,1。%此处假设声音是双声道的,只取单声道作分析% X=X:,1。%此处假设声音是双声道的,只取单声道作分析Y1=y+Y。'%对采样信号进行转置再加上噪声soundY1,fs。% figure3 %画出加噪声前后的时域比较图% subplot2,1,1。plott,Y 。grid on 。% plott1:1000,Y1:1000 。grid on 。% xlabel'时间 t' 。% ylabel'幅度( Y'。% title' 加噪声前的时域图 ' 。% subplot2,1,2。plott,Y1 。grid on 。% % % % % % % % % % plott1:1000,Y11:1000。 grid on 。% xlabel'时间 t' 。% ylabel'幅度( Y1'。% title' 加噪声后的时域图 ' 。%可编辑资料 - - - 欢迎下载精品名师归纳总结% %加%噪%声前后的频域图比较% FY=fftY1,n。 %对加噪声后的采样信号1 进行傅立叶变换% FY1=absFY。% FY2=fftY,n。%对加噪声前的采样信号1 进行傅立叶变换% FY3=absFY2。% FX=fftX,m。 %对加噪声前的采样信号2 进行傅立叶变换% FX4=absFX。% figure4 %画出加噪声前后的频域比较图% subplot2,1,1。% plotf,FY31:n1+1。grid on 。% xlabel'频率( f) '。% ylabel' 幅度( FY3) '。% title' 加噪声前的频谱图 ' 。% subplot2,1,2。% plotf,FY11:n1+1。grid on 。% xlabel'频率( f) '。% ylabel' 幅度( FY1) '。% title' 加噪声后的频谱图 ' 。% %不%同%音调相同音量信号的频域、时域图比较% figure5% subplot2,2,1。plotf,FY31:n1+1。grid on 。%xlabel频' 率( f) '。ylabel' 幅度( FY3)' 。title'zhang 加噪声前的频谱图 '。% subplot2,2,3。plotf1,FX41:n2+1 。grid on 。%xlabel频' 率( f) '。ylabel' 幅度( FX4)' 。title'zhanglow 加噪声前的频谱图 '。% subplot2,2,2。plott,Y 。grid on 。%xlabel时' 间 t' 。ylabel'幅度( Y'。title'zhang 加噪声前的时域图 '。% subplot2,2,4。plott1,X 。grid on。%xlabel时' 间 t1' 。ylabel' 幅度( X'。title'zhanglow 加噪声前的时域图 '。% % soundY1,fs。%读出加噪后的信号%构造切比雪夫I型滤波器 %figure6。 %画出 zhang 加噪声后的时域图plott,Y1 。xlabel' 时间 t' 。ylabel' 幅度( Y1'。title'0601331007 加噪声后的时域图 '。grid on 。% axis0.04 0.06 -3 3。%构%造 800Hz 的带阻滤波器 %f0_stop1=800 。%fc=20。%设定过渡带的频率Rp=1。%通带区的波纹系数Rs=30。%阻带区的波纹系数可编辑资料 - - - 欢迎下载精品名师归纳总结ws_stop1=f0_stop1-fc/fs/2 f0_stop1+fc/fs/2。% 通带的拐角频率wp_stop1=f0_stop1-5*fc/fs/2 f0_stop1+5*fc/fs/2。 % 阻带的拐角频率N_stop1,wn_stop1=cheb1ordwp_stop1,ws_stop1,Rp,Rs 。% 求出切比雪夫I 型滤波器的阶数N 及频率参数 wcnum_stop1,den_stop1=cheby1N_stop1,Rp,wn_stop1,'stop'。% 求出切比雪夫I 型带阻数字滤波器的传递函数模型系数h_stop1,w_stop1=freqznum_stop1,den_stop1,fs% 求出离散系统频率响应的数值figure7。subplot2,3,1 。%画出带阻滤波器的幅频特性图plotw_stop1*fs/2*pi,20*log10absh_stop1。xlabel' 频率( w_stop1 ) '。ylabel' 幅度( h_stop1' 。title' 带阻滤波器在800Hz 处的幅频特性图 '。grid on。B_stop1=filternum_stop1,den_stop1,Y1 。%对含噪信号 Y1 进行带阻滤波% pause10。% soundB_stop1,fs。% 读出滤去 800Hz 噪声后的采样信号subplot2,3,4 。%画出带阻滤波器滤去800Hz 噪声后的时域图plott,B_stop1 。xlabel' 时间 t)' 。ylabel' 幅度( B_stop1'。title' 用带阻滤波器滤去 800Hz 噪声后的时域图 '。grid on 。% axis0.04 0.06 -30 3。% %构%造 200Hz 的带阻滤波器 %f0_stop2=200 。ws_stop2=f0_stop2-fc/fs/2 f0_stop2+fc/fs/2。% 通带的拐角频率wp_stop2=f0_stop2-5*fc/fs/2 f0_stop2+5*fc/fs/2。% 阻带的拐角频率N_stop2,wn_stop2=cheb1ordwp_stop2,ws_stop2,Rp,Rs 。%求出切比雪夫 I 型滤波器的阶数 N 及频率参数 wcnum_stop2,den_stop2=cheby1N_stop2,Rp,wn_stop2,'stop'。% 求出切比雪夫 I 型带阻数字滤波器的传递函数模型系数h_stop2,w_stop2=freqznum_stop2,den_stop2,fs% 求出离散系统频率响应的数值subplot2,3,2 。plotw_stop2*fs/2*pi,20*log10absh_stop2。xlabel' 频率( w_stop2 ) '。ylabel' 幅度( h_stop2' 。title' 带阻滤波器在200Hz 处的幅频特性图 '。grid on。B_stop2=filternum_stop2,den_stop2,B_stop1 。%对含噪信号 Y1 进行带阻滤波% pause10。% soundB_stop2,fs。% 读出滤去 800Hz 和 200Hz 噪声后的采样信号subplot2,3,5 。%画出带阻滤波器滤去800Hz 和 200Hz 噪声后的时域图plott,B_stop2 。xlabel' 时间 t) '。ylabel' 幅度( B_stop2'。title' 带阻滤波器滤去 800Hz 和 200Hz 噪声后的时域图 '。grid on。% axis0.04 0.06 -3 3。%构%造 50Hz 的带阻滤波器 %f0_stop3=50可编辑资料 - - - 欢迎下载精品名师归纳总结ws_stop3=f0_stop3-fc/fs/2% 阻带的拐角频率wp_stop3=f0_stop3+5*fc/fs/2% 通带的拐角频率Wws=0.0075。Wwp=0.0375 。N_stop3,wc_stop3=cheb1ordWwp,Wws,Rp,Rs,'s' 。%求出切比雪夫 I 型滤波器的阶数 N 及频率参数wcnum_stop3,dem_stop3=cheby1N_stop3,Rp,wc_stop3,'high' 。%求出切比雪夫 I 型滤波器高通数字滤波器的传递函数模型系数h_stop3,w_stop3=freqznum_stop3,dem_stop3,fs 。%求出离散系统频率响应的数值subplot2,3,3 。 %画出高通滤波器的幅频特性图plotw_stop3*fs/2*pi,absh_stop3。xlabel' 频率( w_stop3 ) '。ylabel' 幅度( h_stop3' 。title' 高通滤波器在 50Hz 处的幅频特性图 '。grid on 。B_stop3=filternum_stop3,dem_stop3,B_stop2 。subplot2,3,6 。%画出高通滤波器滤去800Hz 和 200Hz 和 50Hz 噪声后的时域图plott,B_stop3 。xlabel' 时间 t )'。ylabel' 幅度( B_stop3'。title' 滤去 800Hz 和 200Hz 和 50Hz 噪声后的时域图 '。grid on。% axis0 10 -60000 60000。%用%不同的滤波器滤去相应噪声频率后的时域比较图% figure8。subplot2,2,1 。plott,Y