语音信号去噪 ——数字滤波器的设计
作 者 指导老师
摘要:在现代各种通信系统中,由于自然界中的各种各样的复杂噪声不免会掺杂在其中,数字信号处理这门经典学科恰好可以解决这个问题,其中最通用的方法就是利用滤波器来滤除这些杂波噪声,FIR数字滤波器就是滤波器设计的根本局部。本论文研究的主要内容就是基于Matlab软件仿真设计一个数字滤波器,将掺杂在语音信号中的高频噪音消除,在此将分析消除高频噪音前后语音信号的时域及频域特性,比照分析即可验证滤波前后特性差异。在本课题中,将利用简单的窗函数法来设计FIR数字滤波器,通过Matlab仿真说明所设计滤波器的正确性。通过这次毕业设计,将会进一步理解语音信号原理分析及滤波处理,为更好的设计滤波器打好根底。 关键词:Matlab;窗函数法;FIR数字滤波器
Remove noise in the speech signal——the design of digital filter
Abstract: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 / 19
目 录
1 引 言 ................................................................................................................................................ 3
1.1 课题研究现状 ....................................................................................................................... 3 1.2 课题研究目的 ....................................................................................................................... 3 1.3 课题研究内容 ....................................................................................................................... 3 1.4 MATLAB软件设计平台简介 .............................................................................................. 4 2 原始语音信号采集与处理 .............................................................................................................. 5
2.1 课题设计步骤及流程图 ....................................................................................................... 5 2.2 语音信号处理 ....................................................................................................................... 5 语音信号的采集 .................................................................................................................... 5 语音信号的时域频谱分析 .................................................................................................... 6 语音信号加噪与频谱分析 .................................................................................................... 8
3 FIR数字滤波器的设计 .................................................................................................................. 10
3.1 数字滤波器根本概念 ......................................................................................................... 10 3.2 常用窗函数介绍 ................................................................................................................. 10 3.3 FIR数字滤波器概述 ........................................................................................................... 10 3.4 FIR滤波器的窗函数设计 ................................................................................................... 11 3.5 滤波器的编程实现 ............................................................................................................. 13 3.6 用滤波器对加噪语音信号进展滤波 ................................................................................. 14 3.7 回放语音信号 ..................................................................................................................... 16 4 结 论 .............................................................................................................................................. 17 致 谢 .................................................................................................................................................. 18 参考文献 ............................................................................................................................................ 19
1 引 言
1.1 课题研究现状
20世纪60年代中期数字信号处理领域形成的诸多富有理论性的的理论和算法,如快速傅立叶变换〔FFT〕以及各种数字滤波器等是语音信号数字处理的各项理论和技术根底。在70年中后期之后,线性预测技术〔LPC〕已经用于语音信号的信息压缩和特征提取,并已成为语音信号处理中非常重要的一个工具。80年代语音信号处理技术的重大开展是隐马尔可夫模型〔HMM〕描绘语音信号过程的产生过程。进入上世纪90年代以来,语音信号采集与分析技术在实际应用方面获得了许多打破性的研究进展。
近年来,随着科学技术的不断进步,人工神经网络(ANN)的研究获得了迅速开展,语音信号处理的各项科学研究课题是促进其开展的催生力,同时,它的许多成果也表达在有关语音信号处理的各项技术之中。 1.2 课题研究目的
语音是人类获取知识和各种各样信息的重要手段和最初来源,人类离不开自然界中各种不同的语音,但在获取语音的过程中,将不可防止的会受到外界环境的干扰和影响,如各种机器的轰鸣声或者自然界太多的电磁噪声干扰等这些不可防止的有害噪声信号都会附加掺杂在语音信号中,这样获取的语音信号将不再是单纯的语音,掺杂的噪声不但降低了语音质量和语音的可懂度,严重时将导致不可预知的不良效果。
语音信号处理的好坏将影响并导致语音信号的好坏,只有通过将这些语音信号进展一系列的的数字处理,才能将那些非必要的噪声杂波妥善滤除,得到纯洁的单纯的语音信号。如今社会衍生了很多现代的语音通信方式,手机通话、QQ或MSN等这些语音聊天软件以及语音小说等,涉及语音的方方面面已经存在于我们生活中的大局部,因此语音信号去噪处理是具有现实意义的研究课程。 1.3 课题研究内容
1.用MATLAB程序对原始语音信号进展采样,并绘制出采样后语言信号时域波形和频谱图,并针对此图分析语音信号特点。
2.将干扰噪声参加到已经获取的语音信号中,然后进展频谱分析,并比照未参加噪声的信号,分析差异。
3.设计FIR数字滤波器,并对被噪声污染的语音信号进展滤波,画出滤波前后信号的时域
3 / 19
和频谱,对滤波前后有噪音与无噪音的语音信号进展比拟,分析信号的变化,从而验证所设计滤波器的滤波效果。 4.回放语音信号。
1.4 MATLAB软件设计平台简介
Matlab是MATrix和LABoratory的缩写,是由Mathworks公司开发的一套用于科学工程计算的可视化高性能软件,是一种交互式的以矩阵为根本数据构造的系统,应用广泛。
MATLAB的主要特点如下:
(1) 程序的可移植性良好应用于其他程序。
(2) 程序限制广泛,程序设计自由。有大量已经系统定义的函数可直接应用,并且可以用户自定义函数。
(3) 语言简洁,使用灵敏方便,库函数相当丰富。
(4) 源程序向群众开放。用户可灵敏的对源文件进展修改以及参加自己的设计语音构成新的工具箱。
(5) 最后MATLAB的一个重要特点是功能强大的工具箱。MATLAB包含两个重要的局部:核心局部和各种可选的工具箱。
4 / 19
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 中。
5 / 19
图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所示。从图中可以看出语音信号有两个特点:在时域内语音信号随着时间的延续而缓慢变化,但在一较短时间内,语音信号根本保持稳定;在频域内语音信号的频谱量主要集中在300~3400Hz的范围内,利用这个特点,可以利用一个带通滤波器将此范围内的语音信号频率分量取出,然后按8000Hz的采样频率对语音信号进展采样,就可以获得离散的语音信号。
6 / 19
图2.3 原始信号时域波形
图2.4 原始信号频谱
7 / 19
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)
8 / 19
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的位置多出一个高频脉冲成分,表如今回放语音上能听到很刺耳很不舒适的噪音,原有信号听着比拟模糊。
9 / 19
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转换后所有的极点都在单位圆内
10 / 19
3.4 FIR滤波器的窗函数设计
FIR滤波器设计问题在于寻求一系统函数Hz,使其频率响应Hejw逼近滤波器要求的理想频率响应Hdejw,其对应的单位脉冲响应为hdn。
用窗函数设计FIR滤波器的的设计思想:从时域出发,设计hn逼近理想hdn。设理想滤波器Hdejw的单位脉冲响应为hdn。例如低通线性相位FIR滤波器的理想频率响应与单位脉冲响应分别如下:
Hdejwhnednjw
1hdn2Hdejwejwndw
hdn一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。要想得到一个因果的有限长的滤波器hn,最直接的方法是截断hnhdnwn,即截取为有限长的因果序列,并用适宜的窗函数进展加权作为FIR滤波器的单位脉冲响应。按照线性相位滤波器的要求,hn必须的偶对称的。对称中心应该等于滤波器的时延常数,即
h(n)hd(n)(n)N1 2下面着重介绍用窗函数法设计FIR滤波器的步骤如下:
(1) 根据对阻带衰减及过渡带的指标要求,选择串窗数类型〔矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等〕,并估计窗口长度N。先按照阻带衰减选择窗函数类型。原那么是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。然后根据过渡带宽度估计窗口长度N,待求滤波器的过渡带宽度Bt近似等于窗函数主瓣宽度,且近似于窗口长度N成反比,N=A/Bt,A取决于窗口类型。
(2) 构造希望逼近的频率响应函数Hd(ejw) 。
Hd(e)HdgwejjwN12
11 / 19
所谓的“标准窗函数法〞,就是选择Hd(ejw)为线性相位理想滤波器,如本论文的低通滤
1c波器,该Hdg(w)应满足:Hdg()
0c(3) 计算hd(n)。假如给出待求滤波器的截止频率响应函数为Hd(ejw),那么单位脉冲响应用下式求出:
1hdn2(4) 加窗得到设计结果:
Hdejwejwndw
hnhdnwn,验证技术指标是否满足设计要求。
针对该课题用窗函数法设计线性相位FIR数字滤波器的参数如下:
通带截止频率
wc=0.2π
过渡带宽度w<0.4 阻带衰减As>40 dB
详细计算如下:
(1) 由给定的指标确定窗函数和长度N
由于阻带衰减As>40dB,汉明窗和汉宁窗都满足要求,假设再考虑从滤波器节数最小的原那么出发,这里选用汉宁窗。
w0.4,N820,也可取N=21。 n)]R21(n)16
(n)0.5[1cos((2) 确定时延值 (N1)/210。 (3) 求理想的单位脉冲响应。
1hdn2
wcwcejejnwsin0.2n10dn10
(4) 求滤波器的单位取样响应h(n)。
hnhdnn
sin0.2n10n0.50.5cosR21nn1010
12 / 19
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 低通滤波器的归一化频率
13 / 19
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;
14 / 19
图3.2 频率特性曲线
图3.3 滤波前后语音信号频谱的比拟
15 / 19
图3.4 滤波前后的信号波形比拟
由图3.2频率特性曲线可得知,该低通滤波器滤除1200Hz以上的高频信号,保存0—1200Hz以内的低频语音信号,符合设计滤除高频噪音保存低频原始语音信号的特点。
由上图3.3可知,掺有高频噪音的信号经过所设计的低通滤波器之后,保存了原始的低频语音信号,滤除了掺在其中的高频信号,使语音信号听着没有那么的锋利刺耳了,这说明已经到达了滤除高频噪音信号的目的。
分析图3.4滤波前后的信号波形比拟得知,滤波前后语音信号的波形发生了明显改变,滤波前后的信号密度明显减小,这是滤除了高频噪音保存了低频语音信号的结果。 3.7 回放语音信号
语音信号经过FIR滤波器的滤除噪声的处理,在Matlab中,函数sound可以对声音进展回放。其调用格式:
sound (x,fs,bits);
可以听出来滤波前后的声音所发生的变化,而且声音变得没有加噪时那么刺耳了,比原始语音更加地平滑。用汉宁窗设计FIR滤波器滤掉了在语音中参加的高频的噪声,而且也把原始语音的很小的一局部也滤掉了,余下的语音信号全都是低频语音信号,所以回放语音的时候听起来比以前的更加平滑,说明设计的低通滤波器是成功的。
16 / 19
4 结 论
人们在获取语音信号的过程中,不可防止的会受到外界环境的干扰和影响,这些干扰和影响不但降低了语音质量和语音的可懂度,严重时将导致不可预知的不良效果。当这些语音信号经过数字处理,用滤波器把噪声杂波滤除,便得到纯洁的语音信号。
该毕业设计的目的就是设计一个数字滤波器过滤被干扰的语音信号,论文的主要工作有:录制一段原始语音信号,然后利用Matlab程序函数产生一定的噪声信号,使语音信号显得更加浑浊,调用MATLAB程序中sound函数功能试听一下语音信号的变化,会发现声音比拟刺耳锋利,同时通过信号的波形与频谱图可以明显看出参加噪声前后的变化情况,然后把这段加噪后的语音信号通过设计的低通滤波器进展滤波,通过程序调用显示其滤波后的波形可以明显的看到语音信号加噪前后的整个变化过程。
通过这次毕业设计,我对语音信号的滤波功能有了全面的认识,对数字信号处理的知识点有了更深层次的理解,进一步理解信号的产生、频谱分析的方法,学会了分析滤波器的优劣和性能,进步了分析问题和解决问题的才能。
17 / 19
致 谢
短暂而充实的大学四年光阴即将接近尾声,而该毕业论文的设计是大学最后一个学期的学习目的和任务,在论文完成之际,特向我的指导老师吴仲华致以诚挚的谢意。
吴老师为人诚恳,待人和蔼可亲,这种可贵的待人精神为我的毕业论文的设计营造了良好的气氛。在本次设计中,吴老师给予我很大的关心和帮助,特别是在论文的选题、前期课题指导及各段落内容衔接等各环节都细心的指导和讲解,由于我在以前的课程学习中没有扎实的数字信号处理根底及Matlab程序设计经历,吴老师为我提供了诸多方面的资料,让我在课题设计中更加得心应手,最终才能圆满的完成毕业论文的设计。
在这次毕业论文设计中,使我深入的体会到只有理论知识还是不够的,要能在原有的理论根底上加以动手理论,使理论和理论很好的结合起来,这样才能对该知识点有更加深入的认识,希望这种经历体会可以为我以后的学习工作中不断成长不断进步。 最后祝愿我所有的老师和同学工作顺利,阖家欢乐,一生平安。
18 / 19
参考文献
[1] 高西全,丁玉美. 数字信号处理(第三版). 西安: 西安电子科大出版社, 2021 [2] 杨述斌,李永全.数字信号处理理论教程. 武汉: 华中科技大学出版社, 2007 [3] 丁玉美,高西全. 数字信号处理学习指导(第三版). 西安: 西电出版社, 2021 [4] 陈怀琛,数字信号处理教程MATLAB释疑与实现. 北京: 电子工业出版社, 2004 [5] 刘顺兰,吴杰. 数字信号处理. 西安: 西安电子科技大学出版社, 2003 [6] 刘益成,孙祥娥. 数字信号处理. 北京: 电子工业出版社, 2004
[7] Harry Y-F Lam.模拟和数字滤波器设计与实现. 北京:人民邮电出版社, 1985 [8] 孙洪. 数字信号处理实验指导书(MATLAB版). 北京: 清华大学出版社, 2003
19 / 19
因篇幅问题不能全部显示,请点此查看更多更全内容