APP下载

基于MATLAB的语音信号去噪软件平台设计

2018-07-12李文夏平

电脑知识与技术 2018年12期
关键词:小波滤波

李文 夏平

摘要:语音信号去噪软件平台的开发能够帮助学生对语音信号的理解和掌握,为通信中对语音信号传输与处理的研究打下基础。首先,对原始语音信号加入不同类型的噪声,通过设计滤波器及小波去噪,比较不同增强算法的去噪效果;其次,在MATLAB环境中构建语音信号增强的GUI平台。实验结果表明,本软件平台仿真实现的去噪算法,界面友好、去噪效果清晰。

关键词:语音信号去噪;MATLAB;滤波;小波

中图分类号: TP391 文献标识码:A 文章编号:1009-3044(2018)12-0059-03

Abstract: The development of speech signal de-noising software platform can help students understand and master the speech signal, and lay a foundation for the research of speech signal transmission and processing in communication. First,First, to add different types of noise to the original voice signal, by means of designing filters and wavelet denoising,comparing different enhancement denoising effect of the algorithm, Secondly, build the GUI platform of speech signal enhancement in MATLAB environment. The experimental results show that the algorithm is implemented by the software platform, friendly interface, de-noising method implemented by the software platform is clear.

Key words: Speech Signal Denoising; MATLAB; Filtering ; Wavelet

1引言

現代通信与信息处理技术中,语音信号的传输与处理有着广泛的应用;语音信号的处理也是长期研究热点之一,随着通信信息技术突飞猛进的发展,语音采集器及分析设施逐渐智能化、数字化以及功能多样化发展,显著提升了对语音信号的分析效率[1]。同时,语音信号在传输过程中总会受到各种噪声干扰,降低了语音信号的完整性、可读性;在此背景下,对语音信号进行去噪处理十分必要。传统的去噪方法中,滤波以及小波去噪方法备受关注。

本文构建基于MATLAB的GUI平台对语音信号进行滤波及小波去噪,较好的解决语音信号在传输中受噪声干扰问题,并加深对语音信号处理的理解和掌握。

2 GUI软件平台的构建

2.1 基本框架

软件平台界面的设计需根据软件的最终需求来确定,由于本软件的目标是通过多种方法来实现语音信号的去噪处理,因此软件的基本框架应为原始语音信号输入、噪声加入、噪声参数设置、滤波算法、小波去噪以及仿真结果显示等功能模块[2]。如图1所示。

本软件平台中滤波去噪需要设计滤波器的类型选择、参数输入,因此本软件平台还需设计子界面作为滤波器去噪的基本要求。

2.2 软件平台的界面设计

2.2.1主界面设计

使用鼠标将设计界面左侧的GUI对象选择区的各个对象,按要求拖到GUI布局去,放在合适的位置,并调整至合适的大小,完成软件的主界面布局。如图2所示。

图中共有五大区域,包括四个主区:输入区、操作区、显示区以及注释区,除此之外还有1个坐标轴用以显示噪声的函数表达。

(1) 输入区:选择输入的语音信号,并对语音信号添加噪声操作,有三种典型噪声可供选择,以及设置噪声参数。

(2) 操作区:选择不同按钮,可分别在显示区观察原始信号、加噪后信号、滤波后信号波形。

(3) 显示区:显示区有6个坐标轴用以显示不同操作下各自波形变换情况。

(4) 注释区:用以对三种输入噪声相关参数进行约束,以保证程序正确运行。

(5) 1个外围坐标轴:该坐标轴用以显示三种噪声的概率密度函数,已确保噪声设置准确无误。

2.2.2子界面设计

该子界面是用于滤波器的种类选取、相关参数设置,包括低通滤波器的抽样频率F,通带截止频率Fp、阻带截止频率Fs、通带衰减Ap、阻带衰减As以及滤波器的阶数N等参数设置。参数设置后可运行观察该滤波器的幅度谱和相位谱,最终子界面的参数选取及该滤波器的波形显示如图3所示。

