基于MATLAB的数字滤波器设计 及其对语音信号的应用.docx
《基于MATLAB的数字滤波器设计 及其对语音信号的应用.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的数字滤波器设计 及其对语音信号的应用.docx(18页珍藏版)》请在冰豆网上搜索。
基于MATLAB的数字滤波器设计及其对语音信号的应用
基于MATLAB的数字滤波器设计
及其对语音信号的应用
学院:
电子与信息工程学院
班级:
电信1002
姓名:
学号:
1010930220
指导教师:
2013-12-2
1课程设计的目的2
2课程设计内容2
3课程设计基础2
4.具体步骤与要求2
4.1 语音信号的采集2
4.2语音信号的频谱分析2
4.3设计数字滤波器,画出其频率响应曲线3
4.4 用滤波器对信号进行滤波,比较滤波前后语音信号的波形及频谱6
4.5回放语音信号11
5.实验结论11
1课程设计的目的
1)掌握数字信号处理的基本概念、基本理论和基本方法;
2)掌握MATLAB设计FIR和IIR数字滤波器的方法;
3)掌握在Windows环境下语音信号采集以及时域、频域分析;
4)学会MATLAB的使用,掌握MATLAB的程序设计方法;
5)学会用MATLAB对信号进行分析和处理。
2课程设计内容
录制一段自己的语音信号,对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用MATLAB设计数字滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号。
3课程设计基础
MATLAB编程基础、数字信号处理知识、语音信号处理知识。
4.具体步骤与要求
4.1 语音信号的采集
录制一段自己的话音,或利用老师给的语音,在MATLAB软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
程序:
[I,Fs,bits]=wavread('2.wav');%读取语音信号2.wav
sound(I);%重放语音
wavrecord(2*Fs,Fs);%使用基于PC的音频输入设备
4.2语音信号的频谱分析
要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
程序:
clearall
[I,Fs,bits]=wavread('3.wav');%读取语音信号3.wav
sound(I);%重放语音
Y=fft(I);%进行快速傅里叶变换
mag=abs(Y);%求取幅度谱
phase=angle(Y);%求取相位谱
phase=phase*180/pi;%转换为Pi单位
dB=20*log10(abs(Y)+eps);%求取对数幅度谱
t=(0:
length(I)-1)/Fs;%设置标度
subplot(221);plot(t,I);
title('波形图');xlabel('时间(s)');ylabel('幅度');%设置标题和横纵坐标
f=(1:
length(Y))*Fs/length(Y);%设置标度
subplot(222);plot(f,mag);
title('幅度谱');xlabel('频率(Hz)');ylabel('频谱幅度');%设置标题和横纵坐标
subplot(223);plot(f,phase);
title('相位谱');xlabel('频率(Hz)');ylabel('频谱相位');%设置标题和横纵坐标
subplot(224);plot(f,dB);
title('对数幅度谱');xlabel('频率(Hz)');ylabel('频谱幅度(dB)');%设置标题和横纵坐标
图2时域波形和信号的频谱特性
4.3设计数字滤波器,画出其频率响应曲线
各滤波器的性能指标:
(1)低通滤波器性能指标 fp=1000Hz,fs=1200Hz,As=40dB,Ap=1dB。
(2)高通滤波器性能指标 fs=4000Hz,fp=4300Hz,As=40dB,Ap=1dB
(3)带通滤波器性能指标 fp1=1200Hz,fp2=3000Hz,fs1=1000Hz,fs2=3200Hz,As=40dB,Ap=1dB。
要求:
(1)频率变换法设计IIR滤波器:
可以利用函数butter、cheby1、cheby2和ellip等设计。
(2)(选做)设计IIR滤波器:
用双线性变换法设计上面要求的3种滤波器。
bilinear
(3)(选做)设计FIR滤波器:
用窗函数法设计上面要求的3种滤波器。
可以利用函数fir1设计FIR滤波器。
(4)采用函数freqz画出各滤波器的频率响应。
程序:
%LPF设计
fpL=1000;%通带频率Hz
fsL=1200;%阻带频率Hz
apL=1;%通带纹波DB
asL=40;%阻带衰减DB
WpL=fpL*2/Fs;%通带角频率rad
WsL=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;%通带频率Hz
fsH=4000;%阻带频率Hz
apH=1;%通带纹波DB
asH=40;%阻带衰减DB
WpH=fpH*2/Fs;%通带角频率rad
WsH=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=[12003000];%通带频率
fs1=1000;%阻带截止频率
fs2=3200;%阻带截止频率
fsB=[10003200];%阻带频率
apB=1;%通带纹波
asB=40;%阻带衰减
WpB=fpB*2/Fs;%通带角频率rad
WsB=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.4 用滤波器对信号进行滤波,比较滤波前后语音信号的波形及频谱
要求用自己设计的各滤波器分别对采集的语音信号进行滤波,并在一个窗口同时画出滤波前后的波形及频谱。
(1)IIR滤波器利用函数filter对信号进行滤波;
(2)FIR滤波器利用函数fftfilt对信号进行滤波。
%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低通滤波后FFT
FFTIIRyL=fft(IIRyL);%语音信号通过butter低通滤波器后FFT
FFTIIRy1L=fft(IIRy1L);%语音信号通过cheby1低通滤波器后FFT
FFTIIRy2L=fft(IIRy2L);%语音信号通过cheby2低通滤波器后FFT
FFTIIRy3L=fft(IIRy3L);%语音信号通过ellip低通滤波器后FFT
%FIR低通滤波后FFT
FFTFIRyL=fft(FIRyL);%语音信号通过butter低通滤波器后FFT
FFTFIRy1L=fft(FIRy1L);%语音信号通过cheby1低通滤波器后FFT
FFTFIRy2L=fft(FIRy2L);%语音信号通过cheby2低通滤波器后FFT
FFTFIRy3L=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高通滤波后FFT
FFTIIRyH=fft(IIRyH);%语音信号通过butter低通滤波器后FFT
FFTIIRy1H=fft(IIRy1H);%语音信号通过cheby1低通滤波器后FFT
FFTIIRy2H=fft(IIRy2H);%语音信号通过cheby2低通滤波器后FFT
FFTIIRy3H=fft(IIRy3H);%语音信号通过ellip低通滤波器后FFT
%FIR高通滤波后FFT
FFTFIRyH=fft(FIRyH);%语音信号通过butter低通滤波器后FFT
FFTFIRy1H=fft(FIRy1H);%语音信号通过cheby1低通滤波器后FFT
FFTFIRy2H=fft(FIRy2H);%语音信号通过cheby2低通滤波器后FFT
FFTFIRy3H=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');
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低通滤波后FFT
FFTIIRyB=fft(IIRyB);%语音信号通过butter低通滤波器后FFT
FFTIIRy1B=fft(IIRy1B);%语音信号通过cheby1低通滤波器后FFT
FFTIIRy2B=fft(IIRy2B);%语音信号通过cheby2低通滤波器后FFT
FFTIIRy3B=fft(IIRy3B);%语音信号通过ellip低通滤波器后FFT
%FIR低通滤波后FFT
FFTFIRyB=fft(FIRyB);%语音信号通过butter低通滤波器后FFT
FFTFIRy1B=fft(FIRy1B);%语音信号通过cheby1低通滤波器后FFT
FFTFIRy2B=fft(FIRy2B);%语音信号通过cheby2低通滤波器后FFT
FFTFIRy3B=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