您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Matlab在语音信号处理中的应用
《数字信号处理》课程设计报告学院(部)信息工程学院专业电子信息工程班级24030902学生姓名周小军学号2403090212数字信号综合设计一、实验目的1.学会MATLAB的使用,掌握MATLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MATLAB对信号进行分析和处理。二、实验原理2.1语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间控制在一秒。然后在MATLAB软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形,具体运用见程序代码。2.2滤波器设计和运用滤波器进行滤波1)窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。具体见程序代码。2)双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter和buttord、cheby1和cheb1ord、ellip和ellipord设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。三、主要实验仪器及材料微型计算机、Matlab7.x四、实验程序代码、结果和滤波性能分析1)语音信号采集及频谱分析程序代码如下:%语音信号的时域波形和频谱特性clearall;closeall;clc;file='zhong.wav';%zhong.wav的内容为“中华人民共和国”[y,fs,nbits]=wavread(file);sound(y,fs,nbits);yn=fft(y);figure(1);plot(y);title(‘语音时域波形’);figure(2);freqz(yn);title(‘语音频谱特新’);运行结果如下;先会听到“中华人民共和国”,然后会看到如下图形:图1语音时域波形图2语音频谱2)窗函数设计FIR滤波器及滤波程序代码如下:%用凯瑟窗设计FIR低通滤波器clearall;closeall;clc;fp=1000;fs=1200;rs=100;Fs=8000;%kaiser滤波器设计wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Bt=ws-wp;alph=0.112*(rs-8.7);M=ceil((rs-8)/2.285/Bt);wc=(wp+ws)/2/pi;hn=fir1(M,wc,kaiser(M+1,alph));figure(1);freqz(hn);[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%利用kaiser滤波器对语音信号滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果如下:图3凯瑟窗设计FIR低通滤波器图4Kaiser滤波器滤波前后语音波形、频谱%用凯瑟窗设计FIR数字高通滤波器clearall;closeall;clc;fp=3000;fs=2800;FS=8000;as=100;wp=2*pi*fp/FS;ws=2*pi*fs/FS;Bt=wp-ws;alph=0.112*(as-8.7);M=ceil(as-8/2.285/Bt);wc=(wp+ws)/2/pi;hn=fir1(M,wc,'high',kaiser(M+1,alph));figure(1);freqz(hn)[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%用kaiser滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果:图5凯瑟窗设计FIR数字高通滤波器图6Kaiser滤波器滤波前后语音波形、频谱%用凯瑟窗设计FIR数字带通滤波器clearall;closeall;clc;fp1=1200;fp2=300;fc1=1000;fc2=3200;FS=8000;as=100;wlp=2*pi*fp1/FS;wls=2*pi*fc1/FS;wup=2*pi*fp2/FS;wus=2*pi*fc2/FS;Bt=min(wlp-wls,wus-wup);alph=0.112*(as-8.7);M=ceil(as-8/2.285/Bt);wc=[(wlp+wls)/2/pi,(wup+wus)/2/pi];hn=fir1(M,wc,'bandpass',kaiser(M+1,alph));figure(1);freqz(hn);[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%用kaiser滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果:图7凯瑟窗设计FIR数字带通滤波器图8Kaiser滤波器滤波前后语音波形、频谱3)等波纹逼近法设计FIR滤波器及滤波程序代码如下:%等波纹逼近法设计FIR低通滤波器及滤波fp=1000;fs=1200;FS=8000;rp=1;rs=100;f=[fp,fs];m=[1,0];dat1=(10^(rp/20)-1)/(10^(rp/20)+1);dat2=10^(-rs/20);rip=[dat1,dat2];[M,fo,mo,w]=remezord(f,m,rip,FS);M=M+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%用remez设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果如下:图9等波纹逼近法设计FIR低通滤波器及滤波图10等波纹逼近法设计数字滤波器滤波前后语音波形、频谱%等波纹逼近法设计FIR高通滤波器及滤波fp=3000;fs=2800;FS=8000;rp=1;rs=100;f=[fs,fp];m=[0,1];dat1=(10^(rp/20)-1)/(10^(rp/20)+1);dat2=10^(-rs/20);rip=[dat2,dat1];[M,fo,mo,w]=remezord(f,m,rip,FS);M=M+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%用remez设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果如下:图11等波纹逼近法设计FIR高通滤波器图12等波纹逼近法设计数字滤波器滤波前后语音波形、频谱%等波纹逼近法设计FIR带通滤波器及滤波fp1=1200;fp2=3000;fc1=1000;fc2=3200;FS=8000;rp=1;rs=100;f=[fc1,fp1,fp2,fc2];m=[0,1,0];dat1=(10^(rp/20)-1)/(10^(rp/20)+1);dat2=10^(-rs/20);rip=[dat2,dat1,dat2];[M,fo,mo,w]=remezord(f,m,rip,FS);M=M+1;hn=remez(M,fo,mo,w);figure(1);freqz(hn);[y,fn,nbits]=wavread('zhong');Y=fft(y);y1=fftfilt(hn,y);%用remez设计的滤波器进行滤波Y1=fft(y1);n=0:length(y)-1;figure(2);subplot(221);plot(y);title('未滤波语音波形');subplot(222);plot(y1);title('滤波后语音波形');subplot(223);plot(n,Y);title('未滤波语音频谱');subplot(224);plot(n,Y1);title('滤波后语音频谱');sound(y1,fn,nbits);%滤波后语音回放运行结果如下:图13%等波纹逼近法设计FIR高通滤波器及滤波图14等波纹逼近法设计数字滤波器滤波前后语音波形、频谱4)双线性变换法设计IIR数字滤波器1.butter设计模拟滤波器,再经双线性变换法设计IIR数字滤波器程序代码如下:%butter设计模拟低通滤波器再用双线性变换法设计IIR数字低通滤波器clearall;closeall;clc;fp=1000;fc=1200;FS=8000;rp=1;rs=100;wpz=2*pi*1000/FS;wsz=2*pi*1200/FS;wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS;%预畸校正转换指标[N,wc]=buttord(wp,ws,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,FS);w=0:0.01*pi:pi;[h,w]=freqz(Bz,Az,w);figure(
本文标题:Matlab在语音信号处理中的应用
链接地址:https://www.777doc.com/doc-6420221 .html