侯少阳 金施群 王行芳
摘要:为了更好地对激光监听的语音信号进行降噪处理,提出了一种改进的小波阈值降噪算法。通过图形化编程软件LabVIEW与数学工具软件MATLAB混合编程实现算法,并进行了仿真实验。结果表明,信号处理系统结合了图形化语言的直观易懂与MATLAB强大的计算能力的优点;改进的阈值降噪算法与传统的阈值降噪法相比,降噪效果明显,降噪后信号波形更加平滑,失真度小,语音信号信噪比显著提高。
关键词:激光监听;LabVIEW;MATLAB;混合编程;小波降噪;阈值算法
中图分类号:TN912.35 文献标识码:A 文章编号:1007-9416(2018)04-0101-04
1 引言
在军事、缉毒、刑侦及国家安全领域,重要的会议或人员的交谈经常是侦查人员关注的重点,激光监听因为隐蔽性强和不易被干扰等优点,成为获得情报的有效方法。由于激光监听系统获取的信号会受到环境光源、大气噪声、热噪声等的影响[1],因此必须采用有效的信号降噪方法来提高信号质量。传统的降噪方法如维纳滤波消噪法、谱减法、自适应滤波法等存在对信号平稳性要求高、计算量大、产生音乐噪声等缺陷,对于非稳态的语音信号的处理略显不足[2][3]。本文给出了一种改进的小波阈值降噪算法,并建立了信号处理系统进行仿真实验。仿真结果显示,相对于传统的降噪算法,经过改进算法降噪后的语音信噪比得到提高,降噪效果较好,有利于优化激光监听系统的性能。
选择信号处理工具时,经常选择数学工具软件MATLAB对信号进行仿真处理。但对实际信号的处理研究具有更大的现实意义。LabVIEW在信号采集、显示界面方面具有优良的性能,但在信号处理方面能力不足。而MATLAB具有强大的信号处理、仿真等功能及丰富的函数工具包和大量有效的算法。在LabVIEW环境中调用MATLAB语言简单可行,二者的混合编程可以充分利用两者的优点[4]。解决开发过程中界面设计、仪器连接和数据处理计算等问题,大大减轻程序开发的工作量,提高开发效率。文中,采用LabVIEW里的MATLAB 脚本节点编写小波降噪程序,这种编程方式有效的缩短了编程时间。
2 小波阈值去噪
2.1 小波阈值去噪原理
设带噪声语音信号为,,其中为无噪信号,为高斯白噪声,其方差为,服从的正态分布,N为采样点数。
小波阈值降噪算法的理论依据是:经过离散小波变换(DWT),期望信号的绝大部分能量都聚集在少数的较大的小波系数中,噪声信号的能量则是在全部小波域内均匀分布[5]。因此,期望信號的小波系数的值高于噪声信号的小波系数的值。所以,选择一个适当的阈值,把小于阈值的系数去除,把有用信号的系数保留。保留的系数经过小波反变换,可以重构成降噪以后的信号。
小波阈值降噪算法的步骤为[6]:(1)小波分解:确定分解层数,并选择合适的小波基进行分解,获得含噪信号各层小波系数;(2)阈值量化:选用合理的阈值函数对每层系数阈值量化处理;(3)信号重构:对量化的小波系数应用小波逆变换,从而重构出降噪后的信号。
2.2 选取阈值函数
采用小波阈值降噪法对语音信号进行降噪时,需要对阈值和阈值函数做出合理的选择。设为信号经小波多尺度分解后的小波系数,为经过阈值量化的小波系数的估计,为阈值。常用的阈值函数如下所示。
(1)硬阈值函数:
(1)
由式(1)可以看出,硬阈值函数将绝对值不大于阈值的那部分系数直接去除,同时将绝对值大于阈值的那部分系数完全保留。
(2)软阈值函数:
由式(2)可以看出,软阈值函数对绝对值不大于阈值的那部分系数做直接去除,但是对绝对值大于阈值的系数进行了收缩处理。
硬阈值和软阈值函数都是最早也是十分经典的阈值函数,二者的思想在本质上是相同的。不过,这两种处理方法虽然简单,但都有其固有的缺点。
硬阈值函数直接将小于阈值的系数全部去除,很可能会损失一部分有用信号。由图1可知,量化后的小波系数是不连续的,在处出现了间断点。这会导致小波重构之后得到的语音信号出现振荡噪声[7],这将削弱信号的去噪效果,导致语音信号的质量受损。
软阈值函数为连续函数,经该函数处理后重构的语音信号将更加平滑。软阈值函数也有自己的缺点。它虽然避免了函数的不连续,但是量化后的小波系数和之间一直存在着固定的偏差,这种偏差同样会对重构信号的质量产生影响[8]。
(3)软硬折中的阈值函数:
可以看到,该函数对软阈值函数做了修正,设置了一个调节系数α,其中。当α等于0时,该函数转化成硬阈值函数;当α等于1时,该函数转化成软阈值函数;当α取的值时,该函数就是硬、软阈值函数的折中方法。通过改变α的值,就可以得到不同的阈值函数和降噪性能。该函数下,处理后的小波系数将更接近原信号小波系数。取α为0.5,以上三种阈值函数如图1所示,横坐标为信号的原始小波系数,纵坐标为量化后的小波系数。
(4)改进的阈值函数:
为了弥补硬、软阈值函数的缺陷,本文提出了一种优化改进的阈值函数。改进的阈值函数如下:
式中,为待求常数。改进的阈值函数和传统的阈值函数的对比如图2所示。从图2中可以看出,在改进的阈值函数中,通过改变c的值,就可以调节阈值函数从而获得不同的降噪性能。该阈值函数减小了的小波系数的固定偏差。在大于阈值的范围内函数为平滑曲线,具有与软阈值函数相似的收缩效果,符合噪声系数的客观规律[8]。
2.3 阈值的选取准则
选择阈值是小波降噪最重要的步骤。小波阈值直接影响着降噪的最终结果:阈值设置过低,会在阈值量化的小波系数中残留很多的噪声分量;阈值设置过高,对有用的信号成分造成一定的损失,导致信号失真。所以必须对阈值进行的有效的估计。
当前研究中比较著名的小波阈值选取规则主要有:固定阈值(Sqtwolog)[9]、Stein无偏风险阈值(Rigrsure)[10]和极大极小原理阈值(Minimaxi)[11]。
(1)固定阈值(Sqtwolog阈值)。
固定阈值规则定义阈值为: (5)
其中,为噪声的标准差,N为信号长度。
(2)无偏风险阈值(Rigrsure阈值)。
这是通过Stein的无偏似然估计得出的SURE阈值,设,;P的元素由平方值按从小到大顺序排列的小波系数组成。该阈值产生的风险为:
其中,当风险函数R(k)取最小值时,与之对应的k值设为,从而得到阈值。
(3)极大极小阈值(Minimaxi阈值)。
它的原理是使最大风险的估计最小化,其阈值规则是:
3 小波阈值降噪在LabVIEW中的实现与仿真
3.1 程序实现
LabVIEW通过调用MATLAB Script脚本节点来链接MATLAB应用程序,该节点位于“函数选板”中 “数学”的“脚本节点”下。该节点能够直接将m程序文件直接导入程序框图,也能够在程序框图中按照MATLAB的代码规则编写程序[12]。
图3给出了信号的降噪程序框图。首先读取存储在文件中的语音信号,并向信号中添加高斯白噪声,然后通过脚本节点来调用MATLAB应用程序,调用“wden”小波去噪函数并设置小波基、分解层数、阈值函数与阈值规则,对语音信号进行降噪处理,最后将波形显示出来并计算信噪比和均方根误差。
由图3可以看出,程序中通过调用MATLAB小波工具包里的“wden”函数实现对信号的小波降噪,且编程比较简单,显示出了混合编程模式的优点。
3.2 仿真实验与分析
为了检验优化的阈值函数的降噪效果,设计了实验将优化的阈值函数与其他传统的阈值函数的降噪效果进行对比。实验中采用的原始无噪语音信号采样频率为16kHz,采样点数为120000,数据保存在wav波形文件中。为了显示信号波形的细节,波形图以每500毫秒显示1000个采样点的速率刷新。通过调节输入高斯白噪声的强度值获得信噪比不同的含噪语音信号。根据经验,在语音降噪中一般采用db8、等小波sym8[13],能够获得较好的效果,分解层数一般设为3~6层[14]。本实验中选择sym8小波基对含噪语音信号进行降噪,分解层数设置6层,选取阈值为无偏风险阈值,分别用上述
三种传统阈值函数与改进的阈值函数进行降噪对比实验。不含噪声的语音信号的波形如图4所示。
(1)输入信噪比为Rin=0dB时,含噪信号的波形如图5所示,将不同阈值函数的降噪效果进行对比,结果如图6所示。
(2)输入信噪比为Rin=10dB时,含噪信号的波形如图7所示,将不同阈值函数的降噪效果进行对比,结果如图8所示。
(3)输入信噪比为Rin=20dB时,含噪信号的波形如图9所示,将不同阈值函数的降噪效果进行对比,结果如图10所示。
通常,降噪效果的评价指标主要有两个,即信噪比和均方根误差。通常信噪比越高,均方根误差越小,说明降噪方法对原始信号的恢复效果越好[15]。假设原始含噪信号为,降噪后的信号為,信噪比和均方根误差由式(8)和式(9)表示。
(8)
(9)
实验中分别计算了在不同的输入信噪比时,通过不同阈值函数降噪后信号的信噪比(SNR)和均方根误差(RMSE),表1对计算结果进行了对比。
从图4到图10可以看出:在不同的输入信噪比时,与软、硬阈值函数等传统方法相比,采用改进算法降噪后的信号波形明显更接近原始波形。特别是在输入信噪比比较低时,改进的算法能很好地复现出语音波形;而硬、软阈值和折中阈值降噪后的波形包含较多毛刺,出现明显的失真。从表1可以看出:在不同的输入信噪比时,与软、硬阈值函数等传统的降噪方法相比,采用改进算法降噪后的语音信号信噪比有比较明显的提高;相比之下,均方根误差也稳定在较小的水平。由此可见,与传统的硬、软阈值法和折中阈值法相比,本文的改进阈值算法降噪后波形失真度小,信噪比高,同时均方根误差指标也较好,表明本文提出的改进算法是合理有效的。
4 结语
虚拟仪器平台LabVIEW与数学工具软件MATLAB的结合,充分发挥了两个软件的优点,扩展了虚拟仪器的应用范围,提高了工程应用价值[16]。同时改进的阈值函数去噪算法有效的改善了语音信号的去噪效果,为激光监听及其他领域的语音信号处理提供了一种有效的手段,为信号处理的实时实现提供了一种方法。通过功能强大的软件平台与有效的去噪方法结合,系统在信号处理中表现出了良好的性能,具有广泛的发展前景。
参考文献
[1]康宏向.激光侦听信号中大气噪声与环境噪声的降噪研究[D].长沙:国防科技大学,2003.
[2]胡航.现代语音信号处理[M].北京:电子工业出版社,2014.
[3]盛英.基于小波变换的语音信号降噪研究[D].哈尔滨: 哈尔滨工程大学,2007.
[4]张燕,周西峰,郭前岗.基于LabVIEW的超声信号小波阈值去噪方法[J].计算机技术与发展,2012,22(3):125-128.
[5]刘凤山,吕钊,张超,吴小培.改进小波阈值函数的语音增强算法研究[J].信号处理,2016,32(2):203-213.
[6]Giaouris G, Finch J W. Denoising using wavelets on electric drive application[J]. Electric Power Systems Research, 2008,78(4): 559-565.
[7]陆真,裴东兴,刘莉,白茹.基于改进小波阈值函数和PSO的语音增强算法[J].激光杂志,2016,37(2):141-145.
[8]张金榜,孙艺笑,王润典,徐磊.改进的阈值函数去噪算法[J].电子科技,2014,27(2):17-20.
[9]Shark L K, Yu C. Denoising by optimal fuzzy thresholding in wavelet domain[J]. IEEE Electronics Letters,2004,36(6): 581-582.
[10]孙烔宁.无偏风险阈值及其在语音去噪中的应用[J].微计算机应用,2004,25(6):688-691.
[11]曾黎玉,王英健,郑理科.基于快速提升小波变换的电能畸变信号模极大值检测方法[J].长沙理工大学学报(自然科学版),2007,4(4):56-59.
[12]周鹏,等.精通labview信号处理[M].北京:清华大学出版社,2013.
[13]屈直,张伯虎.一种改进的小波阈值算法在激光侦听中的应用[J].激光技术,2014,38(2):218-224.
[14]张植奎.基于LabVIEW的语音信号小波去噪分析[D].天津: 南开大学,2009.
[15]张飞.一种基于小波变换的语音信号去噪净化方法[J].电子测量技术,2009,32(6):68-71.
[16]李博,吴伟,周密.基于LabVIEW的小波阈值融合算法去噪分析[J].西安石油大学学报(自然科学版),2010,25(2):76-80.