基于MATLAB的数字滤波器设计及其对语音信号的应用.doc_第1页
基于MATLAB的数字滤波器设计及其对语音信号的应用.doc_第2页
基于MATLAB的数字滤波器设计及其对语音信号的应用.doc_第3页
基于MATLAB的数字滤波器设计及其对语音信号的应用.doc_第4页
基于MATLAB的数字滤波器设计及其对语音信号的应用.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

2013电信专业课程设计报告基于MATLAB的数字滤波器设计及其对语音信号的应用指导老师学院:班级:姓名:学号:目录1 滤波器设计方法综述- 2 -2滤波器设计原理及步骤- 2 -(1)语音信号的采集- 2 -(2)语音信号的频谱分析- 3 -(3)数字滤波器设计- 3 -(4)语音滤波- 6 -(5)语音回放- 11 -3 结论- 11 -参考文献- 12 -1 滤波器设计方法综述数字滤波器由数字乘法器、加法器和延时单元组成的一种算法或装置。数字滤波器的功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。数字滤波器的实现方法一般有以下几种方法1:(l)在通用的计算机(如PC)上用软件(如c语言)实现,缺点是速度比较慢,但不要添加硬件设备,比较经济,可用于DSP算法的模拟与仿真;(2)在通用的单片机(如Mcs-51、96系列)实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制等;(3)在通用的计算机系统中加上专用的加速处理机实现;(4)用通用的可编程DSP芯片实现,与单片机相比,DSP芯片具有更适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法,使数字信号处理应用打开了新的局面;(5)用专用的DSP芯片实现,但其专用性强,应用起来受到很大的限制。 在此,使用MATLAB来实现数字滤波器。2滤波器设计原理及步骤(1)语音信号的采集语音信号的采集即通过设置采样频率和采样点数将模拟信号数字化,以便于在计算机上处理语音信号。在MATLAB软件平台下,可以利用函数wavread对语音信号进行采样。MATLAB语音采样及图形绘制程序如下:voicePath = C:Documents and Settingsstu桌面语音信号处理语音库5.wav;x, Fs, nbits = wavread(voicePath); % Fs = 10K , length = 8000figure(1) plot(x); %语音波形实验图形如下:(2)语音信号的频谱分析语音信号的频谱分析即对语音信号进行快速傅里叶变换,通过求取语音信号的幅度谱和相位谱从而得到语音信号的频谱特性。MATLAB语音频谱分析程序如下:Y = fft(x); %快速傅里叶变换mag=abs(Y); %求语音信号幅度谱 phase=angle(Y); %求语音信号相位谱subplot(2,2,1),plot(x),title(语音信号波形);xlabel(t);ylabel(幅度); %语音波形subplot(2,2,2),plot(Y),title(语音快速傅里叶变换); xlabel(F);ylabel(频谱幅度); %语音FFTsubplot(2,2,3),plot(mag),title(语音幅度谱); xlabel(F);ylabel(频谱幅度); %语音幅度谱subplot(2,2,4),plot(phase),title(语音相位谱); xlabel(F);ylabel(频谱相位); %语音相位谱实验图形如下:(3)数字滤波器设计MATLAB设计数字滤波器通常有两种方法,一种是使用滤波器设计函数,如butter、cheby1、cheby2和ellip等2;该方法通常先通过buttord、cheb1ord、cheb2ord和ellipord等函数求得通带角频率Wp和阻带角频率Ws,并且确定通带纹波Ap、阻带衰减As,然后通过butter、cheby1、cheby2和ellip等函数求得滤波器系统函数系数b和a,再通过filter或fftfilt函数来对信号进行滤波。另一种方法是使用MATLAB下的Filter Designed Tool3工具,该方法设计滤波器较简单,可以选择滤波器种类,如IIR、FIR、LPF、HPF、BPF等。通过输入采样频率、截止频率、通带频率、通带纹波、阻带衰减等参数来设计需求的滤波器。该方法也可以导出滤波器系统函数系数b和a,再通过filter或fftfilt函数来对信号进行滤波。在此使用前一种方法来设计数字滤波器,具体MATLAB代码如下:% LPF设计%fpL=1000; %通带频率HzfsL=1200; %阻带频率HzapL=1; %通带纹波DBasL=40; %阻带衰减DBWpL = fpL*2/Fs; %通带角频率radWsL = fsL*2/Fs; %阻带角频率rad%巴特沃斯低通滤波器nL,WnL = buttord(WpL,WsL,apL,asL); %求得n和Wn,n是最小阶数,Wn是截止频率bL,aL = butter(nL,WnL,low); %低通滤波器传递函数系数hL,wL=freqz(bL,aL); title(巴特沃斯低通滤波器)%cheby1低通滤波器n1L,Wn1L = cheb1ord(WpL,WsL,apL,asL); %求得n和Wn,n是最小阶数,Wn是截止频率b1L,a1L = cheby1(n1L,apL,Wn1L,low); %低通滤波器传递函数系数h1L,w1L=freqz(b1L,a1L); title(cheby1低通滤波器)%cheby2低通滤波器n2L,Wn2L = cheb2ord(WpL,WsL,apL,asL); %求得n和Wn,n是最小阶数,Wn是截止频率b2L,a2L = cheby2(n2L,apL,Wn2L,low); %低通滤波器传递函数系数h2L,w2L=freqz(b2L,a2L); title(cheby2低通滤波器)%椭圆低通滤波器n3L,Wn3L = ellipord(WpL,WsL,apL,asL); %求得n和Wn,n是最小阶数,Wn是截止频率b3L,a3L = ellip(n3L,apL,asL,Wn3L,low); %低通滤波器传递函数系数h3L,w3L=freqz(b3L,a3L); title(椭圆低通滤波器)% HPF设计%fpH=4300; %通带频率HzfsH=4000; %阻带频率HzapH=1; %通带纹波DBasH=40; %阻带衰减DBWpH = fpH*2/Fs; %通带角频率radWsH = fsH*2/Fs; %通带角频率rad%巴特沃斯高通滤波器nH,WnH = buttord(WpH,WsH,apH,asH); %求得n和Wn,n是最小阶数,Wn是截止频率bH,aH = butter(nH,WnH,high); %低通滤波器传递函数系数hH,wH=freqz(bH,aH); title(巴特沃斯高通滤波器)%cheby1高通滤波器n1H,Wn1H = cheb1ord(WpH,WsH,apH,asH); %求得n和Wn,n是最小阶数,Wn是截止频率b1H,a1H = cheby1(n1H,apH,Wn1H,high); %低通滤波器传递函数系数h1H,w1H=freqz(b1H,a1H); title(cheby1高通滤波器)%cheby2高通滤波器n2H,Wn2H = cheb2ord(WpH,WsH,apH,asH); %求得n和Wn,n是最小阶数,Wn是截止频率b2H,a2H = cheby2(n2H,apH,Wn2H,high); %低通滤波器传递函数系数h2H,w2H=freqz(b2H,a2H); title(cheby2高通滤波器)%椭圆高通滤波器n3H,Wn3H = ellipord(WpH,WsH,apH,asH); %求得n和Wn,n是最小阶数,Wn是截止频率b3H,a3H = ellip(n3H,apH,asH,Wn3H,high); %低通滤波器传递函数系数h3H,w3H=freqz(b3H,a3H); title(椭圆高通滤波器)% BPF设计%fp1=1200; %通带截止频率fp2=3000; %通带截止频率fpB=1200 3000; %通带频率fs1=1000; %阻带截止频率fs2=3200; %阻带截止频率fsB=1000 3200; %阻带频率apB=1; %通带纹波asB=40; %阻带衰减WpB = fpB*2/Fs; %通带角频率radWsB = fsB*2/Fs; %通带角频率rad%巴特沃斯高通滤波器nB,WnB = buttord(WpB,WsB,apB,asB); %求得n和Wn,n是最小阶数,Wn是截止频率bB,aB = butter(nB,WnB); %低通滤波器传递函数系数hB,wB=freqz(bB,aB); title(巴特沃斯带通滤波器)%cheby1高通滤波器n1B,Wn1B = cheb1ord(WpB,WsB,apB,asB); %求得n和Wn,n是最小阶数,Wn是截止频率b1B,a1B = cheby1(n1B,apB,Wn1B); %低通滤波器传递函数系数h1B,w1B=freqz(b1B,a1B); title(cheby1带通滤波器)%cheby2高通滤波器n2B,Wn2B = cheb2ord(WpB,WsB,apB,asB); %求得n和Wn,n是最小阶数,Wn是截止频率b2B,a2B = cheby2(n2B,apB,Wn2B); %低通滤波器传递函数系数h2B,w2B=freqz(b2B,a2B); title(cheby2带通滤波器)%椭圆高通滤波器n3B,Wn3B = ellipord(WpB,WsB,apB,asB); %求得n和Wn,n是最小阶数,Wn是截止频率b3B,a3B = ellip(n3B,apB,asB,Wn3B); %低通滤波器传递函数系数% figure(10)h3B,w3B=freqz(b3B,a3B); title(椭圆带通滤波器)(4)语音滤波对语音信号滤波即将语音信号通过上述的滤波器。在此利用函数filter函数对语音信号进行IIR滤波,利用函数fftfilt对信号FIR进行滤波,然后利用fft函数来求得滤波语音的频谱。MATLAB具体滤波代码及滤波效果如下:% LPF滤波且进行频谱变换%IIR低通滤波IIRyL = filter(bL,aL,x); %语音信号通过butter低通滤波器IIRy1L = filter(b1L,a1L,x); %语音信号通过cheby1低通滤波器IIRy2L = filter(b2L,a2L,x); %语音信号通过cheby2低通滤波器IIRy3L = filter(b3L,a3L,x); %语音信号通过ellip低通滤波器%FIR低通滤波FIRyL = fftfilt(bL,x); %语音信号通过butter低通滤波器FIRy1L = fftfilt(b1L,x); %语音信号通过cheby1低通滤波器FIRy2L = fftfilt(b2L,x); %语音信号通过cheby2低通滤波器FIRy3L = fftfilt(b3L,x); %语音信号通过ellip低通滤波器%IIR低通滤波后FFTFFTIIRyL = fft(IIRyL); %语音信号通过butter低通滤波器后FFTFFTIIRy1L = fft(IIRy1L); %语音信号通过cheby1低通滤波器后FFTFFTIIRy2L = fft(IIRy2L); %语音信号通过cheby2低通滤波器后FFTFFTIIRy3L = fft(IIRy3L); %语音信号通过ellip低通滤波器后FFT%FIR低通滤波后FFTFFTFIRyL = fft(FIRyL); %语音信号通过butter低通滤波器后FFTFFTFIRy1L = fft(FIRy1L); %语音信号通过cheby1低通滤波器后FFTFFTFIRy2L = fft(FIRy2L); %语音信号通过cheby2低通滤波器后FFTFFTFIRy3L = fft(FIRy3L); %语音信号通过ellip低通滤波器后FFT% 绘制原始语音、IIR、FIR低通滤波后语音波形、及滤波后频谱图 %figure(3)subplot(6,4,1),plot(x),title(原始语音信号);subplot(6,4,2),plot(x),title(原始语音信号);subplot(6,4,3),plot(x),title(原始语音信号);subplot(6,4,4),plot(x),title(原始语音信号);subplot(6,4,5),plot(IIRyL),title(butter-IIR-LPF);subplot(6,4,6),plot(IIRy1L),title(cheby1-IIR-LPF);subplot(6,4,7),plot(IIRy2L),title(cheby2-IIR-LPF);subplot(6,4,8),plot(IIRy3L),title(ellip-IIR-LPF);subplot(6,4,9),plot(FFTIIRyL),title(butter-IIR-FFT);subplot(6,4,10),plot(FFTIIRy1L),title(cheby1-IIR-FFT);subplot(6,4,11),plot(FFTIIRy2L),title(cheby2-IIR-FFT);subplot(6,4,12),plot(FFTIIRy3L),title(ellip-IIR-FFT);subplot(6,4,13),plot(FIRyL),title(butter-FIR-LPF);subplot(6,4,14),plot(FIRy1L),title(cheby1-FIR-LPF);subplot(6,4,15),plot(FIRy2L),title(cheby2-FIR-LPF);subplot(6,4,16),plot(FIRy3L),title(ellip-FIR-LPF);subplot(6,4,17),plot(FFTFIRyL),title(butter-FIR-FFT);subplot(6,4,18),plot(FFTFIRy1L),title(cheby1-FIR-FFT);subplot(6,4,19),plot(FFTFIRy2L),title(cheby2-FIR-FFT);subplot(6,4,20),plot(FFTFIRy3L),title(ellip-FIR-FFT);subplot(6,4,21),plot(wL*Fs/(2*pi),abs(hL),title(butter-LPF);subplot(6,4,22),plot(w1L*Fs/(2*pi),abs(h1L),title(cheby1-LPF);subplot(6,4,23),plot(w2L*Fs/(2*pi),abs(h2L),title(cheby2-LPF);subplot(6,4,24),plot(w3L*Fs/(2*pi),abs(h3L),title(ellip-LPF);原始语音、IIR、FIR低通滤波后语音波形、及滤波后频谱图如下:% HPF滤波且进行频谱变换%IIR高通滤波IIRyH = filter(bH,aH,x); %语音信号通过低通滤波器IIRy1H = filter(b1H,a1H,x); %语音信号通过低通滤波器IIRy2H = filter(b2H,a2H,x); %语音信号通过低通滤波器IIRy3H = filter(b3H,a3H,x); %语音信号通过低通滤波器%FIR高通滤波FIRyH = fftfilt(bH,x); %语音信号通过低通滤波器FIRy1H = fftfilt(b1H,x); %语音信号通过低通滤波器FIRy2H = fftfilt(b2H,x); %语音信号通过低通滤波器FIRy3H = fftfilt(b3H,x); %语音信号通过低通滤波器%IIR高通滤波后FFTFFTIIRyH = fft(IIRyH); %语音信号通过butter低通滤波器后FFTFFTIIRy1H = fft(IIRy1H); %语音信号通过cheby1低通滤波器后FFTFFTIIRy2H = fft(IIRy2H); %语音信号通过cheby2低通滤波器后FFTFFTIIRy3H = fft(IIRy3H); %语音信号通过ellip低通滤波器后FFT%FIR高通滤波后FFTFFTFIRyH = fft(FIRyH); %语音信号通过butter低通滤波器后FFTFFTFIRy1H = fft(FIRy1H); %语音信号通过cheby1低通滤波器后FFTFFTFIRy2H = fft(FIRy2H); %语音信号通过cheby2低通滤波器后FFTFFTFIRy3H = fft(FIRy3H); %语音信号通过ellip低通滤波器后FFT% 绘制原始语音、IIR、FIR高通滤波后语音波形、及滤波后频谱图 %figure(4)subplot(5,4,1),plot(x),title(原始语音信号);subplot(5,4,2),plot(x),title(原始语音信号);subplot(5,4,3),plot(x),title(原始语音信号);subplot(5,4,4),plot(x),title(原始语音信号);subplot(5,4,5),plot(IIRyH),title(butter-IIR-HPF);subplot(5,4,6),plot(IIRy1H),title(cheby1-IIR-HPF);subplot(5,4,7),plot(IIRy2H),title(cheby2-IIR-HPF);subplot(5,4,8),plot(IIRy3H),title(ellip-IIR-HPF);subplot(5,4,9),plot(FFTIIRyH),title(butter-IIR-FFT);subplot(5,4,10),plot(FFTIIRy1H),title(cheby1-IIR-FFT);subplot(5,4,11),plot(FFTIIRy2H),title(cheby2-IIR-FFT);subplot(5,4,12),plot(FFTIIRy3H),title(ellip-IIR-FFT);subplot(5,4,13),plot(FIRyH),title(butter-FIR-LPF);subplot(5,4,14),plot(FIRy1H),title(cheby1-FIR-LPF);subplot(5,4,15),plot(FIRy2H),title(cheby2-FIR-LPF);subplot(5,4,16),plot(FIRy3H),title(ellip-FIR-LPF);subplot(5,4,17),plot(FFTFIRyH),title(butter-FIR-FFT);subplot(5,4,18),plot(FFTFIRy1H),title(cheby1-FIR-FFT);subplot(5,4,19),plot(FFTFIRy2H),title(cheby2-FIR-FFT);subplot(5,4,20),plot(FFTFIRy3H),title(ellip-FIR-FFT);subplot(6,4,21),plot(wH*Fs/(2*pi),abs(hH),title(butter-HPF);subplot(6,4,22),plot(w1H*Fs/(2*pi),abs(h1H),title(cheby1-HPF);subplot(6,4,23),plot(w2H*Fs/(2*pi),abs(h2H),title(cheby2-HPF);subplot(6,4,24),plot(w3H*Fs/(2*pi),abs(h3H),title(ellip-HPF);原始语音、IIR、FIR高通滤波后语音波形、及滤波后频谱图如下:% BPF滤波且进行频谱变换%IIR低通滤波IIRyB = filter(bB,aB,x); %语音信号通过butter低通滤波器IIRy1B = filter(b1B,a1B,x); %语音信号通过cheby1低通滤波器IIRy2B = filter(b2B,a2B,x); %语音信号通过cheby2低通滤波器IIRy3B = filter(b3B,a3B,x); %语音信号通过ellip低通滤波器%FIR低通滤波FIRyB = fftfilt(bB,x); %语音信号通过butter低通滤波器FIRy1B = fftfilt(b1B,x); %语音信号通过cheby1低通滤波器FIRy2B = fftfilt(b2B,x); %语音信号通过cheby2低通滤波器FIRy3B = fftfilt(b3B,x); %语音信号通过ellip低通滤波器%IIR低通滤波后FFTFFTIIRyB = fft(IIRyB); %语音信号通过butter低通滤波器后FFTFFTIIRy1B = fft(IIRy1B); %语音信号通过cheby1低通滤波器后FFTFFTIIRy2B = fft(IIRy2B); %语音信号通过cheby2低通滤波器后FFTFFTIIRy3B = fft(IIRy3B); %语音信号通过ellip低通滤波器后FFT%FIR低通滤波后FFTFFTFIRyB = fft(FIRyB); %语音信号通过butter低通滤波器后FFTFFTFIRy1B = fft(FIRy1B); %语音信号通过cheby1低通滤波器后FFTFFTFIRy2B = fft(FIRy2B); %语音信号通过cheby2低通滤波器后FFTFFTFIRy3B = fft(FIRy3B); %语音信号通过ellip低通滤波器后FFT% 绘制原始语音、IIR、FIR带通滤波后语音波形、及滤波后频谱图 %figure(5)subplot(6,4,1),plot(x),title(原始语音信号);subplot(6,4,2),plot(x),title(原始语音信号);subplot(6,4,3),plot(x),title(原始语音信号);subplot(6,4,4),plot(x),title(原始语音信号);subplot(6,4,5),plot(IIRyB),title(butter-IIR-BPF);subplot(6,4,6),plot(IIRy1B),title(cheby1-IIR-BPF);subplot(6,4,7),plot(IIRy2B),title(cheby2-IIR-BPF);subplot(6,4,8),plot(IIRy3B),title(ellip-IIR-BPF);subplot(6,4,9),plot(FFTIIRyB),title(butter-IIR-FFT);subplot(6,4,10),plot(FFTIIRy1B),title(cheby1-IIR-FFT);subplot(6,4,11),plot(FFTIIRy2B),title(cheby2-IIR-FFT);subplot(6,4,12),plot(FFTIIRy3B),title(ellip-IIR-FFT);subplot(6,4,13),plot(FIRyB),title(butter-FIR-BPF);subplot(6,4,14),plot(FIRy1B),title(cheby1-FIR-BPF);subplot(6,4,15),plot(FIRy2B),title(cheby2-FIR-BPF);subplot(6,4,16),plot(FIRy3B),title(ellip-FIR-BPF);subplot(6,4,17),plot(FFTFIRyB),title(butter-FIR-FFT);subplot(6,4,18),plot(FFTFIRy1B),title(cheby1-FIR-FFT);subplot(6,4,19),plot(FFTFIRy2B),title(cheby2-FIR-FFT);subplot(6,4,20),plot(FFTFIRy3B),title(ellip-FIR-FFT);subplot(6,4,21),plot(wB*Fs/(2*pi),abs(hB),title(butter-BPF);subplot(6,4,22),plot(w1B*Fs/(2*pi),abs(h1B),title(cheby1-BPF);subplot(6,4,23),plot(w2B*Fs/(2*pi),abs(h2B),title(cheby2-BPF);subplot(6,4,24),plot(w3B*Fs/(2*pi),abs(h3B),title(ellip-BPF);原始语音、IIR、FIR带通滤波后语音波形、及滤波后频谱图如下:(5)语音回放利用函数sound(x,fs,bits)可以对语音信号回放。通过比较知道,通过低通滤波器的语音只保留了部分较低频率成分,声音变得憨厚;通过高通滤波器的语音只保留了部分较高频率成分,声音变得尖锐,甚至变得几乎没有;通过带通滤波器的语音只保留了语音中间频率成分,声音处于高通滤波和低通滤波之间。MATLAB回放语音具体代码如下:sound(x, Fs, nbits);%原始语音%LPF滤波语音sound(IIRyL, Fs, nbits);%butter-IIR滤波语音sound(IIRy1L, Fs, nbits);%cheb

温馨提示

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

评论

0/150

提交评论