数字信号处理课程设计报告.docx
《数字信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计报告.docx(45页珍藏版)》请在冰点文库上搜索。
数字信号处理
课程设计报告
课设题目:
语音信号的采集与处理学 院:
专 业:
班 级:
姓 名:
学 号:
指导教师:
2011年 7月 1日
课程设计报告撰写要求
1、页面设置
纸张大小设置为纵向A4,页边距设置为:
上3.8厘米,下3.5厘米,左3厘米,右3厘米,页眉设置为3厘米,页脚设置为2.7厘米,文档网络设置为指定行和字符网格,每行34字,每页34行。
2、段落及字体设置
除各级标题外,首行缩进2字符;图、表及图题、表题首行不缩进,居中放置;图表不应超出版心范围;行距采用单倍行距。
正文中文采用小四号宋体,英文采用新罗马字体(TimesNewRoman),段前0磅,断后0磅;
一级标题采用小二号黑体,段前12磅,段后12磅二级标题采用小三号黑体,段前6磅,段后6磅三级标题采用四号黑体,段前6磅,段后0磅
3、装订要求
采用左侧装订,订两钉。
哈尔滨工业大学(威海)课程设计报告
目 录
一.课程设计任务 1
二.课程设计原理及设计方案 2
三.课程设计的步骤和结果 3
四.课程设计总结 4
五.设计体会 5
六.参考文献 6
-I-
哈尔滨工业大学(威海)课程设计报告
一.课程设计任务
1、语音信号的采集
利用Windows下的录音机,录制一段自己的话音,时间在1s内,然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
2、语音信号的频谱分析
在Matlab中,可以利用函数fft对信号进行快速傅立叶变换,得到信号的频谱特性,要求学生首先画出语音信号的时域波形,然后对语音信号进行频谱分析。
3、设计数字滤波器和画出其频率响应给出各滤波器的性能指标;给定滤波器的性能指标如下:
(1)低通滤波器的性能指标:
fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB.
(2)高通滤波器的性能指标:
fc=4800Hz,fb=5000Hz,As=100dB,Ap=1dB.
(3)带通滤波器的性能指标:
fb1=1200Hz, fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB.
采用窗函数法和双线性变换法设计上面要求的3种滤波器,并画出滤波器的频率响应;
4、用滤波器对信号进行滤波
然后用自己设计的滤波器对采集到的信号进行滤波,画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化;
5、回放语音信号,分析滤波前后的语音变化;
6、设计系统界面
为了使编制的程序操作方便,设计处理系统的用户界面,在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数、显示滤波器的频率响应,选择信号等。
-42-
二.课程设计原理及设计方案
1.用窗函数法设计FIR滤波器
根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。
根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求
滤波器频率应为Hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:
p
h(n)=1 H(ejw)ejwndw
d 2pò-p d
在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从
w=0到w=2π采样N点,采用离散傅里叶反变换(IDFT)即可求出。
用窗函数wd(n)将hd(n)截断,并进行加权处理,得到
h(n)=hd(n)w(n)
如果要求线性相位特性,则h(n)还必须满足:
h(n)=±h(N-1-n)
根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。
要根据所设计的滤波特性正确选择其中一类。
例如,要设计线性相位低通特性可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。
验算技术指标是否满足要求,为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。
2.用双线性变换法设计IIR数字滤波器
脉冲响应不变法的主要缺点是产生频率响应的混叠失真。
这是因为从S平面到Z平面是多值的映射关系所造成的。
为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。
也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。
图1双线性变换的映射关系
为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现
(1)式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。
将式
(1)写成
将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得
再将S1平面通过以下标准变换关系映射到Z平面z=es1T
从而得到S平面和Z平面的单值映射关系为:
(2)
(3)
式
(2)与式(3)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换
式
(1)与式
(2)的双线性变换符合映射变换应满足的两点要求。
首先,把z=ejω,可得
(4)
即S平面的虚轴映射到Z平面的单位圆。
其次,将s=σ+jΩ代入式(4),得
因此
由此看出,当σ<0时,|z|<1;当σ>0时,|z|>1。
也就是说,S平面的左半平面映射到Z平面的单位圆内,S平面的右半平面映射到Z平面的单位圆外,S平面的虚轴映射到Z平面的单位圆上。
因此,稳定的模拟滤波器经双线性变换后所得的数字滤波器也一定是稳定的。
双线性变换法优缺点
双线性变换法与脉冲响应不变法相比,其主要的优点是避免了频率响应的混叠现象。
这是因为S平面与Z平面是单值的一一对应关系。
S平面整个jΩ轴单值地对应于Z平面单位圆一周,即频率轴是单值变换关系。
这个关系如式
(4)所示,重写如下:
上式表明,S平面上Ω与Z平面的ω成非线性的正切关系,如图2所示。
由图2看出,在零频率附近,模拟角频率Ω与数字频率ω之间的变换关系接
近于线性关系;但当Ω进一步增加时,ω增长得越来越慢,最后当Ω→∞时,ω终止在折叠频率ω=π处,因而双线性变换就不会出现由于高频部分超过折叠频率而混淆到低频部分去的现象,从而消除了频率混叠现象。
图2双线性变换法的频率变换关系
但是双线性变换的这个特点是靠频率的严重非线性关系而得到的,如式(4)
及图2所示。
由于这种频率之间的非线性变换关系,就产生了新的问题。
首先,一个线性相位的模拟滤波器经双线性变换后得到非线性相位的数字滤波器,不再保持原有的线性相位了;其次,这种非线性关系要求模拟滤波器的幅频响应必须是分段常数型的,即某一频率段的幅频响应近似等于某一常数(这正是一般典型的低通、高通、带通、带阻型滤波器的响应特性),不然变换所产生的
数字滤波器幅频响应相对于原模拟滤波器的幅频响应会有畸变,如图3所示。
图3双线性变换法幅度和相位特性的非线性映射
对于分段常数的滤波器,双线性变换后,仍得到幅频特性为分段常数的滤波器,但是各个分段边缘的临界频率点产生了畸变,这种频率的畸变,可以通过频率的预畸来加以校正。
也就是将临界模拟频率事先加以畸变,然后经变换后正好映射到所需要的数字频率上。
三.课程设计的步骤和结果
1、语音信号的采集
利用Windows下的录音机,录制一段自己的话音,时间在1s内,然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
程序:
[y,fs,nbits]=wavread('E:
\matlab_yuyin\myvoice.wav')
得到:
fs=
22050
nbits=
16
由此可知,采样频率为22050Hz,采样点数为16bit
2、语音信号的频谱分析
在Matlab中,利用函数fft对信号进行快速傅立叶变换,得到信号的频谱特性,首先画出语音信号的时域波形,然后对语音信号进行频谱分析。
程序:
[y,fs,nbits]=wavread('E:
\matlab_yuyin\myvoice.wav');sound(y,fs,nbits);
y=y-mean(y); %去直流成分Y=fftshift(abs(fft(y)));
w=linspace(-fs/2,fs/2,length(Y));subplot(2,1,1),plot(y);title('原始信号波形');
subplot(2,1,2),plot(w,Y);title('原始信号频谱');
axis([0,2000,-inf,inf]);
□一一一一一
0.2
0.1
0
-0.1
-0.2
0 2000 4000 6000 8000 10000120001400016000 18000
□一一一一一
150
100
50
0
-1.5 -1 -0.5 0 0.5 1 1.5
x104
3、设计数字滤波器和画出其频率响应给出各滤波器的性能指标;给定滤波器的性能指标如下:
(1)低通滤波器的性能指标:
fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB.
(2)高通滤波器的性能指标:
fc=4800Hz,fb=5000Hz,As=100dB,Ap=1dB.
(3)带通滤波器的性能指标:
fb1=1200Hz, fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB.
采用窗函数法和双线性变换法设计上面要求的3种滤波器,并画出滤波器的频率响应;
4、用滤波器对信号进行滤波
用自己设计的滤波器对采集到的信号进行滤波,画出滤波后信号的时域波形及频谱,并对滤波前后的信号进行对比,分析信号的变化;
窗函数法设计FIR滤波器:
(1)低通滤波器
clearall;
Ft=22050;
Fp=1000;
Fs=1200;
[y,fs,nbits]=wavread('myvoice.wav');
%sound(y,fs,nbits);y=y-mean(y);wp=2*Fp/Ft;ws=2*Fs/Ft;As=100;
wdel=ws-wp; %过渡带宽N=ceil(8*pi/wdel);%取整
Wn=(wp+ws)/2 %截止频率即Wc
%N取奇数
ifmod(N,2)==0
N=N+1; %若为偶数则加1
end
fcuts=[1000*2/Ft1200*2/Ft];%归一化频率mags=[10];
devs=[1-10^(1/-20)10^(40/-20)];
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值b=fir1(N,Wn,ftype,kaiser(N+1,beta),'noscale');
freq_axis=[0:
pi/512:
pi-pi/512];
freq_norm=[0:
511]/512; %归一化的频率轴
H=freqz(b);%变成频率响应 %b为h[n]系数,1表示无极点(因为是FIR),512表示点数)
subplot(2,1,1);
plot(freq_norm,20*log10(abs(H)));%画对数幅度谱holdon;
xlabel('归一化频率w/pi');ylabel('幅度(dB)');title('FIR-幅度响应');
subplot(2,1,2);
plot(freq_norm,angle(H));holdon;
xlabel('归一化频率w/pi');ylabel('相位');title('FIR-相位响应');
f2=filter(b,1,y); %滤波figure
(2)
subplot(2,1,1)plot(y)
title('FIR低通滤波器滤波前的时域波形');subplot(2,1,2)
plot(f2);
title('FIR低通滤波器滤波后的时域波形');
sound(f2); %播放滤波后的语音信号F0=fftshift(abs(fft(f2)));
figure(3)
y2=fftshift(abs(fft(y)));
w=linspace(-Ft/2,Ft/2,length(y2));subplot(2,1,1);
plot(w,y2);
title('FIR低通滤波器滤波前的频谱')xlabel('频率/Hz');
ylabel('幅值');
w=linspace(-Ft/2,Ft/2,length(F0));subplot(2,1,2)
plot(w,F0);
title('FIR低通滤波器滤波后的频谱')xlabel('频率/Hz');
ylabel('幅值');
FIR-一一一一
50
0
□一(dB)
-50
-100
-150
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
□一一一一w/piFIR-一一一一
4
2
□一
0
-2
0.8
0.9
1
□一一
□一
w/pi
-4
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
FIR一一一一一一一一一一一一一
0.2
0.1
0
-0.1
-0.2
0 2000 4000 6000 8000 10000120001400016000 18000
FIR一一一一一一一一一一一一一
0.2
0.1
0
-0.1
-0.20 2000 4000 6000 8000 10000120001400016000 18000
FIR一一一一一一一一一一一
150
100
□一
50
0
-1.5 -1 -0.5 0 0.5 1 1.5
150
□一/Hz
FIR一一一一一一一一一一一
x104
100
□一
50
0
-1.5 -1 -0.5 0 0.5 1 1.5
□一/Hz
x104
分析:
由频率响应可看出为低通,与题目要求的fp1=1000,fs1=1200基本吻合,阻带衰减近似为100,且为线性相位。
比较滤波前和滤波后的频谱可发现通过了低频成分,滤掉了高频成分。
(2)高通滤波器
clearall;
Ft=22050;
Fp=5000;
Fs=4800;
[y,fs,nbits]=wavread('myvoice.wav');
%sound(y,fs,nbits);y=y-mean(y);wp=2*Fp/Ft;ws=2*Fs/Ft;As=100;
wdel=wp-ws; %过渡带宽N=ceil(8*pi/wdel);%取整
Wn=(wp+ws)/2 %截止频率即Wc
%N取奇数
ifmod(N,2)==0
N=N+1; %若为偶数则加1
end
fcuts=[4800*2/Ft5000*2/Ft];%归一化频率mags=[01];
devs=[1-10^(1/-20)10^(40/-20)];
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值b=fir1(N,Wn,ftype,kaiser(N+1,beta),'noscale');
freq_axis=[0:
pi/512:
pi-pi/512];
freq_norm=[0:
511]/512; %归一化的频率轴
H=freqz(b);%变成频率响应 %b为h[n]系数,1表示无极点(因为是FIR),512表示点数)
subplot(2,1,1);
plot(freq_norm,20*log10(abs(H)));%画对数幅度谱holdon;
xlabel('归一化频率w/pi');ylabel('幅度(dB)');title('FIR-幅度响应');
subplot(2,1,2);
plot(freq_norm,angle(H));holdon;
xlabel('归一化频率w/pi');ylabel('相位');title('FIR-相位响应');
f2=filter(b,1,y);figure
(2)subplot(2,1,1)plot(y)
title('FIR高通滤波器滤波前的时域波形');subplot(2,1,2)
plot(f2);
title('FIR高通滤波器滤波后的时域波形');
sound(f2); %播放滤波后的语音信号F0=fftshift(abs(fft(f2)));
figure(3)
y2=fftshift(abs(fft(y)));
w=linspace(-Ft/2,Ft/2,length(y2));subplot(2,1,1);
plot(w,y2);
title('FIR高通滤波器滤波前的频谱')xlabel('频率/Hz');
ylabel('幅值');
w=linspace(-Ft/2,Ft/2,length(F0));subplot(2,1,2)
plot(w,F0);
title('FIR高通滤波器滤波后的频谱')xlabel('频率/Hz');
ylabel('幅值');
FIR-一一一一
50
0
□一(dB)
-50
-100
-150
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
□一一一一w/piFIR-一一一一
4
2
□一
0
-2
0.8
0.9
1
□一一
□一
w/pi
-40 0.1 0.2 0.3 0.4 0.5 0.6 0.7
FIR一一一一一一一一一一一一一
0.2
0.1
0
-0.1
-0.2
0 2000 4000 6000 8000 10000120001400016000 18000
FIR一一一一一一一一一一一一一
0.2
0.1
0
-0.1
-0.2
0 2000 4000 6000 8000 10000120001400016000 18000
FIR一一一一一一一一一一一
150
100
□一
50
0
-1.5 -1 -0.5 0 0.5 1 1.5
□一/Hz
FIR一一一一一一一一一一一
15
x104
10
□一
5
0
-1.5 -1 -0.5 0 0.5 1 1.5
□一/Hz
x104
分析:
由频率响应可看出为高通,与题目要求的fp1=5000,fs1=4800基本吻合,阻带衰减近似为100,且为线性相位。
比较滤波前和滤波后的频谱可发现通过了高频成分,滤掉了低频成分。
(3)带通滤波器
clearall;
Ft=22050;
Fp1=1200;
Fp2=3000;
Fs1=1000;
Fs2=3200;
[y,fs,nbits]=wavread('myvoice.wav');
%sound(y,fs,nbits);y=y-mean(y);wp1=2*Fp1/Ft;wp2=2*Fp2/Ft;ws1=2*Fs1/Ft;ws2=2*Fs2/Ft;As=100;
wp=(wp1+ws1)/2;ws=(wp2+ws2)/2;
wdel=wp1-ws1; %过渡带宽N=ceil(8*pi/wdel);%取整
Wn=[wpws];%截止频率即Wc
%N取奇数
ifmod(N,2)==0
N=N+1; %若为偶数则加1
end
fcuts=[1000*2/Ft1200*2/Ft3000*2/Ft3200*2/Ft];%归一化频率mags=[010];
devs=[0.010.10870.01];
[N,Wn,beta,ftype]=kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值b=fir1(N,Wn,ftype,kaiser(N+1,beta),'noscale');
freq_axis=[0:
pi/512:
pi-pi/512];
freq_norm=[0:
511]/512; %归一化的频率轴
H=freqz(b);%变成频率响应 %b为h[n]系数,1表示无极点(因为是FIR),512表示点数)
subp