一种改进的自编码神经网络语音增强算法的制作方法

文档序号:14268068阅读:500来源:国知局

本发明涉及语音信号处理技术领域,具体为一种改进的自编码神经网络语音增强算法。



背景技术:

近年来,语音识别技术飞速发展,追求更高识别率的要求也加速了语音增强技术的飞速发展,纵观语音增强几十年的发展,在理论和实践上都已经取得了巨大的进步,时间域的增强算法有参数和滤波法,频域较成熟的算法有谱减法和维纳滤波法,这些成熟的算法,对平稳噪音,的确能够达到不错的增强效果。

但是,时域和频域的增强算法都存在如下所说的几个不足之处,首先这些算法为了推到过程的方便,会加入一些不合理的假设,而这些不合理的假设,必定会影响语音增强效果,其次,这些增强算法对平稳噪音信号可以起到良好的过滤效果,但对非平稳噪音信号的过滤效果不足够好,再有,经过语音增强后的音频仍会有少量噪音残留有的还会加入“音乐噪音”,最后,现实生活中的噪音种类繁多,信噪比变化区间大,以上提到的增强算法对噪音种类和信噪比的泛化能力较若。

自编码神经网络是一种神经网络学习算法,利用反向传播算法更新网络参数,使得输出等于输入,此算法可用在数据去噪和数据降维两方面,而本发明在自编码神经网络上进行改进,隐含层数量增加为3层,通过大规模的数据来对网络结构参数进行训练,不存在任何假设,由于训练数据之大,能够对噪音种类和信噪比起到良好的泛化作用。



技术实现要素:

本发明的目的在于提供一种改进的自编码神经网络语音增强算法,以解决上述背景技术中提出的问题。

为实现上述目的,本发明提供如下技术方案:一种改进的自编码神经网络语音增强整体流程,包括以下步骤:

首先,先介绍一下自编码神经网络基本原理。该网络包括输入层,隐藏层,和输出层三层,其中输入层和和输出层神经元个数相同,前向传播时,把输入进行降维压缩,之后再通过权重和偏置矩阵重构之前的输入,公式表示如下(1)所示:

(1)式中,y为输入,w1为输入到隐含层的权重矩阵,b1为输入到隐藏层的偏置矩阵,h为隐藏层神经元输出,w2为隐藏层到输出层的权重矩阵,b2为隐藏层到输出层的偏置矩阵,x为输出。自编码神经网络的结构图如附图说明中的图(1)所示。

接着,再介绍一下本发明所所述的改进的自编码神经网络语音增强算法。具体为,我们将自编码神经网络的三层结构增加为5层,分别为输入层,隐藏层1,隐藏层2,层隐藏3,和输出层,各层对应的神经元个数分别为256,128,64,128,256,除输入层外,每层都用sigmoid函数做为激活函数,公式表示如下(1)所示:

q=sigmoid(wp+b)(2)

(1)式中,w为权重矩阵,p为上一层神经元的输出,b为偏置矩阵,q为神经元输出,我们假定纯净的音频为x,对应的噪声音频为x,网络可以看作一个高度复杂的非线性函数f,那么我们所要做的就是采用误差反向传播,更新网络参数,使得当加噪音频x通过网络后的输出和原来的非加噪音频最为接近,公式表示为如下(3)所示:

(3)式中,e为网络输出和原始干净音频之间的均方误差,为第l层神经元的第i个单元的参数。改进的自编码神经网络的结构图如附图说明中的图(2)所示。

最后,介绍下本发明所述的改进的自编码神经网络语音增强的整体流程图。具体为,我们分两阶段进行,分别为训练神经网络的阶段和拿训练好的神经网络进行语音增强的阶段,训练神经网络时,我们先对有噪音的音频进行分帧处理,每帧32毫秒,涵盖256个采样点,刚好对应改进的自编码神经网络的的输入层神经元个数,分帧之后进行快速傅里叶变换,将幅值平方然后取对数,也就是常说的对数功率谱,最后拿频域数据对神经网络进行训练,语音增强时,我们同样会对含噪音频进行分帧,快速傅里叶变换,求取对数功率谱,拿频域数据送入已经训练好的神经网络,经过神经网络复杂的非线性映射之后,会输出频域特征,然后进行反快速傅里叶,将频域数据再次转换为时域,最后进行重叠相加,这样就得到了经过增强之后的时域的音频,相对应的流程图为附图说明中的图3所示。