运行子界面时,需注意参数选取要求,参数选取过大过小,将直接影响滤波后波形;参数设置不符合下方“参数设定”面板栏最下方静态文本要求时,软件平台将给出一个错误警告,如图4所示。

2.3 软件平台的功能实现

软件中的核心模块为“原信号波形”、“加噪后波形”、“滤波去噪后波形”和“小波阈值去噪后波形”共四个模块,通过该四个模块的应用即可实现该软件平台的功能[3]。

2.3.1 “原信号波形”模块

打开软件平台主界面后,首先用uigetfile函数选取一个音频文件,自主定义选取的音频文件格式有mp3、wav、acc三种,该函数用法如下:

[FileName,PathName,Filterlndex] = uigetfile({'*.mp3';'*.wav';'*.acc'},'Pick an voice file') (1)

式中,Filename用于获得文件名,PathName用于获取音频文件路径名,FilterIndex为文件索引。

得到原信号后,可利用MATLAB中的audioread函数把语音信号转换成序列,得到信号以及采样频率。由此可以准确地得到原始语音信号的时域波形及频谱。如图5所示。

2.3.2 “加噪后波形”模块

输入原始语音信号后,可对原语音信号添加噪声,本软件提供了三种噪声:高斯噪声、椒盐噪声、以及均匀分布噪声,使用的主要函数为“imnoise”,其函数用法:

y=imnoise(x,‘噪声类型,‘噪声参数); (2)

式中,x为的原语音信号,y为加入噪声后的叠噪语音信号。对于噪声参数的相互传递,先在每个文本编辑框中的回调Callback函数,获取文本编辑框中的字符串,然后将所获取的字符转换为双精度数值型,则可以得到用户所输入的参数值。具体函数语句:

用该语句便可以获取加噪声是的均值、方差、噪聲密度等一系列参数。如果想一次性调用该参数运用于整个m文件中时,可以添加全局变量“global”来实现,在得到相关参数后便可点击“加噪后波形”按钮来观察添加噪声后的波形。如图6所示,选取高斯噪声,方差为0,标准差为0.24的噪声波形。

通过频谱观察,可以看出噪声均匀分布在整个频域范围内,原始的语音信号并没有完全消失,说明进行滤波或者小波去噪后能够较好地恢复原始信号,与原始语音信号的频谱相对比,可以看出差异不大,滤波去噪时选取44100Hz左右的抽样频率即可恢复为原语音信号波形。

2.3.3 “滤波去噪后波形”模块

语音信号去噪目前已有多种成熟、可靠性高的方法,如小波变换、滤波、小波包变换法等,本软件平台选取了FIR滤波器中较为实用的巴特沃斯滤波器,包括巴特沃斯滤波器低通滤波器、高通滤波器、带通滤波器以及带阻滤波器等。平台设计中采用了弹出式菜单来选择滤波器。命令语句:

S=get(handles.Butterworth,Value); (4)

式中,S为获取的选择值,S可能等于1,2,3,4中的任意数,S为1即可表示选取了低通滤波器,以此推之。Butterworth为各个对象的tag,Value为数值的含义。

选取了相应地滤波器后,在点击“滤波去噪后波形”按钮,即可出现子界面用于确定选择滤波器的参数,再次点击该按钮,得到滤波后的噪声波形及频谱图。

2.3.4 “小波阈值去噪后波形”模块

小波阈值去噪法也是目前常见且恢复效果极佳的一种去噪方法。小波域中,有效信号对应系数很大,噪声对应的系数最小。设计的平台中,弱高斯噪声方差为var,则噪声系数大部分位于[-3*var,3*var]区间内,因此只要将区间[-3*var,3*var]内的系数置为零(硬阈值函数的作用),便可最大程度地抑制噪声,从而恢复原信号[4]。小波阈值去噪时,使用函数ddencmp和wdencmp。语法分别为:

