1、 1.绪论1.1数字滤波器数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。数字滤波器是指完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统,其输入是一组数字量,其输出是经过变换的另一组数字量。因此,数字滤波器本身既可以是用数字硬件装配成的一台完成给定运算的专用的数字计算机,也可以将所需要的运算编成程序,让通用计算机来执行。从数字滤波器的单位冲击响应来看,可以分为两大类:有限冲击响应(FIR)数字滤波
2、器和无限冲击响应(IIR)数字滤波器。滤波器按功能上分可以分为低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BSF)。在很多实际应用中如语音和音频信号处理中,数字滤波器来实现选频功能。因此,指标的形式应为频域中的幅度和相位响应。IIR滤波器的设计包括三个步骤:(1) 按照实际任务的要求,确定滤波器的性能指标。(2) 用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标,根据不同的要求可以用IIR系统函数去逼近。(3) 利用有限精度算法实现系统函数,包括结构选择、字长选择等。1.2 MATLABMATLAB是矩阵实验室(Matrix Laborator
3、y)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。MATLAB具有许多的优点比如:语言简洁紧凑,使用方便灵活,库函数极其丰富;MATLAB既具有结构化的控制语句(如fo
4、r循环,while循环,break语句和if语句),又有面向对象编程的特性;程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行,等等优点。MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。2.IIR滤波器的设计2.1信号的采集在matlab中x,fs,bits=wavread(.wav);常用于读取语音信号,采样值放在向量x中,fs表示采样频率,bits表示采样位数。Sound(x)
5、用于对声音的回放,向量x代表一个信号,即一个复杂的函数表达式。采样程序如下:fs=22050;x,fs,bits=wavread(gpl.wav);sound(x,fs,bits);2.2 语音信号分析用matlab绘制出语音信号的时域波形图和原始信号的FFT频谱图程序设计如下:x,fs,bits=wavread(D:MATLAB7.0work/gpl.wav);sound(x,fs,bits);y1=fft(x,1024);f=fs*(0:511)/1024;figure(1);plot(x); set(gcf,color,white);title(原始语音信号时域图);xlabel(时间
6、n);ylabel(音量 n);figure(2);plot(f,abs(y1(1:512);set(gcf,color,white);title(原始语音信号的频谱);xlabel(Hz);ylabel(幅度);grid on;生成图形如图2.1和2.2所示图2.1图2.22.3含噪语音信号的合成在matlab软件平台下,给原始的语音信号叠加上噪声噪声类型分为如下几种:(1)单频噪声;(2)高斯随机噪声。绘出加噪声后的语音时域和频谱图,在视觉上与原始信号图形对比,分析含噪语音信号频谱和时域波形的改变。程序代码如下:L=length(x);no=0.1*randn(L,1); x_z=x+no
7、;sound(x_z,fs);n=length(x); x_zp=fft(x_z,n); f=fs*(0:n/2-1)/n; figure(3);subplot(2,1,1);plot(x_z); set(gcf,color,white);title(加噪的语音信号波形图);xlabel(时间轴);ylabel(幅值 A);subplot(2,1,2);plot(f,abs(x_zp(1:n/2); set(gcf,color,white);title(加噪语音信号频谱图);xlabel(频率Hz);ylabel(频率幅值);加噪后所得的波形与频谱图如图2.3所示:图2.32.4 滤波器的设计
8、对加如随机噪声的语音信号进行滤波,用双线性变换法设计了巴特沃斯数字低通IIR滤波器对加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和加噪语音信号滤波前后的时域图和频谱图。程序代码如下:wp=0.1*pi;ws=0.4*pi;Rp=1;Rs=50;Fs=22050;Ts=1/Fs;wp1=2/Ts*tan(wp/2);ws1=2/Ts*tan(ws/2);N,Wn=buttord(wp1,ws1,Rp,Rs,s);Z,P,K=buttap(N);Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn);bz,az=bilinear(b,a,Fs);H,W=f
9、reqz(bz,az);%绘制频率响应曲线figure(4);plot(W*Fs/(2*pi),abs(H);set(gcf,color,white);grid;f1=filter(bz,az,x_z);figure(5);subplot(2,1,1);plot(x_z);set(gcf,color,white);title(滤波前时域波形);subplot(2,1,2);plot(f1);set(gcf,color,white);title(滤波后的时域波形);sound(f1,fs);F0=fft(f1,1024);f=fs*(0:511)/1024;figure(6);y2=fft(x_
10、z,1024);subplot(2,1,1);plot(f,abs(y2(1:512);set(gcf,color,white);title(滤波前频谱);xlabel(Hz);ylabel(fuzhi);subplot(2,1,2);F1=plot(f,abs(F0(1:512);set(gcf,color,white);title(滤波后的频谱);xlabel(Hz);ylabel(fuzhi);程序运行可以听到原始语音信号、加噪后的语音信号和滤波后的语音信号,对比滤波前面的语音效果,得到结果如图2.4、图2.5和图2.6所示:图2.4 频率响应曲线图2.5图2.63.总结经过一个星期的努力,程序终于可以正常运行。通过对matlab知识的再回顾,经过查找资料,论文初步完成了设计任务,由于本人能力有限,还存在许多不足的地方,没有为系统提出更好的解决方案。但是在这段时间学到了很多,对于我来说是一个非常宝贵的历练,理论的实际应用和实际的差距很大,没有掌握一定的理论基础就不可能完成这样的设计,只有真正的动手去做才能发现问题,亲自解决问题才能够把知识掌握的牢固。附录参考文献:1 赵力著,语音信号处理(第2版)M,机械工业出版社,2010.2 胡航著,语音信号处理(第四版)M,哈尔滨工业大学出版社,2009.3 张雄伟等著,现代语音处理技术及应用M,机械工业出版社,2009.12