附图说明

图1为自编码神经网络原理图;

图2为改进的自编码神经网络结构图;

图3为基于本发明所述方法设计的语音增强整体流程图。

具体实施方式

下面将结合附图说明对本发明的最佳的实施例进行详细的描述,通过该描述,我们将会从原理上对本发明所能解决的针对背景技术中提出的问题有一个更加深刻的认识,当然本实施例并不是全部的实施例,基于本发明原理之下的其他所有实施例,都属于本发明保护的范围。

请参阅图1,图2和图3,本发明实施例包括:

一种改进的自编码神经网络语音增强算法,包括:

首先,是数据准备和语音信号进入神经网络之前的前期处理工作,具体将叙述如下,本发明要达到的目的之一就是使网络对噪音种类和信噪比范围有良好的泛化作用,而要达到这样的目的,我们的训练数据集必须足够大,我们采用纯净音频和噪音相加的形式来构建我们的训练数据集,也就是在纯净音频上添加不同种类,和不同信噪比的噪音,训练集用清华大学王老师的普通话数据集下训练集下的9000多个纯净音频,添加的噪音数据来自俄亥俄州立大学实验室的100类噪音,我们将这些噪音按照信噪比-5db,0db,5db,10db和15db加入纯净音频中,测试集同样用王老师的数据集测试集下的纯净音频,添加noisex-92噪音库的四种噪音,将这些噪音按照信噪比-5db,0db,5db加入纯净音频中;数据集准备完成之后我们要进行的是音频信号的处理工作,我们先把数据集的采用频率由16kz降到8kz,然后进行分帧操作,帧长为32毫秒,32毫秒对于8kz的采样率来说,刚好涵盖256个采样点,这也正符合本发明中神经网络的输入层神经元个数,为了防止漏频,帧与帧之间还要进行16毫秒的重叠处理,分帧之后进行快速傅里叶变化,将时域数据转换为频域,此时对应的频域分析中的频谱,继续进行变化,将频谱变功率谱,变换公式如下:

y(d)=log|y(d)|2

上式中等号右边的y(d)为频谱向量,等号左边的y(d)为功率谱向量,最后求的功率谱向量才是最终送入该发明的神经网络的进行训练的最终数据形式。

其次,是对本发明的改进的自编码神经网络的训练阶段,在数据准备阶段已经完成了海量数据的准备,我们分块对神经网络进行训练,一块对应一个音频文件,我们送入一个音频数据,同样会输出一个音频数据,当然这些数据形式都是功率谱向量的形式,我们训练的目标就是最小化输入与输出之间的均方误差,每训练一次,就会进行一次参数的更新,当所有的数据被训练结束之后,我们的网络可以看成一个复杂非线性函数,这个函数可以对数据进行过滤,当输入是含噪语音时,经过网络的过滤,会把噪声过滤掉,而输出纯净的音频。

最后,是语音增强阶段,数据用的是数据准备阶段中产生的测试集,本阶段的显著区别是前期的数据处理和后期的波形重够,下面将分别介绍,在前期数据处理时,在进行快速傅里叶变换后,我们还要记下变换后的相角值∠y(d),在波形重构时,因为人耳对相角的微小变化并不敏感,噪语可以拿带音相角代替增强后的语音相角,有了相角之后,进行逆快速傅里叶变换再次将频域数据变回时域,最后通过重叠相加算法得到整个句子的波形;增强阶段总的过程可以大致概括为快速傅里叶变换,标记相角,神经网络语音增强,逆快速傅里叶变化,重叠相加法合成整段音频波形。

经过上述具体实施方式,可以得到一个良好的语音增强效果,该方法不基任何假设,不仅可以过滤平稳噪音,还可以过滤非平稳噪音,由于训练数据之大,该发法能够过滤绝大多数常见噪音,泛化作用良好,并且失真小。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1