[thr,sorth,keepapp]=ddencmp('den','wv',x); (5)

y=wdencmp('gbl',x,'db4',2,thr,sorth,keepapp); (6)

式中,thr为阈值,sorth为软阈值或硬阈值,keepapp是允许用户保存低频系数。Den为信号消噪,wv是选择小波分解,x为含噪声的语音信号,因此使用函数ddencmp来获取消噪时默认阈值。

(6)式中,x仍然为含噪声的语音信号,y为去噪后的输出信号,2为小波分解系数(一般设置该系数为2居多),‘glb为每一层都采用一个阈值进行处理,‘db4表示所使用的小波函数类型。即wdencmp函数用于一维或二维信号的消噪或压缩。

3 实验结果与分析

本文以随机录取的一段音频文件为例,向原始的语音信号添加均值为0,标准差为0.24的高斯噪声。在对含噪声的语音信号分别进行滤波去噪和小波去噪处理,最终结果如图7所示。

从图7(b)可知,使用滤波去噪后,原始的信号(红色部分)大部分已经滤除了噪声,但恢复的信号中仍然包含高斯噪声,该滤波方法需要设计出最佳的滤波器,才能使恢复效果最好,目前的恢复效果较为理想。

图7(c)中为使用小波阈值去噪后的时域和频域波形,从图中可知,恢复的信号基本全部为红色区,表明高斯噪声部分几乎完全滤出,去噪效果较好,语音信号中混杂的噪声大部分为高频信号,而小波阈值去噪法则能有效去除高频部分,操作简单[5]。

综合图7(b)和(c)两图可知,两种去噪算法的可信度较高,但精度比较上,小波阈值去噪法更加精准、恢复信号的还原度更好。

4 结论

本软件是基于MATLAB2016a环境下的可视化图形界面开发完成的,充分利用了信号处理工具包以及GUI编程,界面简单且流畅。可用于MATLAB2016a及以上版本来运行。

该软件平台的开发目的在于为用户提供一个简洁实用软件平台主要用于语音信号的去噪处理。软件的主要功能是对语音信号进行去噪处理,有滤波去噪及小波阈值去噪,用于恢复让噪声所干扰的语音信号,使其能够尽可能的变为原始信号的效果。支持三种音频格式的语音文件插入。

软件平台中设计了两类去噪方法:滤波器法和小波阈值去噪,选取音频文件来获取原始语音信号,软件平台中的噪声参数可自行设置,从而得到多种不同的波形用于分析。在语音去噪中,相关函数简单且实用性强,易于学生学习语音信号处理的相关内容以及实际科研中对语音信号的研究。

参考文献:

[1] 冯浩.基于MATLAB GUI的FIR数字滤波器语音信号去噪处理[J].菏泽学院学报,2016,38(5):68-72.

[2] 赵晓鹏,夏平.基于MATLAB的数字图像增强软件平台设计[J].电脑知识与技术,2017,13(10):165-167.

[3] 冈萨雷斯R C,伍兹R E,埃丁斯S L,等.数字图像处理:MATLAB版[M].北京:电子工业出版社,2005.

[4] 陈建勇,王道阔,邓文锋,等.重构小波阈值函数在信号去噪中的应用与研究[J].CT理论与应用研究,2017,26(01):63-68.

[5] 阿布力米提·肉孜. 小波变换在维语音信号去噪中的应用[D].乌鲁木齐:新疆师范大学, 2012.

猜你喜欢

小波滤波
基于多小波变换和奇异值分解的声发射信号降噪方法
构造Daubechies小波的一些注记
基于MATLAB的小波降噪研究
基于改进的G-SVS LMS 与冗余提升小波的滚动轴承故障诊断
一种新的InSAR干涉相位滤波方法
基于自适应Kalman滤波的改进PSO算法
RTS平滑滤波在事后姿态确定中的应用
基于线性正则变换的 LMS 自适应滤波
函数空间的小波逼近
基于FPGA小波变换核的设计