资源描述
语音信号去噪 数字滤波器的设计作 者指导教师摘要:在现代各种通信系统中,由于自然界中的各种各样的复杂噪声不免会掺杂在其中,数字信号处理这门经典学科恰好能够解决这个问题,其中最通用的方法就是利用滤波器来滤除这些杂波噪声,FIR数字滤波器就是滤波器设计的基本部分。本论文研究的主要内容就是基于Matlab软件仿真设计一个数字滤波器,将掺杂在语音信号中的高频噪音消除,在此将分析消除高频噪音前后语音信号的时域及频域特性,对比分析即可验证滤波前后特性差别。在本课题中,将利用简单的窗函数法来设计FIR数字滤波器,通过Matlab仿真说明所设计滤波器的正确性。通过这次毕业设计,将会进一步理解语音信号原理分析及滤波处理,为更好的设计滤波器打好基础。关键词:Matlab;窗函数法;FIR数字滤波器Remove noise in the speech signalthe design of digital filterAbstract:In modern communication systems, a variety of complex noise may mix in the nature of sounds. The classic disciplines of the digital signal processing can solve this problem, one of the most common method is to use a filter to filter those clutter noise. FIR digital filter is the basic part of filter design. The main research content of this paper is based on Matlab software simulation to design a digital filter, in which to cancel the high frequency noise of the speech signal, then it will eliminate the high frequency noise and the speech signals from time domain and frequency domain characteristics in this analysis before and after, and analysis the differences test the filtering characteristics. In this issue, using a simple window function method to design a FIR digital filter, Matlab simulation shows the correct of the designed filter. Through the design of this graduation design, we will understand the principle of speech signal analysis and filtering, and lay the foundation for the filter design.Key words: Matlab; window function method; FIR digital filter 目 录1 引 言31.1 课题研究现状31.2 课题研究目的31.3 课题研究内容31.4 MATLAB软件设计平台简介42 原始语音信号采集与处理52.1 课题设计步骤及流程图52.2 语音信号处理52.2.1 语音信号的采集52.2.2 语音信号的时域频谱分析62.2.3 语音信号加噪与频谱分析83 FIR数字滤波器的设计103.1 数字滤波器基本概念103.2 常用窗函数介绍103.3 FIR数字滤波器概述103.4 FIR滤波器的窗函数设计113.5 滤波器的编程实现133.6 用滤波器对加噪语音信号进行滤波143.7 回放语音信号164 结 论17致 谢18参考文献191 引 言1.1 课题研究现状20世纪60年代中期数字信号处理领域形成的诸多富有实践性的的理论和算法,如快速傅立叶变换(FFT)以及各种数字滤波器等是语音信号数字处理的各项理论和技术基础。在70年中后期之后,线性预测技术(LPC)已经用于语音信号的信息压缩和特征提取,并已成为语音信号处理中非常重要的一个工具。80年代语音信号处理技术的重大发展是隐马尔可夫模型(HMM)描述语音信号过程的产生过程。进入上世纪90年代以来,语音信号采集与分析技术在实际应用方面取得了许多突破性的研究进展。近年来,随着科学技术的不断进步,人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项科学研究课题是促进其发展的催生力,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。1.2 课题研究目的语音是人类获取知识和各种各样信息的重要手段和最初来源,人类离不开自然界中各种不同的语音,但在获取语音的过程中,将不可避免的会受到外界环境的干扰和影响,如各种机器的轰鸣声或者自然界太多的电磁噪声干扰等这些不可避免的有害噪声信号都会附加掺杂在语音信号中,这样获取的语音信号将不再是单纯的语音,掺杂的噪声不但降低了语音质量和语音的可懂度,严重时将导致不可预知的不良效果。语音信号处理的好坏将影响并导致语音信号的好坏,只有通过将这些语音信号进行一系列的的数字处理,才能将那些非必要的噪声杂波妥善滤除,得到纯净的单纯的语音信号。现在社会衍生了很多现代的语音通信方式,手机通话、QQ或MSN等这些语音聊天软件以及语音小说等,涉及语音的方方面面已经存在于我们生活中的大部分,因此语音信号去噪处理是具有现实意义的研究课程。1.3 课题研究内容1.用MATLAB程序对原始语音信号进行采样,并绘制出采样后语言信号时域波形和频谱图,并针对此图分析语音信号特点。2.将干扰噪声加入到已经获取的语音信号中,然后进行频谱分析,并对比未加入噪声的信号,分析差异。3.设计FIR数字滤波器,并对被噪声污染的语音信号进行滤波,画出滤波前后信号的时域和频谱,对滤波前后有噪音与无噪音的语音信号进行比较,分析信号的变化,从而验证所设计滤波器的滤波效果。4.回放语音信号。1.4 MATLAB软件设计平台简介Matlab是MATrix和LABoratory的缩写,是由Mathworks公司开发的一套用于科学工程计算的可视化高性能软件,是一种交互式的以矩阵为基本数据结构的系统,应用广泛。MATLAB的主要特点如下:(1) 程序的可移植性良好应用于其他程序。(2) 程序限制宽泛,程序设计自由。有大量已经系统定义的函数可直接应用,并且能够用户自定义函数。(3) 语言简洁,使用灵活方便,库函数相当丰富。(4) 源程序向大众开放。用户可灵活的对源文件进行修改以及加入自己的设计语音构成新的工具箱。(5) 最后MATLAB的一个重要特点是功能强大的工具箱。MATLAB包含两个重要的部分:核心部分和各种可选的工具箱。2 原始语音信号采集与处理2.1 课题设计步骤及流程图本课题设计主要是针对一段原始语音信号,加入设计噪声后,用窗函数法设计出的FIR滤波器对加入噪声后的语音信号进行滤波去噪处理,并且分析对比前后时域和频域波形。课题的设计流程图如下图2.1所示。在Windows下录制一段格式为.wav的语音加入高频噪声信号对语音信号进行频谱分析,绘制出时域和频域图 用汉宁窗设计FIR滤波器画出频率响应函数用FIR滤波器对语音信号进行滤波画出语音信号滤波前后频谱波形并进行分析开始结束图2.1 课题设计流程图2.2 语音信号处理2.2.1 语音信号的采集将话筒输入计算机的语音输入插口上,启动录音机,要求为8000HZ,8位单声道的音频格式,如下图2.2所示,按下录音按钮,接着对话筒一段话,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“1”保存入C: MATLAB work 中。 图2.2 语音信号的采集2.2.2 语音信号的时域频谱分析Matlab软件平台下,利用wavread函数对语音信号进行采样,采集出原始信号波形与频谱,y,fs,bits=wavread(Blip,N1 N2),用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。N1 N2表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。其程序如下:y,Fs,bits=wavread(1.wav); y=y(:,1); sigLength=length(y); Y = fft(y,sigLength); Pyy = Y.* conj(Y) / sigLength; halflength=floor(sigLength/2); f=Fs*(0:halflength)/sigLength; figure;plot(f,Pyy(1:halflength+1);xlabel(Frequency(Hz); t=(0:sigLength-1)/Fs; figure;plot(t,y);xlabel(Time(s);得到原始语音信号时域波形如下图2.3所示,频域幅度谱如下图2.4所示。从图中可以看出语音信号有两个特点:在时域内语音信号随着时间的延续而缓慢变化,但在一较短时间内,语音信号基本保持稳定;在频域内语音信号的频谱量主要集中在3003400Hz的范围内,利用这个特点,可以利用一个带通滤波器将此范围内的语音信号频率分量取出,然后按8000Hz的采样频率对语音信号进行采样,就可以取得离散的语音信号。图2.3 原始信号时域波形图2.4 原始信号频谱2.2.3 语音信号加噪与频谱分析利用MATLAB程序产生3.8kHz的余弦信号噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。其主要程序如下:fs=8000; x1=wavread(1.wav);t=(0:length(x1)-1)/8000;f=fs*(0:1023)/2048;Au=0.05;d=Au*cos(2*pi*3800*t); %噪声为3.8kHz的余弦信号x2=x1+d;y1=fft(x1,2048); y2=fft(x2,2048);figure(1)运行程序后得到加噪后的语言信号波形如下图2.5所示。图2.5 加噪后的语音信号从上图可以看出,加入3.8KHz的噪声信号后,在时域图上与原有信号的时域图有明显差异,在幅度“0”位置处附近多出了高频成分,使加噪后的语音信号显得更加紧凑。plot(t,x2)xlabel(time(s);ylabel(幅度);figure(2)subplot(2,1,1);plot(f,abs(y1(1:1024);xlabel(Hz);ylabel(幅度);subplot(2,1,2);plot(f,abs(y2(1:1024);xlabel(Hz);ylabel(幅度);sound(x2,fs,bits); 运行程序后得到原始语音信号和加噪后的语言信号的频谱如下图2.6所示。图2.6 原始语音信号频谱与加噪后的语音信号频谱比较从上图对比可以看出,加噪后的语音信号表现在频谱图上在3.8KHz的位置多出一个高频脉冲成分,表现在回放语音上能听到很刺耳很不舒适的噪音,原有信号听着比较模糊。3 FIR数字滤波器的设计3.1 数字滤波器基本概念所谓数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的一种数字滤波形式。因此,数字滤波的概念个模拟滤波的相同,只是信号的形式和实现滤波方法不同。由于数字滤波通过数值运算实现滤波,所以其处理精度高、稳定、体积小,重量轻、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。3.2 常用窗函数介绍常用的窗函数有矩形窗(Rectangle Window)、三角窗(Bartlett Windows)、汉宁窗(Hanning),又称为升余弦窗、海明窗(Hamming),又称为改进的升余弦窗,除了以上几种常用窗函数以外,尚有布拉克曼(Blackman)窗、凯塞(kaiser)窗等。对于选择何种窗函数,应充分考虑被处理信号的性质与处理要求等。如果仅要求准确分辨出主瓣频率,而不考虑这种幅值精度,则可选用主瓣宽度较窄从而便于分辨的矩形窗,例如探测物体的自然震动频率等;如果分析的信号是窄带信号,而且具有较强的干扰噪声信号出现的话,则应当选用旁瓣幅度较小的窗函数,如汉宁窗、三角窗等。3.3 FIR数字滤波器概述FIR(Finite Impulse Response)滤波器又叫有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。这类滤波器对于脉冲输入信号的响应最终趋向于0,因此而得名。有限脉冲响应滤波器的优点:(1)脉冲响应为有限长:造成当输入数位信号为有限长的时候,输出数位信号亦为有限序列长度。(2)比无限脉冲响应滤波器较容易实现到最佳状态。(3)线性相位造成h(n)是偶对称或奇对称且有限长。(4)肯定是稳定的:因为Z转换后所有的极点都在单位圆内3.4 FIR滤波器的窗函数设计FIR滤波器设计问题在于寻求一系统函数,使其频率响应逼近滤波器要求的理想频率响应,其对应的单位脉冲响应为。用窗函数设计FIR滤波器的的设计思想:从时域出发,设计逼近理想。设理想滤波器的单位脉冲响应为。例如低通线性相位FIR滤波器的理想频率响应与单位脉冲响应分别如下:一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器,最直接的方法是截断,即截取为有限长的因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。按照线性相位滤波器的要求,必须的偶对称的。对称中心应该等于滤波器的时延常数,即下面着重介绍用窗函数法设计FIR滤波器的步骤如下:(1) 根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。然后根据过渡带宽度估计窗口长度N,待求滤波器的过渡带宽度Bt近似等于窗函数主瓣宽度,且近似于窗口长度N成反比,N=A/Bt,A取决于窗口类型。(2) 构造希望逼近的频率响应函数Hd(ejw) 。所谓的“标准窗函数法”,就是选择Hd(ejw)为线性相位理想滤波器,如本论文的低通滤波器,该Hdg(w)应满足:(3) 计算hd(n)。如果给出待求滤波器的截止频率响应函数为Hd(ejw),那么单位脉冲响应用下式求出:(4) 加窗得到设计结果:,验证技术指标是否满足设计要求。针对该课题用窗函数法设计线性相位FIR数字滤波器的参数如下:通带截止频率=0.2过渡带宽度40 dB具体计算如下:(1) 由给定的指标确定窗函数和长度N由于阻带衰减As40dB,汉明窗和汉宁窗都满足要求,若再考虑从滤波器节数最小的原则出发,这里选用汉宁窗。也可取N=21。(2) 确定时延值 。(3) 求理想的单位脉冲响应。 (4) 求滤波器的单位取样响应h(n)。 3.5 滤波器的编程实现按此要求设计的FIR数字低通滤波器,用MATLAB的程序实现如下:deltw = 0.4 * pi; Wc = 0.2 * pi; As = 40;N=ceil( 8 * pi/deltw)+1;win=hanning(N);h=fir1(N-1,Wc/pi,win);omega=linspace(0,pi,512);mag=freqz(h,1,omega);magdb=20*log10(abs(mag);plot(omega/pi,magdb);axis(0 1-100 0);grid;xlabel(归一化频率);ylabel(幅度/dB);此低通滤波器图像如下图3.1所示。图3.1 低通滤波器的归一化频率3.6 用滤波器对加噪语音信号进行滤波上一节利用窗函数法按照论文要求设计了FIR低通滤波器并绘图,观察所设计的滤波器是否能够对采集的一部分语音信号进行相关处理,并将滤波前后的时域波形进行相比较,且对其快速傅里叶变换,即X=fft(signal),其目的是对比前后的频域频谱波形,分析所设计的滤波器能否达到设计要求。在Matlab程序设计中,FIR滤波器则是利用函数fftfilt对语音信号进行滤波。程序如下:y,fs,nbits=wavread(1.wav); N=length(y) Y=fft(y,N); sound(y); figure(4); plot(y); figure(5);plot(abs(Y); Fp=1200; Fs=1100; Ft=8000; As=20; Ap=1; wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;fp=2*Ft*tan(wp/2);fs=2*Ft*tan(ws/2);n,wn=buttord(wp,ws,Ap,As, s); b,a=butter(n,wn, s); num,den=bilinear(b,a,1); h,w=freqz(num,den); figure(2)d=Au*cos(2*pi*3800*t);x2=x1+d;y1=fft(x1,2048); y2=fft(x2,2048);figure(3)plot(w*8000*0.5/pi,abs(h);z=filter(num,den,y);sound(z);m=z; figure(1)subplot(2,2,3);plot(abs(m), r);grid;subplot(2,2,4);plot(z, b);grid;subplot(2,2,2);plot(y,b);grid;subplot(2,2,1);plot(abs(Y),r);grid;图3.2 频率特性曲线图3.3 滤波前后语音信号频谱的比较图3.4 滤波前后的信号波形比较由图3.2频率特性曲线可得知,该低通滤波器滤除1200Hz以上的高频信号,保留01200Hz以内的低频语音信号,符合设计滤除高频噪音保留低频原始语音信号的特点。由上图3.3可知,掺有高频噪音的信号经过所设计的低通滤波器之后,保留了原始的低频语音信号,滤除了掺在其中的高频信号,使语音信号听着没有那么的尖锐刺耳了,这说明已经达到了滤除高频噪音信号的目标。分析图3.4滤波前后的信号波形比较得知,滤波前后语音信号的波形发生了明显改变,滤波前后的信号密度明显减小,这是滤除了高频噪音保留了低频语音信号的结果。3.7 回放语音信号语音信号经过FIR滤波器的滤除噪声的处理,在Matlab中,函数sound可以对声音进行回放。其调用格式:sound (x,fs,bits);可以听出来滤波前后的声音所发生的变化,而且声音变得没有加噪时那么刺耳了,比原始语音更加地平滑。用汉宁窗设计FIR滤波器滤掉了在语音中加入的高频的噪声,而且也把原始语音的很小的一部分也滤掉了,余下的语音信号全都是低频语音信号,所以回放语音的时候听起来比以前的更加平滑,说明设计的低通滤波器是成功的。4 结 论人们在获取语音信号的过程中,不可避免的会受到外界环境的干扰和影响,这些干扰和影响不但降低了语音质量和语音的可懂度,严重时将导致不可预知的不良效果。当这些语音信号经过数字处理,用滤波器把噪声杂波滤除,便得到纯净的语音信号。该毕业设计的目的就是设计一个数字滤波器过滤被干扰的语音信号,论文的主要工作有:录制一段原始语音信号,然后利用Matlab程序函数产生一定的噪声信号,使语音信号显得更加浑浊,调用MATLAB程序中sound函数功能试听一下语音信号的变化,会发现声音比较刺耳尖锐,同时通过信号的波形与频谱图可以明显看出加入噪声前后的变化情况,然后把这段加噪后的语音信号通过设计的低通滤波器进行滤波,通过程序调用显示其滤波后的波形可以明显的看到语音信号加噪前后的整个变化过程。通过这次毕业设计,我对语音信号的滤波功能有了全面的认识,对数字信号处理的知识点有了更深层次的理解,进一步了解信号的产生、频谱分析的方法,学会了分析滤波器的优劣和性能,提高了分析问题和解决问题的能力。致 谢短暂而充实的大学四年时光即将接近尾声,而该毕业论文的设计是大学最后一个学期的学习目标和任务,在论文完成之际,特向我的指导老师吴仲华致以诚挚的谢意。吴老师为人诚恳,待人和蔼可亲,这种可贵的待人精神为我的毕业论文的设计营造了良好的氛围。在本次设计中,吴老师给予我很大的关怀和帮助,特别是在论文的选题、前期课题指导及各段落内容衔接等各环节都细心的指导和讲解,由于我在以前的课程学习中没有扎实的数字信号处理基础及Matlab程序设计经验,吴老师为我提供了诸多方面的资料,让我在课题设计中更加得心应手,最终才能圆满的完成毕业论文的设计。在这次毕业论文设计中,使我深刻的体会到只有理论知识还是不够的,要能在原有的理论基础上加以动手实践,使理论和实践很好的结合起来,这样才能对该知识点有更加深刻的认识,希望这种经验体会能够为我以后的学习工作中不断成长不断进步。 最后祝愿我所有的老师和同学工作顺利,阖家欢乐,一生平安。参考文献1 高西全,丁玉美. 数字信号处理(第三版). 西安: 西安电子科大出版社, 20082 杨述斌,李永全.数字信号处理实践教程. 武汉: 华中科技大学出版社, 20073 丁玉美,高西全. 数字信号处理学习指导(第三版). 西安: 西电出版社, 20094 陈怀琛,数字信号处理教程-MATLAB释疑与实现. 北京: 电子工业出版社, 20045 刘顺兰,吴杰. 数字信号处理. 西安: 西安电子科技大学出版社, 20036 刘益成,孙祥娥. 数字信号处理. 北京: 电子工业出版社, 2004 7 Harry Y-F Lam.模拟和数字滤波器设计与实现. 北京:人民邮电出版社, 19858 孙洪. 数字信号处理实验指导书(MATLAB版). 北京: 清华大学出版社, 2003
展开阅读全文