数字信号处理课程设计Word文件下载.docx
《数字信号处理课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理课程设计Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
给定滤波器的性能指标,采用窗函数法和双线性变换法设计滤波器,并画出滤波器的频率响应;
然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;
回放语音信号;
换一个与你性别相异的人录制同样一段语音内容,分析两段内容相同的语音信号频谱之间有什么特点;
再录制一段同样长时间的背景噪声叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除;
三.设计原理
1.在Matlab软件平台下,利用函数wavrecord(),wavwrite(),wavread(),wavplay()对语音信号进行录制,存储,读取,回放。
2.用y=fft(x)对采集的信号做快速傅立叶变换,并用[h1,w]=freqz(h)进行DTFT变换。
3.掌握FIRDF线性相位的概念,即线性相位对
及零点的约束,了解四种FIRDF的频响特点。
4.在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。
5.抽样定理
连续信号经理想抽样后时域、频域发生的变化(理想抽样信号与连续信号频谱之间的关系)
理想抽样信号能否代表原始信号、如何不失真地还原信号即由离散信号恢复连续信号的条件(抽样定理)
理想采样过程描述:
时域描述:
频域描述:
利用傅氏变换的性质,时域相乘频域卷积,若
则有
与
的关系:
理想抽样信号的频谱是连续信号频谱的周期延拓,重复周期为s(采样角频率)。
如果:
即连续信号是带限的,且信号最高频率不超过抽样频率的二分之一,则可不失真恢复。
奈奎斯特采样定理:
要使实信号采样后能够不失真还原,采样频率必须大于信号最高频率的两倍:
四.具体实现
1.录制一段声音
1.1录制并分析
在MATLAB中用wavrecord、wavread、wavplay、wavwrite对声音进行录制、读取、回放、存储。
程序如下:
Fs=8000;
%抽样频率
time=3;
%录音时间
fprintf('
按Enter键录音%ds'
time);
%文字提示
pause;
%暂停命令
录音中......'
);
x=wavrecord(time*Fs,Fs,'
double'
%录制语音信号
录音结束'
按Enter键回放录音'
wavplay(x,Fs);
%按任意键播放语音信号
wavwrite(x,Fs,'
C:
\Users\acer\Desktop\数字信号\sound.wav'
%存储语音信号
N=length(x);
%返回采样点数
df=fs/N;
%采样间隔
n1=1:
N/2;
f=[(n1-1)*(2*pi/N)]/pi;
%频带宽度
figure
(2);
subplot(2,1,1);
plot(x);
%录制信号的时域波形
title('
原始信号的时域波形'
%加标题
ylabel('
幅值/A'
%显示纵坐标的表示意义
grid;
%加网格
y0=fft(x);
%快速傅立叶变换
subplot(2,1,2);
plot(f,abs(y0(n1)));
%原始信号的频谱图
原始信号的频谱图'
xlabel('
频率w/pi'
%显示横坐标表示的意义
幅值'
%显示纵坐标表示的意义
图1.1原始信号的时域与频谱图
1.2滤除无效点
针对实际发出声音落后录制动作半拍的现象,如何拔除对无效点的采样的问题:
出现这种现象的原因主要是录音开始时,人的反应慢了半拍,导致出现了一些无效点,而后而出现的无效的点,主要是已经没有声音的动作,先读取声音出来,将原始语音信号时域波形图画出来,根据己得到的信号,可以在第二次读取声音的后面设定采样点,取好有效点,画出滤除无效点后的语音信号时域波形图,对比可以看出。
这样就可以解决这个问题。
x=wavread('
[4000,24000]);
%从4000点截取到24000结束
plot(x);
%画出截取后的时域图形
截取后的声音时域图形'
%标题
频率'
振幅'
);
%画网格
图1.2去除无效点
2.巴特沃斯滤波器的设计
2.1设计巴特沃思低通滤波器
MATLAB程序如下。
滤波器图如图3.3所示。
%低通滤波
fp=1000;
fs=1200;
Fs=22050;
rp=1;
rs=100;
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Fs1=1;
wap=2*tan(wp/2);
was=2*tan(ws/2);
[N,wc]=buttord(wap,was,rp,rs,'
s'
[B,A]=butter(N,wc,'
[Bz,Az]=bilinear(B,A,Fs1);
figure
(1);
[h,w]=freqz(Bz,Az,512,Fs1*22050);
plot(w,abs(h));
巴特沃斯低通滤波器'
频率(HZ)'
耗损(dB)'
gridon;
图2.1巴特沃思低通滤波器
2.2设计巴特沃思高通滤波器
滤波器图如图3.5所示。
%高通滤波
fp=4800;
fs=5000;
T=1;
high'
'
巴特沃斯高通滤波器'
gridon;
图2.2巴特沃思高通滤波器
2.3设计巴特沃思带通滤波器
滤波器图如图3.7所示。
%带通滤波
fp=[1200,3000];
fs=[1000,3200];
figure(4);
[h,w]=freqz(Bz,Az,512,Fs1*1000);
巴特沃斯带通滤波器'
图2.3巴特沃思带通滤波器
3.将声音信号送入滤波器滤波
%播放原始信号
wavplay(x,fs);
%播放原始信号
subplot(4,2,1);
subplot(4,2,3);
3.1低通滤波器滤波
fs=8000;
beta=10.056;
wc=2*pi*1000/fs;
ws=2*pi*1200/fs;
width=ws-wc;
wn=(ws+wc)/2;
n=ceil(12.8*pi/width);
h=fir1(n,wn/pi,'
band'
kaiser(n+1,beta));
[h1,w]=freqz(h);
ys=fftfilt(h,x);
%信号送入滤波器滤波,ys为输出
fftwave=fft(ys);
%将滤波后的语音信号进行快速傅立叶变换
subplot(4,2,2);
%在四行两列的第二个窗口显示图形
plot(ys);
%信号的时域波形
低通滤波后信号的时域波形'
%显示标表示的意义
%网格
subplot(4,2,4);
%在四行两列的第四个窗口显示图形
plot(f,abs(fftwave(n1)));
%绘制模值
低通滤波器滤波后信号的频谱图'
wavplay(ys,8000);
%播放滤波后信号
3.2高通滤波器滤波
ws=2*5000/fs;
wc=2*4800/fs;
n=ceil(12.8*pi/width);
h=fir1(n,wn/pi,'
kaiser(n+2,beta));
%将信号送入高通滤波器滤波
subplot(4,2,5);
%在四行两列的第五个窗口显示图形
高通滤波后信号的时域波形'
%将滤波后的语音信号进行快速傅立叶变换
subplot(4,2,7);
%在四行两列的第七个窗口显示图形
plot(f,abs(fftwave(n1)));
axis([01050]);
高通滤波器滤波后信号的频谱图'
3.3带通滤波器
wc1=2*pi*1000/fs;
wc2=2*pi*3200/fs;
ws1=2*pi*1200/fs;
ws2=2*pi*3000/fs;
width=ws1-wc1;
wn1=(ws1+wc1)/2;
wn2=(ws2+wc2)/2;
wn=[wn1wn2];
n=ceil(12.8/width*pi);
ys1=fftfilt(h,x);
%将信号送入高通滤波器滤波
subplot(4,2,6);
%在四行两列的第六个窗口显示图形
plot(ys1);
%绘制后信号的时域的图形
带通滤波后信号的时域波形'
fftwave=fft(ys1);
%对滤波后的信号进行快速傅立叶变换
subplot(4,2,8);
%在四行两列的第八个窗口显示图形
带通滤波器滤波后信号的频谱图'
wavplay(ys1,8000);
图形如下:
分析:
三个滤波器滤波后的声音与原来的声音都发生了变化。
其中低通的滤波后与原来声音没有很大的变化,其它两个都又明显的变化
4.语音信号的回放
sound(xlow,Fs,bits);
%在Matlab中,函数sound可以对声音进行回放,其调用格式:
sound(xhigh,Fs,bits);
%sound(x,Fs,bits);
sound(xdaitong,Fs,bits);
5.男女语音信号的频谱分析
5.1录制一段异性的声音进行频谱分析
\Users\acer\Desktop\数字信号\sound2.wav'
5.2分析男女声音的频谱
C:
\Users\acer\Desktop\数字信号\sound2.wav'
%播放原始信号,解决落后半拍
subplot(2,2,1);
原始女生信号的时域波形'
subplot(2,2,2);
原始女生信号的频谱图'
[y,fs,bits]=wavread('
\Users\acer\Desktop\数字信号\sound.wav'
%对语音信号进行采样
wavplay(y,fs);
N=length(y);
subplot(2,2,3);
plot(y);
原始男生信号的时域波形'
y0=fft(y);
subplot(2,2,4);
%在四行两列的第三个窗口显示图形
原始男生信号的频谱图'
5.3男女声音的频谱图
图5.3男女声音信号波形与频谱对比
就时域图看,男生的时域图中振幅比女生的高,对于频谱图女生的高频成分比较多
6.噪声的叠加和滤除
6.1录制一段背景噪声
\Users\acer\Desktop\数字信号\噪音.wav'
6.2对噪声进行频谱的分析
[x1,fs,bits]=wavread('
\Users\acer\Desktop\数字信号\噪音.wav'
%对语音信号进行采样
wavplay(x1,fs);
%播放噪声信号
N=length(x1);
%采样间隔
figure(5);
subplot(3,2,1);
plot(x1);
噪声信号的时域波形'
y0=fft(x1);
subplot(3,2,2);
%噪声信号的频谱图
幅值'
噪声信号的频谱图'
6.3原始信号与噪音的叠加
[x,fs,bits]=wavread('
%对录入信号进行采样
%对噪声信号进行采样
yy=x+x1;
%将两个声音叠加
6.4叠加信号的频谱分析:
wavplay(yy,fs);
%播放叠加后信号
N=length(yy);
subplot(3,2,3);
plot(yy,'
LineWidth'
2);
叠加信号的时域波形'
时间/t'
y0=fft(yy);
subplot(3,2,4);
%叠加信号的频谱图
叠加信号的频谱图'
幅值/db'
6.5设计一个合适的滤波器将噪声滤除
fs=18000;
%采样频率
Wp=2*1000/fs;
%通带截至频率
Ws=2*2000/fs;
%阻带截至频率
Rp=1;
%最大衰减
Rs=100;
%最小衰减
[N,Wn]=buttord(Wp,Ws,Rp,Rs);
%buttord函数(n为阶数,Wn为截至频率)
[num,den]=butter(N,Wn);
%butter函数(num为分子系数den为分母系数)
[h,w]=freqz(num,den);
%DTFT变换
ys=filter(num,den,yy);
subplot(3,2,5);
subplot(3,2,6);
图6.1噪音的叠加与滤除前后频谱对比
7.结果分析
1.录制刚开始时,常会出现实际发出声音落后录制动作半拍,可在[x,fs,bits]=wavread('
d:
\matlav\work\womamaaiwo.wav'
)加窗[x,fs,bits]=wavread('
,[10010000]),窗的长度可根据需要定义。
2.语音信号通过低通滤波器后,把高频滤除,声音变得比较低沉。
当通过高通滤波器后,把低频滤除,声音变得比较就尖锐。
通过带通滤波器后,声音比较适中。
3.通过观察男生和女生图像知:
时域图的振幅大小与性别无关,只与说话人音量大小有关,音量越大,振幅越大。
频