基于matlab的数字滤波器设计及其对语音信号的应用.doc
- 文档编号:1946212
- 上传时间:2023-05-02
- 格式:DOC
- 页数:14
- 大小:77KB
基于matlab的数字滤波器设计及其对语音信号的应用.doc
《基于matlab的数字滤波器设计及其对语音信号的应用.doc》由会员分享,可在线阅读,更多相关《基于matlab的数字滤波器设计及其对语音信号的应用.doc(14页珍藏版)》请在冰点文库上搜索。
题目2:
基于Matlab的数字滤波器设计及其对语音信号的应用
一.课程设计的目的:
1.掌握数字信号处理的基本概念、基本理论和基本方法;
2.掌握MATLAB设计FIR和IIR数字滤波器的方法;
3.掌握在Windows环境下语音信号采集以及时域、频域分析;
4.学会MATLAB的使用,掌握MATLAB的程序设计方法;
5.学会用MATLAB对信号进行分析和处理。
二. 课程设计内容:
1.录制一段自己的语音信号,对录制的信号进行采样;
2.画出采样后语音信号的时域波形和频谱图;
3.给定滤波器的性能指标,采matlab设计数字滤波器,并画出滤波器的频率响应;
4.用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
5.回放语音信号。
三..滤波器设计方法综述:
(1)直接设计数字滤波器
(2)脉冲相应不变法
(3)双线性变换
(4)使用matlab6下的FilterDesignedTool3.利用Matlab设计数字滤波器的方法:
设计思路:
首先将数字高通滤波器的技术指标转化为模拟滤波器的技术指标,再采用Buttetworth逼近的方法求得其系统函数H(S),再利用冲激响应不变法将模拟滤波器的系统函数H(s)变为相应的数字滤波器的系统函数H(Z),然后用MATALB进行仿真,然后确定数字滤波器的结构。
四.设计任务及步骤:
1.语音信号的采集
方法一:
通过开始—程序—附件—娱乐—录音机,录制一段自己的话音。
方法二:
或利用老师给的语音,在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
函数:
wavrecord(2*fs,fs)
程序如下:
[y,fs,bite]=wavread('1.wav');
sound(y)
wavrecord(2*fs,fs);
fft(y);
Y=fft(y);
fp=1000;
fr=1200;as=40;ap=1;
[N,Wn]=BUTTORD(2*fp/fs,2*fr/fs,ap,as);
[B,A]=BUTTER(N,Wn);
2.语音信号的频谱分析
要求画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
fft
程序如下:
[y,fs,bite]=wavread('1.wav');
sound(y);
Y=fft(y);
mag=abs(Y);
phase=angle(Y);
phase=phase*180/pi;
dB=20*log10(abs(Y)+eps);
t=(0:
length(y)-1)/fs;
figure
(1)
subplot(221);plot(t,y);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)');
x1=wavread('f:
\s1.wav');%读取语音信号的数据,赋给变量x1
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画出各滤波器的频率响应。
低通滤波器:
1(频率变换法设计IIR滤波器)butter函数
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]=buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn);
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
2(频率变换法设计IIR滤波器)cheby1函数
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn);
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby1低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
3(频率变换法设计IIR滤波器)cheby2函数
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]=cheb2ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby2(n,ap,fn);
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby2低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
得出来的信号波形如下:
4(频率变换法设计IIR滤波器)ellip函数
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
ap=1;
as=40;
[n,fn]=ellipord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=ellip(n,ap,as,fn);
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('ellip低通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
高通滤波器:
1(频率变换法设计IIR滤波器)butter函数
[y,fs,bit]=wavread('1');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn,'high');
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
2(频率变换法设计IIR滤波器)cheby1函数
[y,fs,bit]=wavread('1');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn,'high');
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby1高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
3(频率变换法设计IIR滤波器)cheby2函数
[y,fs,bit]=wavread('1');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=cheb2ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby2(n,ap,fn,'high');
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby2高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
4(频率变换法设计IIR滤波器)ellip函数
[y,fs,bit]=wavread('1');
fp=4300;
fr=4000;
ap=1;
as=40;
[n,fn]=ellipord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=ellip(n,ap,as,fn,'high');
freqz(b,a);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('ellip高通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
带通滤波器:
1
[y,fs,bit]=wavread('1');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=buttord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=butter(n,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
2
[y,fs,bit]=wavread('1');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=cheb1ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby1(n,ap,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby1带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
3
[y,fs,bit]=wavread('1');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=cheb2ord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=cheby2(n,ap,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('cheby2带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
4
[y,fs,bit]=wavread('1');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
ap=1;
as=40;
fp=[fp1,fp2];
fr=[fr1,fr2];
[n,fn]=ellipord(fp/(fs/2),fr/(fs/2),ap,as,'z');
[b,a]=ellip(n,ap,as,fn);
[h,w]=freqz(b,a);
subplot(221);plot(w*fs/(2*pi),abs(h));title('ellip带通滤波');
y1=filter(b,a,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
窗函数
1.低通
[y,fs,bit]=wavread('1');
fr=1000;
wr=2*pi*fr;
Window=boxcar(8);
b=fir1(7,fr/(fs/2),Window);
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('低通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
2.带通
[y,fs,bit]=wavread('1');
fr=1000;
fp=3000
wr=2*pi*fr;
Window=blackman(16);
b=fir1(15,[fr/(fs/2),fp/(fs/2)],Window);
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('带通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
3.高通
[y,fs,bit]=wavread('1');
fr=3000;
wr=2*pi*fr;
Window=boxcar(8);
b=fir1(7,fr/(fs/2),'high');
[h,w]=freqz(b,1);
subplot(221);plot(w*fs/(2*pi),abs(h));title('低通滤波');
y1=filter(b,1,y);
y2=fftfilt(b,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
双线性变换
1.用双线行变换butter低通滤波
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
wp=(fp/fs)*2*pi;
ws=(fr/fs)*2*pi;
OmegaP=2*fs*tan(wp/2);
OmegaS=2*fs*tan(ws/2);
ap=1;
as=40;
[N,Wn]=buttord(OmegaP,OmegaS,ap,as,'s'); %选择滤波器的最小阶数
[b,a]=butter(N,Wn,'s');
[bz,az]=bilinear(b,a,fs);
[h,w]=freqz(bz,az);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter低通滤波');
y1=filter(bz,az,y);
y2=fftfilt(bz,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
2.用双线行变换butter高通滤波
[y,fs,bit]=wavread('1');
fp=1000;
fr=1200;
wp=(fp/fs)*2*pi;
ws=(fr/fs)*2*pi;
OmegaP=2*fs*tan(wp/2);
OmegaS=2*fs*tan(ws/2);
ap=1;
as=40;
[N,Wn]=buttord(OmegaP,OmegaS,ap,as,'s'); %选择滤波器的最小阶数
[b,a]=butter(N,Wn,'high','s');
[bz,az]=bilinear(b,a,fs);
[h,w]=freqz(bz,az);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter低通滤波');
y1=filter(bz,az,y);
y2=fftfilt(bz,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
3.用双线行变换butter带通滤波
[y,fs,bit]=wavread('1');
fp1=1200;
fr1=1000;
fp2=3000;
fr2=3200;
fp=[fp1fp2];
fr=[fr1fr2];
wp=(fp/fs)*2*pi;
ws=(fr/fs)*2*pi;
OmegaP=2*fs*tan(wp/2);
OmegaS=2*fs*tan(ws/2);
ap=1;
as=15;
[N,Wn]=buttord(OmegaP,OmegaS,ap,as,'s'); %选择滤波器的最小阶数
[b,a]=butter(N,Wn,'s');
%[b1,a1]=lp2bp(b,a,sqrt())
[bz,az]=bilinear(b,a,fs);
[h,w]=freqz(bz,az);
subplot(221);plot(w*fs/(2*pi),abs(h));title('butter低通滤波');
y1=filter(bz,az,y);
y2=fftfilt(bz,y);
subplot(222);plot(y);title('原始语音信号');
subplot(223);plot(y1);title('IIR滤波后语音信号');
subplot(224);plot(y2);title('FIR滤波后语音信号');
sound(y1,fs,bit);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 数字滤波器 设计 及其 语音 信号 应用
文档标签
- 基于matlab数字音效
- 基于MATLAB自适应滤波
- 基于小米及其应用
- 语音滤波器课程设计王凯语音滤波器
- MATLAB应用MATLAB数据及运算MATLAB应用
- MATLAB语音信号应用
- 信号种类及其对应
- 平滑滤波器设计应用
- 基于MATLAB信号源滤波器
- 常用基本信号MATLAB
- 数字滤波器设计及其应用
- Matlab语言及其应用
- 计数器的设计与应用终结版计数器设计
- 信号分离及其应用
- 数字滤波器设计语音信号
- matlab处理音乐数字信号
- 完整word基于Matlab
- 完整版基于PLC数字
- 数字信号处理完整版数字信号
- 完整word基于matlab
- 数字信号处理MATLAB参考资料数字信号处理
- 完整word语音信号
- 完整版基于数字变频
- 完整版基于MATLAB心音