用设计好的IIR低通滤波器对加噪的语音信号进行滤波,程序如下:
[y,fs,nbits]=wavread (‘OriSound’); %IIR低通 n = length (y) ; %求出语音信号的长度 Noise=0.2*randn(n,2); %随机函数产生噪声 s=y+Noise; %语音信号加入噪声 S=fft(s); Ft=8000; Fp=1000; Fs=1200; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft;
[n11,wn11]=buttord(wp,ws,1,50,’s’);%求低通滤波器的阶数和截止频率 [b11,a11]=butter(n11,wn11,’s’); %求S域的频率响应的参数 [num11,den11]=bilinear(b11,a11,0.5); %利用双线性变换实现频率响应S域到Z域的变换 z11=filter(num11,den11,s); sound(z11);
m11=fft(z11); %求滤波后的信号 figure; subplot(2,2,1); plot(abs(S),’g’);
title(‘滤波前信号的频谱’,’fontweight’,’bold’); axis([ 0 150000 0 4000]); grid;
subplot(2,2,2); plot(abs(m11),’r’);
title(‘滤波后信号的频谱’,’fontweight’,’bold’); axis([ 0 150000 0 4000]); grid;
subplot(2,2,3);
plot(s);
title(‘滤波前信号的波形’,’fontweight’,’bold’); axis([95000 100000 -1 1]); grid;
subplot(2,2,4); plot(z11);
title(‘滤波后的信号波形’,’fontweight’,’bold’); axis([95000 100000 -1 1]); grid; 程序结果如下图:
经过以上的加噪处理后,可在Matlab中用函数sound对声音进行回放。其调用格式:sound(y,Fs),sound(y)和sound(y,Fs,bits)。可以察觉滤波前后的声音有明显的变化。
5.创建GUI界面
总结
本次设计通过选择一个语音信号作为分析的对象,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿被噪声干扰的语音信号,并对其进行频谱分析;运用数字信号处理理论设计IIR数字滤波器, 并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号。最后,设计一个信号处理系统界面返回。
我们四个人共同完成这个课程设计,分工是很重要的,首先我们确定了大致的方向,我们要做低通,带通以及高通三种滤波器,此外还有界面的设计,程序的整合,以及课程报告的编写等方面的内容,我们的具体分工如下:
声音信号的读入以及ppt的制作:翁淦泉1062310209
低通,带通,高通滤波器的设计及相关程序的编写:冯竹青1062310202,贺静文1062301203
最后整合及界面的设计:王雅青1062310208 课程报告:贺静文
参考文献
1、张志涌 杨祖樱 MATLAB教程R2011a 北京航空航天大学出版社
2、高西全,丁玉美.数字信号处理(第三版)[M].西安:西安电子科技大学出版社,2008.8
3、蒋瑞艳 振动,噪声处理系统[J]. 大连理工大学学院学报(自然科学版) 2002 4、马超 高世伦 基于MATLAB的噪声信号采集与分析系统研究[J]. 华中科技大学能源与动力工程学院院报 2004.5
5、李正周.MATLAB数字信号处理与应用[M].北京:清华大学出版社,2008 6、高萍,祖静.基于MATLAB小波去噪技术浅析[J].科技信息(学术版),2006(11)1-3. 7、刘智 基于MATLAB的机械噪声分析与处理[J]. 华中江师范学院学报(自然科学版) 2010(4)
附录
附录(I) 设计IIR数字滤波器
%=========================IIR低通滤波器======================= Ft=8000; Fp=1000; Fs=1200; wp=2*pi*Fp/Ft; ws=2*pi*Fs/Ft; fp=2*Ft*tan(wp/2); fs=2*Fs*tan(wp/2);
[n11,wn11]=buttord(wp,ws,1,50,’s’); [b11,a11]=butter(n11,wn11,’s’); [num11,den11]=bilinear(b11,a11,0.5); [h,w]=freqz(num11,den11);
figure;
plot(w*8000*0.5/pi,abs(h));
legend(‘IIR低通滤波器’,’Location’,’NorthWest’); grid;
程序结果如下图:
%======================IIR高通滤波器======================== Ft=8000; Fp=4000; Fs=3500;
wp1=tan(pi*Fp/Ft); ws1=tan(pi*Fs/Ft); wp=1;
ws=wp1*wp/ws1;
[n13,wn13]=cheb1ord(wp,ws,1,50,’s’); [b13,a13]=cheby1(n13,1,wn13,’s’);