日番谷数字信号处理课程设计说明书.docx
《日番谷数字信号处理课程设计说明书.docx》由会员分享,可在线阅读,更多相关《日番谷数字信号处理课程设计说明书.docx(16页珍藏版)》请在冰豆网上搜索。
![日番谷数字信号处理课程设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-5/31/9b630321-6143-4b10-a7ef-dd90cb9ff8d5/9b630321-6143-4b10-a7ef-dd90cb9ff8d51.gif)
日番谷数字信号处理课程设计说明书
广西工学院
数字信号处理课程设计
说明书
设计题目语音信号的处理与滤波
系别计算机工程系
专业班级通信062班
学生姓名杨翠云
学号200600402055
指导教师周坚和
日期2009年1月2日
目录
摘要…………………………………………3
一.设计内容………………………………3
二.滤波器设计原理………………………3
三.设计步骤………………………………4
1.语音信号的采集…………………………………4
2.实际问题的解决…………………………………5
3.比较8000个和16000个数据点的幅度和相位谱…7
4.滤波器的设计及对语音信号进行滤波…………8
四.心得体会……………………………14
五.参考文献……………………………14
摘要:
本课程设计主要是对数字信号处理中所学知识在MATLAB中的综合应用,对语音信号的采样及进行频谱分析,滤波器的设计及利用滤波器对信号的滤波。
——装订线——
一、设计内容:
语音信号的处理与滤波:
使用声音相关函数录制3秒左右自己的声音。
掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数;并解决实际发出声音落后录制动作半拍的现象。
画出采样后语音信号的时域波形和频谱图。
对录制的声音信号分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同。
给定滤波器的性能指标,分别设计一个IIR低通与带通滤波器,并对语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的语音信号进行对比,分析语音信号的变化。
二、滤波器设计原理:
滤波器,顾名思义,就是对系统的输入信号进行滤波。
本设计采用Filter()函数对语音信号进行滤波。
并采用IIR数字滤波器。
其基本步骤(以低通数字滤波器为例):
1)确定数字滤波器的性能指标:
通带临界频率fp、阻带临界频率fr;通带内的最大衰减Ap;阻带内的最小衰减Ar;采样周期T;
2) 确定相应的数字角频率,ωp=2πfpT;ωr=2πfrT;
3) 计算经过预畸的相应模拟低通原型的频率,
;
4) 根据Ωp和Ωr计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函数Ha(s);
5) 用双线性变换公式代入Ha(s),把s平面的虚轴单值地映射于z平面的单位圆上,s平面的左半平面完全映射到z平面的单位圆内。
双线性变换不存在混叠问题。
求出所设计的传递函数H(z);即
三.设计步骤
1.语音信号的采集
MATLAB中有关声音(wave)录制、读取、播放、存储和读取的函数有wavrecord();wavread();wavwrite();sound().录制3秒左右自己的声音,画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。
程序代码如下:
fs=8000;%采样频率
y=wavrecord(3*fs,fs,'double');%录制3秒自己的声音
wavplay(y,fs);%播放录音
wavwrite(y,fs,'E:
/音乐');%存储声音
wavread('E:
/音乐');%读取声音
subplot(1,2,1);
plot(abs(y));%画出声音采样后的时域波形
gridon;
title('信号的时域波形');
xlabel('时间');
ylabel('振幅');
y1=fft(y,1024);%对信号做fs点FFT变换
subplot(1,2,2);
f=fs*(0:
499)/1024;%采样点数
plot(f,abs(y1(1:
500)));%画出原始语音信号的幅频响应图
gridon;
title('fft后信号的频谱特性');
xlabel('频率');
ylabel('振幅');
2.实际发出声音落后录制动作半拍问题的解决
录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象。
在MATLAB中先用wavread(‘filename’,’’size’)函数读取声音长度,然后再用wavread('filename',[n1n2])函数从n1点开始读取声音,即去掉了前面的无效点。
程序代码如下:
size=wavread('E:
/音乐','size');%读取声音长度
size=24000;
p=wavread('E:
/音乐',[200024000]);%去除前2000个无效点
wavplay(p,8000);%播放声音
wavwrite(p,8000,'E:
/my');%声音的存储
wavread('E:
/my');%读取声音
subplot(1,2,1)
gridon;
plot(abs(p))%画出去除无效点后的时域波形
title('去除无效点后的时域波形');
xlabel('时间');
ylabel('振幅');
y1=fft(p,1024);%对信号做fs点fft变换
subplot(1,2,2)
gridon;
fs=8000;%采样频率
f=fs*(0:
499)/1024;%采样点数
plot(f,abs(y1(1:
500)))%绘出去除无效点后信号的幅频响应图
title('fft后声音的频谱特性');
xlabel('频率');
ylabel('振幅');
比较去除无效点前后波形可知:
其时域波形和频谱图大体一致,从其时域可看出去除无效点后的波形更贴近Y轴,更加接近实际的声音图形。
3.比较8000个和16000个数据点的幅度和相位谱
程序代码如下:
y=wavread('E:
/my');%读取声音
y2=fft(y,8000);
subplot(2,2,1);
f1=fs*(0:
499)/8000;%采样点数
plot(f1,abs(y2(1:
500)));%绘出其幅度图
gridon;
title('8000点的幅度图');
xlabel('频率');
ylabel('振幅');
subplot(2,2,2);
plot(angle(y2));%绘出其相位谱
gridon;
title('8000点的相位谱');
xlabel('频率');
ylabel('相位');
y3=fft(y,16000);
subplot(2,2,3);
f2=fs*(0:
499)/16000;%采样点数
plot(f2,abs(y3(1:
500)));%绘出其幅度图
gridon;
title('16000点的幅度图');
xlabel('频率');
ylabel('振幅');
subplot(2,2,4);
plot(angle(y3));%绘出其相位谱
gridon;
title('16000点的相位谱');
xlabel('频率');
ylabel('相位');
由其幅度谱可看出:
点数越多,其频率越小。
其幅度与点数大致成正比。
4.滤波器的设计及对语音信号进行滤波
设计:
在Matlab中,使用函数butter,cheby1等函数设计IIR滤波器;由给定的性能指标将数字频率预畸为模拟滤波器频率,即w=2/Ttan(W/2).求契比雪夫I型滤波器阶数和滤波器截止频率wn的函数:
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)。
然后求传输函数分子和分母的系数;即:
[num,den]=cheby1(N,Rp,Wn)。
最后利用巴特沃思逼近将模拟系数转换为数字系数,并用freqz(num,den)函数画出其频率响应。
滤波:
采用Filter()函数对语音信号进行滤波。
给出各滤波器的性能指标:
(1)低通滤波器性能指标:
fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标:
fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。
(3)带通滤波器性能指标:
fp1=1200Hz,fp2=3000Hz,fsc1=1000Hz,fsc2=3200Hz,As=100dB,Ap=1dB。
为了比较各种滤波器对信号滤波的效果,本设计采用IIR低通与IIR带通。
程序代码如下:
1)IIR低通滤波器设计:
fs=7000;%采样频率
Wp=1000;%通带临界频率
Ws=1200;%阻带临界频率
Rp=1;%阻带内的最小衰减
Rs=100;%通带内的最大衰减
wc=2*fs*tan(2*pi*Wp/(2*fs));%将数字频率预畸为模拟滤波器的通带最大频率
wt=2*fs*tan(2*pi*Ws/(2*fs));%将数字频率预畸为模拟滤波器的阻带最小频率
[N,wn]=cheb1ord(wc,wt,1,100,'s');%求阶数N和滤波器截止频率wn
[B,A]=cheby1(N,1,wn,'low','s');%传输分子和分母的系数
[num,den]=bilinear(B,A,8000);%模拟转换为数字低通系数向量
freqz(num,den);%求频率响应
gridon;
title('低通滤波器')
对语音信号的滤波:
y=wavread('E:
/my');%读取声音
y1=fft(y,1024);%对声音做fs点FFT变换
fs=7000;%采样频率
Wp=1000;%通带临界频率
Ws=1200;%阻带临界频率
Rp=1;%阻带内的最小衰减
Rs=100;%通带内的最大衰减
wc=2*fs*tan(2*pi*Wp/(2*fs));%将数字频率预畸为模拟滤波器的通带最大频率
wt=2*fs*tan(2*pi*Ws/(2*fs));%将数字频率预畸为模拟滤波器的阻带最小频率
[N,wn]=cheb1ord(wc,wt,1,100,'s');%求出N和阻带截止频率wn
[B,A]=cheby1(N,1,wn,'low','s');%传输分子和分母的系数
[num,den]=bilinear(B,A,7000);%模拟转换为数字低通系数向量
y2=filter(num,den,y);%对声音滤波
sound(y2,8000,16);%播放滤波后的声音
wavwrite(y2,fs,'E:
/低通');%声音的存储
subplot(1,2,1)
gridon
plot(abs(y2))%滤波后信号的时域波形
title('低通后信号的时域波形')
xlabel('时间');
ylabel('振幅');
y3=fft(y2,1024);%将滤波后的声音进行fft的1024点变换
subplot(1,2,2)
gridon;
f=fs*(0:
499)/1024;
plot(f,abs(y3(1:
500)));
title('低通后信号的频谱');
xlabel('频率');
ylabel('振幅');
由低通后信号的频谱易看出:
语音信号经过低通滤波器后,滤除了高频部分,与理论相符。
2)IIR带通滤波器设计:
fs=8000;
Wp=[12003000]/4000;%归一化通带数字截止频率
Ws=[10003200]/4000;%归一化阻带数字截止频率
Rp=1;%阻带内的最小衰减
Rs=100;%通带内的最大衰减
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wn
[b,a]=butter(n,Wn);%传输分子和分母的系数
freqz(b,a);%求频率响应
gridon;
title('带通滤波器')
对语音信号的滤波:
y=wavread('E:
/my');%读取声音
fs=8000;
Wp=[12003000]/4000;%归一化通带数字截止频率
Ws=[10003200]/4000;%归一化阻带数字截止频率
Rp=1;%阻带内的最小衰减
Rs=100;%通带内的最大衰减
[n,Wn]=buttord(Wp,Ws,Rp,Rs);%求阶数N和滤波器截止频率Wn
[b,a]=butter(n,Wn);%传输分子和分母的系数
y2=filter(b,a,y);%对声音滤波
sound(y2,8000,16)%播放滤波后的声音
wavwrite(y2,fs,'E:
/带通');%声音的存储
subplot(1,2,1)
gridon
plot(abs(y2))%滤波后信号的时域波形
title('带通后信号的时域波形');
xlabel('时间');
ylabel('振幅');
y1=fft(y2,1024);%将滤波后的声音进行fft的1024点变换
subplot(1,2,2)
gridon;
f=fs*(0:
499)/1024;
plot(f,abs(y1(1:
500)));
title('带通后信号的频谱');
xlabel('频率');
ylabel('振幅');
由带通后信号的频谱可得:
经带通滤波器后,滤除了低频与高频部分,与理论相符。
绘制其滤波后的相位图:
y1=wavread('E:
/低通');%读取声音
p1=fft(y1,1024);
subplot(1,2,1)
gridon;
fs=7000;%采样频率
f1=fs*(0:
499)/1024;%采样点数
plot(angle(p1));
title('低通后信号的相位图')
xlabel('频率')
ylabel('相位')
y2=wavread('E:
/带通');
p2=fft(y2,1024);
subplot(1,2,2)
gridon;
fs=7000;%采样频率
f2=fs*(0:
499)/1024;%采样点数
plot(angle(p2));
title('带通后信号的相位图')
xlabel('频率')
ylabel('相位')
四.心得体会
通过本次课程设计,我对MATLAB软件和DSP开发系统作为工具有了更深刻的了解与认识。
同时巩固了数字信号处理所学知识。
提高了对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
对滤波器的原理和作用有了一定的了解。
加强了我们动手、思考和解决问题的能力,实现了理论和实践的相互结合。
但是,在此设计过程中也遇到了不少问题。
不懂分析相位谱。
比如怎么分析滤波器后的相位谱,滤波后的相位谱能说明什么。
同时认识到自己所学知识的局限性,要真正学好还需发大量时间。
五.参考文献
1)MATLAB在数字信号处理中的应用薛年喜编著清华大学出版社
2)数字信号处理教程程佩青编著清华大学出版社
3)数字信号处理及其MATLAB实现赵红怡张常年编著化学工业出版社
4)matlab6.5及其在信号处理中的应用王宏编著清华大学出版社