基于中值滤波法的语音降噪

2017-09-17 09:58毕东生刘瑾王前朱陆旭和家慧
科学与财富 2017年25期

毕东生+刘瑾+王前+朱陆旭+和家慧

摘要:本文提出基于中值滤波法的语音降噪方法,能够有效地对语音信号进行降噪处理。通过设计GUI界面使降噪效果显示的更加形象客观。图形结果表明,基于中值滤波法能够很好地实现语音信号的降噪。

关键词:中值滤波法;语音降噪;GUI界面

随着社会的发展,语音音频等信号包含越来越多的信息,能够让人们知晓一定的不确定性,是能够让人们获知解惑的。因此,本文提出基于中值滤波法的一种有效的语音降噪方法。

1.原始语音信号的采集

首先录制一段语音信号,再将语音信号的文件的格式进行转换,得到.wav文件[1]。在MATLAB软件的命令窗口,输入命令“y=wavrecord(m,Fs,ch)”运行后,语音信号将会生成一个文件名为y的语音文件,并且会以.wav的语音文件格式存储在MATLAB的工作空间里。本文中的语音信号,通过MATLAB中的wavread函数读入,并通过sound函数进行播放。

2.原始语音信号的加噪

可以叠加在原始语音信号上的噪声有两种,一种是单频噪声,另一种是高斯白噪声。高斯白噪声其瞬时值服从高斯分布。功率谱密度服从均匀分布[2]。本文采用的噪声即为加性高斯白噪声。利用MATLAB工具箱产生高斯白噪声方法如下:

(1)WGN产生高斯白噪声。y=wgn(m,n,p,imp,state)表示重置RANDN。

(2) AWGN对采样信号进行加噪y=awgn(x,SNR)可以加噪于采集的信号上。y=awgn(x,SNR,SIGPOWER,STATE)将RANDN的状态重置。

(3)本设计采用了randn函数产生高斯分布序列。randn函数的调用如下:randn(n)或rand(n)表示生成0到1之间的n阶随机数方阵。

本文中用于产生噪声的的相关函数是Noise=0.1*randn(len,1),通过MATLAB软件可以作出原始语音信号的时域波形以及频域波形,如图1所示,并且图2表示加噪后的特征图形。

3.中值滤波法的语音降噪设计

中值滤波是非线性平滑技术的一种,用于语音信号的降噪,并且去噪效果较好,它的主要功能是将每一个样本点的值设置为该点领域内的所有样本点的中值,从而消除单一的噪声点。中值滤波在其滤除噪声的同时,既能够保护好信号的边缘,又能使之保持清晰。其实质是最小绝对误差准则下滤波的最优化状态。调用函数y = medfilt1(x,n)。可以把n阶一维中值滤波器应用到矢量x上。这样就起到了滤除噪声的作用。图3表示的是采用中值滤波法进行消除噪声的处理,所得到的波形和频谱图。

4.GUI界面的设计及降噪结果分析

通过对比中值滤波后的时域波形和频域频谱图,设计出GUI界面如图4所示。

图4 中值滤波界面

由分析可知降噪后的语音信号波形和采样的语音信号波形基本一致,即起到了很好的降噪效果。基于MATLAB计算信号功率与噪声功率的比值,即中值滤波的信噪比为6.6572,也证明信号功率远远大于噪声功率,即降噪效果很好。

5.总结语

根据中值滤波法的基本原理,结合中值函数对叠加了噪声的语音信号进行处理,从时域和频域分别对比处理前后的波形和频谱,计算出信噪比和设计GUI界面,直观的显示出降噪效果,故而中值滤波法能够很好的实现语音信号的降噪。

参考文献:

[1] 张文. 基于MATLAB的语音信号的滤波与实现[J]. 山西:电子技术,2008,P22-P28

[2]虞贵財,邵玉斌,肖笛. 产生高斯白噪声的研究与实现[J]. 电子科技,2006,(11):16-18+22.

通信作者:张培玲endprint