基于MATLAB GUI的FIR数字滤波器语音信号去噪处理*
2016-11-30冯浩
冯 浩
(宿州学院机械与电子工程学院,安徽 宿州 234000)
基于MATLAB GUI的FIR数字滤波器语音信号去噪处理*
冯 浩
(宿州学院机械与电子工程学院,安徽 宿州 234000)
结合数字滤波器的理论基础和设计方法,在MATLAB程序语言环境下,设计出有限长单位脉冲响应(FIR)数字滤波器,同时利用GUI界面设计FIR数字滤波器人机交互平台,该系统平台界面直观、操作简单且功能齐全,可实现对加噪语音信号的去噪滤波功能.平台主要包括语音信号、加噪信号、FIR数字滤波器设计和去噪信号四个模块,用户可根据读入的语音信号及噪声信号特点调整滤波器技术指标,实现滤波器的优化设计,最终达到FIR数字滤波器对语音信号的去噪处理效果.
MATALB GUI;FIR数字滤波器;语音信号;去噪
作为数字信号处理的重要组成部分,数字滤波器在语音、图像、军事、地震等众多领域中得到了极为广泛的应用,其主要特点是通过一定的数值运算处理改变输入信号所含频率成分的相对比例,或者滤除输入信号中的某些频率成分[1].
在对数字信号处理技术探究领域,核心发展技术就是语音信号的采集、分析,在科学技术不断发展过程中形成的技术处理方式不仅显著提升了语音信号的处理效率,同时在不同领域还有着广泛的应用域.当前众多学者的研究热点课题就是语音信号的处理、分析,由于通信技术的日益更新,语音采集器及分析设施逐渐向着智能化、数字化及功能多样化的方向发展,体积越来越小,显著提升了语音信号的分析效率.
就目前市场发展状况来看,语音分析系统普遍存在操作相对繁琐、购买费用高的现象,无法在特定项目的测量及分析领域发挥良好的效用.鉴于此,根据数字滤波器的单位脉冲响应函数特点,可将数字滤波器分为无限长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器.IIR数字滤波器主要是利用模拟滤波器的成熟理论进行系统设计,但相位非线性的特点也限制了其滤波功能;而FIR数字滤波器很容易实现严格意义上的线性相位,其幅度特性类型多样且系统稳定,由于其单位脉冲响应为有限长序列,可利用FFT算法实现信号滤波处理,从而减少运算量,提高运算效率[2].
目前,较为常用的FIR数字滤波器设计方法有三种:窗函数设计法(时域设计法)、频率采样设计法(频域设计法)以及等波纹(Chebyshev)最佳逼近法(频域设计法).本文基于MATLAB GUI平台,利用窗函数设计法设计FIR数字滤波器人机交互系统,该系统平台可实现对加噪语音信号的滤波处理.
1 FIR数字滤波器设计原理
1.1 FIR数字滤波器设计基础[3]
FIR数字滤波器的单位脉冲响应h(n)为有限长序列,长度为N(0≤n≤N-1),其系统函数可表示为:
由上式可知,该滤波器系统在z=0处有N-1阶极点(系统稳定),在z平面有N-1个零点.若单位脉冲响应h(n)满足偶对称或奇对称,即h(n)=±h(N-1-n);或者其相位函数满足θ(ω)=-τω或θ(ω)=θ0-τω(τ,θ0均为常数),由此可确定FIR数字滤波器的严格线性相位.
1.2 窗函数设计法的设计方案
凯塞窗(Kaiser Window)、三角窗(Triangular Window )、汉宁窗(Hanging Window)及矩形窗(Rectangle Window )等窗函数能够借助Matlab 直接生成,利用对系统函数进行调取的方式,能够有效的加载窗.窗函数的调取、利用方式为:
调用窗函数的过程中,在应用格式中,利用函数名长度(n)可以对矩形窗w进行生成,即函数名(n)=w.通常心电信号频率为0.05 Hz到100 Hz[6],电信号强度极弱,在存在机体器官信号干扰的情况下,心电信号会出现失真的状况.再加上工频信号(50 Hz)及电子器件噪声的影响,应做好干扰噪声的消除工作.在对低通滤波器进行设计的过程中,包括最小阻带衰减(As)、阻带截止频率(ωs)及通带截止频率(ωp)三项指标,取值分别为50 dB以上(包括50 dB)、 0.3π和0.2π.由此能够计算出过渡带宽(tr_width )的值,即为阻带截止频率与通带截止频率之差,而列长(N)为10 π/ tr_width.对窗函数进行选择时,通常选用较宽的主瓣,以此来提高阻带的衰减,提升通带平稳程度.基于阻带最小衰减指标,需要对列长数值进行合理的增大,并对过渡带进行窄化处理[7].鉴于窗函数的显著特征为最小阻带衰减,因此仅凯塞窗、海明窗的衰减在50 dB以上.但在使用过程中,一般折中利用窗函数,针对凯塞窗而言,需要对其参数值进行改变,并合理设定主、旁瓣衰减,从而增强滤波器的灵活性及适应性.其窗函数形状(窗口长度)可随参数进行任意调节,故其适应性较强,本文主要利用Kaiser窗函数进行FIR数字滤波器设计.
窗函数设计法设计FIR数字滤波器的主要思路是[4]:
1)根据实际任务要求确定滤波器的性能指标,包括通带(上下)截止频率、阻带(上下)截止频率、通带最大衰减以及阻带最小衰减;
2)由阻带最小衰减确定窗函数ω(n)的形状,结合过渡带宽度确定窗口长度N;
3)结合窗函数ω(n)以及窗口长度N计算单位脉冲响应h(n);
4)验证所求h(n)是否满足实际任务要求.
2 系统界面设计
基于MATLAB GUI的FIR数字滤波器去噪处理系统平台主要是利用Kaiser窗函数设计法实现对FIR数字滤波器的设计,从而完成对加噪语音信号的噪声滤除处理.
对Kaiser窗进行使用时的代码为:
Fs =100 ;
fc1=10 ;
fc2=20 ;
[n,Wn,beta,f type] = kaiserord([7 13 17 23],[0 1 0],[0.010.010.01],100);
%n=38,beta=3.4
w1=2×fc1/ fs;w2=2×fc2/ fs;
window =kaiser(n+1,beta); %运用凯塞窗函数
b =fir1(n,[w1w2],window); %选取加窗设计函数fir 1,该函数为标准频率响应
freqz(b,1,512);
t =(0∶100)/ Fs;
s = sin(2×pi×t×5)+sin(2×pi×t×30)+sin(2×pi×t×15); %混和正弦波信号
sf = filter(b,1,s); %滤波处理信号s
程序运行结果详见图1和图2 .
图1 滤波器幅频特性相频特性
图2 滤波前后的波形
该系统平台主要分为语音信号模块、加噪信号模块、FIR数字滤波器设计模块和去噪信号模块共四部分.该平台可对读入及处理的信号进行播放,同时显示各信号的时域波形及其频率曲线图,以便于对语音信号滤波前后时频特性进行分析;在此基础上可对FIR数字滤波器的各个参数进行设置选择,以达到实际去噪处理效果[5].
2.1 语音信号模块和加噪信号模块设计
语音信号模块包括语音信号的读取和播放,同时显示其时域波形和频谱图.主要通过PushButton按钮控件实现对语音信号的读取和时域波形显示,其Callback回调函数主要包括[y,fs,nbits]=wavread()以及axes(handles.Tag)坐标轴显示函数.
加噪信号模块包括加噪语音信号波形读入、加噪信号播放以及信号频谱曲线显示.各个按钮的Callback回调函数与语音信号模块类似,实现函数相同.加噪信号主要由采集到的语音信号和噪声信号叠加产生.噪声信号是由randn()函数产生的与语音信号长度相等的高斯白噪声.
2.2 FIR数字滤波器设计模块
FIR数字滤波器设计模块包括参数设置、滤波器选择、Kaiser窗函数和损耗函数曲线四个部分.
“参数设置”主要包括通带上下边界、阻带上下边界、通带最大衰减和阻带最小衰减.通过Edit Text可编辑文本控件进行参数的设置.注意此处“参数设置”为模拟滤波器的技术指标.“滤波器选择”主要包括低通、高通、带通和带阻四种滤波器,主要通过RadioButton单选按钮控件实现.用户可结合实际语音信号以及加噪后信号的频率特性来选择相应的滤波器类型.“Kaiser窗函数”和“损耗函数曲线”通过PushButton控件实现,并利用Axes控件进行输出曲线显示.
2.3 去噪信号模块
去噪信号模块包括去噪处理、去噪信号播放以及时域波形和频谱曲线显示.通过Pushbutton按钮控件实现各自功能.“去噪处理”主要实现利用所设计的FIR数字滤波器对加噪后的语音信号进行去噪处理,同时将去噪后的语音信号时域波形进行显示.在程序设计中,主要利用fftfilt()函数实现对加噪语音信号的滤波处理.通过“播放”按钮实现去噪信号的播放功能.通过“去噪信号频谱”按钮实现去噪后语音信号的频谱曲线绘制.
3 仿真实现
在MATLAB GUI平台仿真过程中,利用Windows自带的录音机程序录制一段时间在1s内的人声信号(*.wav),通过语音信号模块,对该语音信号进行读取、播放并绘制其时域波形和频谱图.在加噪信号模块中,将随机产生的高斯白噪声信号和原始语音信号进行叠加处理,从而构成加噪信号,播放加噪后的语音信号,可在声音输出终端听到人声掺杂着一定的噪声.同时,绘制加噪信号的时域波形及其频谱图如图3所示.
图3 原始语音信号、加噪信号时域和频域图
从图3所示曲线图可以看出,原始语音信号的频率在0~2 300 Hz,而加噪信号中的噪声信号频率主要集中在0~20 000 Hz.结合这一特点,在FIR数字滤波器设计模块中,参数选择设置通带截止频率为1 200 Hz,阻带截止频率为2 300 Hz,阻带最小衰减为40 db,同时选择低通滤波器进行滤波处理.如图4所示为FIR数字滤波器的系统仿真平台,本设计的关键在于通过对比分析原始语音信号和去噪信号的时域及频域曲线,设定合适的参数和滤波器类型,以达到最佳去噪处理效果.
图4 FIR数字滤波器系统仿真平台
如图4所示仿真结果,通过对FIR数字滤波器的各个参数进行设置和选择,对加噪信号进行滤波处理,去噪信号的高频部分明显被滤除,原始语音信号的主要频率成分保留.通过播放去噪信号,可以清晰听到原始信号所录制的人声,虽有略微的沉闷,但是已经非常接近原始语音信号.证明去噪处理基本到达了设计要求.
4 结论
利用MATLAB GUI平台设计开发FIR数字滤波器系统,系统界面设计简洁、直观,通过对比分析滤波前后语音信号的时频特性,更改FIR数字滤波器设计参数,达到最佳去噪处理效果,进而达到滤波器的最优化设计[6];利用Kaiser窗函数进行FIR数字滤波器设计通过改变参数值来折中选择主瓣宽度和旁瓣衰减,故其适应性较强;通过对参数的设置及选择,对信号进行加噪处理,语音信号的高频部分明显滤除,所录制的语音信号与原始语音信号非常接近,可以实现对语音信号的去噪处理;基于MATLAB GUI平台所设计FIR数字滤波器系统,修改系数方便,具有很强的适应性和可移植性;然而由于受到窗函数类型以及窗口长度大小的限制,对滤波器的性能产生一定影响,在后续研究中会加以改进完善,增强滤波器实际去噪处理效果.
[1]陈然,张霞萍. 基于MATLAB GUI的FIR数字滤波器设计与仿真[J]. 南京晓庄学院学报,2015(6):15-20.
[2]朱颖岚. FIR数字滤波器的MATLAB设计与研究[J]. 信息通信,2014(10):63-64.
[3]王艳芬.数字信号处理原理及实现[M].北京:清华大学出版社,2008.
[4]贾君霞. 基于MATLAB的FIR滤波器设计的探讨[J]. 自动化与仪器仪表,2014(12):110-112.
[5]窦海鹏. 数字滤波语音信号除噪设计[J]. 长春工业大学学报(自然科学版),2013(6):663-667.
[6]李在林,陈坤. 基于MATLAB的数字滤波器设计方法的分析[J]. 信息通信,2015(5):17-18.
Denoising Processing of Speech Signal of FIR Digital Filter Based on MATLAB GUI
FENG Hao
(School of Mechanical and Electrical Engineering, Suzhou University, Suzhou Anhui 234000, China)
Based on the basic theory and design method of digital filter, in MATLAB programming environment, to design finite impulse response (FIR) digital filter and FIR digital filter design using GUI interface of human-computer interaction platform, the platform, intuitive interface, simple operation and complete functions, can be realized on the noisy speech signal filtering function. The platform mainly includes the speech signal and noise signal, FIR digital filter design and signal denoising of four modules, the user can according to the speech signal and noise signal characteristics of technical index of filter adjusting read, realizing the optimization design of the filter, and ultimately achieve the FIR digital filter of speech signal denoising effect.
MATALB GUI;FIR digital filter;speech signal;denoising
1673-2103(2016)05-0068-05
2016-09-20
宿州学院一般科研项目(2014yyb03)
冯浩(1983-),男,河南安阳人,助教,硕士,研究方向:信号处理、图像处理.
TN713+.7.
A