一种基于预训练和双向LSTM的语音识别方法与流程

文档序号:15697339发布日期:2018-10-19 19:15阅读:530来源:国知局
一种基于预训练和双向LSTM的语音识别方法与流程

本发明涉及一种模型预训练和双向lstm的语音识别方法,特别涉及一种基于预训练、maxout激活函数以及双向lstm模型,在高噪声环境下能够显著提高神经网络抗噪性能力的语音识别方法,属于深度学习和语音识别领域。



背景技术:

随着计算机软硬件技术的不断发展和广泛应用,语音识别技术得到了迅速发展,语音识别研究也越来越受到人们的关注。近年来深度学习在语音识别领域的成功应用,也使得语音识别领域取得了很好的成果。但在实际生活的高噪声情况下语音识别系统的性能往往急剧下降,其问题的本质在于语音识别系统在高噪声环境下鲁棒性不足。

针对上述问题,传统语音识别技术在训练声学模型前多使用语音增强技术来对语音数据进行降噪除噪。语音增强技术是指通过信号处理的方法在处理语音信号前将采集过程中的混叠、高次谐波失真、高频等等因素去除,以获得”纯净”的语音信号。语音降噪算法可以分为两大类:无监督和有监督算法。

其中无监督条件下的语音降噪算法主要有以下几种方法:谱减法,基于统计模型的方法,基于子空间的方法。

谱减法的核心思路是估计噪声的功率谱并将其从嘈杂语音中减去;基于统计模型的方法则是将降噪问题归入到一个统计的估计框架中。一般常见的方法有:维纳滤波、最小均方误差方法和最大后验法。基于统计模型的方法一般需要假设语音信号和噪声信号是独立的,且服从特定分布;基于子空间的方法则是假设干净的语音信号子空间和噪声子空间是正交的,因此可以通过线性代数的方法将两个子空间进行分离。

无监督条件下的语音降噪算法的优点在于,对平稳噪声具有显著的抑制效果。但是对于非平稳噪声,其往往不能得到很好的降噪效果。而有监督类算法的优点则是在非平稳噪声情况下也可以得到相对较好的降噪效果。

有监督条件下语音降噪算法则主要是深度神经网络类算法。深度神经网络类算法是用基于深度学习的方法,从训练数据中学习语音和噪音的特征。其主要思路是根据听觉感知特性,把音频信号分成不同的子带,根据每个时频单元上的信噪比,在噪音占主导的情况下把对应的时频单元的能量设为0,或者在目标语音占主导的情况下保持原样。从而将分类任务转换成了一个二分类问题,以此实现语音降噪的目标。

但是,上述语音增强技术仍存在一些不足。例如,谱减法的缺点是由于估计噪音的时候取平均值,那么有的地方噪音强度大于平均值的时候,相减后会有残留的噪音存在;而强度小于平均值时,相减后会产生音乐噪声。同时由于没有利用明确的语音和噪声模型,其性能在很大程度上依赖于对干扰源的频谱跟踪的好坏。

为了尽可能提高语音识别系统在高噪声环境下的鲁棒性,首先提出了一种无需语音增强的声学模型训练方法,即预训练方法,通过预训练得到模型初始化权重参数。

随着近年来各种深度神经网络的快速发展,卷积神经网络、生成对抗网络等原本应用于其他领域的神经网络模型也被尝试着用于语音识别领域,并取得了一定的效果。其中长短期记忆网络模型由于能对潜在的任意长期序列进行建模,因此,广泛应用于因此语言、语音和翻译等方面。

长短期记忆网络全称为longshort-termmemory,简称lstm,是当前语音识别领域最常使用的模型。lstm同时具备了长时记忆和短时记忆,其中长时记忆是指权重在训练过程中变化比较缓慢;而短时记忆是指激活函数从一个节点到另一个节点是短暂的。然而,在实际生活的高噪声情况下,lstm性能往往急剧下降,问题在于模型着重于其拟合能力和对上下文的记忆能力,而忽视了模型在噪声环境下的鲁棒性。

因此针对上述问题提出了使用双向循环网络结构代替原来的单向循环网络,并通过maxout激活函数对lstm模型进一步优化,该方法简称为maxout-bilstm。



技术实现要素:

本发明的目的是为了解决在高噪声条件下,神经网络抗噪能力差的问题,提出了一种模型预训练和双向lstm的语音识别方法。

核心思想是改进了传统lstm的激活函数,有效提高了模型在噪声环境下的鲁棒性。

本发明的目的是通过以下技术方案实现的:

步骤一:输入待处理语音信号;

其中,待处理语音信号为采集到的含噪声的语音信号;

步骤二:对步骤一输入的待处理语音信号进行预处理,得到预处理后的帧信号,包括如下子步骤:

步骤2.1预加重,将步骤一输入的待处理语音信号通过一个高通滤波器,得到预加重后信号;

步骤2.2分帧,选取25ms帧长,将步骤2.1得到的预加重后的信号转换成以帧为单位的短时语音帧信号t(n),其中,n=0,1…,n-1,n为帧内采样点个数;

步骤2.3将步骤2.2得到的短时语音帧信号通过汉明窗处理后得到加窗后帧信号,如公式(1):

t′(i)=t(i)*hi(1)

其中,t(i)表示第i个语音帧信号;t′(i)代表经汉明窗处理后得到加窗后的第i个语音帧信号,hi为当前帧对应的汉明窗函数,i的取值范围是0至n-1,n为帧采样点个数;其中,汉明窗函数为公式(2):

其中,cos为余弦函数,i为当前对应的帧序号,i的取值范围是0至n-1,+为帧内采样点个数,π为圆周率;

步骤三:对步骤二输出的预处理后的帧信号进行快速傅立叶变换、使用梅尔尺度滤波器组过滤以及离散余弦变换为主的操作得到梅尔频率倒谱系数,再计算信号能量及提取梅尔倒谱系数的动态差分参数,得到语音特征;

其中,梅尔频率倒谱系数全称为mel-frequencycepstrumcoefficients,简称mfcc;

步骤三包括如下子步骤:

步骤3.1对步骤二输出的预处理信号进行快速傅立叶变换,得到各帧的幅度谱x(k);

步骤3.2对步骤3.1输出的各帧的幅度谱使用梅尔尺度滤波器组过滤,得出梅尔频谱;

具体为:使用m个带有梅尔刻度的三角形滤波器组成的滤波器组,将步骤3.1得到的频谱对应到梅尔刻度上,得到梅尔频谱;

其中,m的变化范围为22到26;

步骤3.3计算步骤3.2中三角滤波器的对数能量值s(m),如公式(3):

式中,fm(k)是第k个幅度谱的第m滤波器的频率响应,ln为对数函数,m的取值范围是1至m,m为对应频段的序号;

步骤3.4对步骤3.3输出的对数能量值进行离散余弦变换得到mfcc,记作为c(n),如公式(4):

其中,l指mfcc的阶数,l取12;m是指三角形滤波器的个数,c(j)是第j阶的mfcc;

步骤3.5计算从t1时刻到t2时刻,每帧信号的能量en,如公式(5):

其中,t′为加窗后的语音信号,t为当前时刻;

步骤3.6计算每帧12维mfcc特征的一阶差分和二阶差分,以及每帧信号能量的一阶差分和二阶差分,并补上1维叠加帧,构成一帧信号的语音特征;

其中,每帧信号的语音特征包括12维mfcc,12维mfcc的一阶差分,12维mfcc的二阶差分,1维能量,1维能量的一阶差分和1维能量的二阶差分,1维叠加帧,共40维语音特征;

步骤四:构建基于maxout函数的双向lstm,记为maxout-bilstm;具体为:将双向lstm中的输入门和遗忘门的激活函数变为maxout函数;

步骤五:使用maxout-bilstm进行前向和反向传播,具体包括:

步骤5.1通过公式(6)和(7)更新遗忘门限ft与输入门限it:

ft=maxout(wf[st-1,xt]+bf)(6)

it=maxout(wi[st-1,xt]+bi)(7)

其中,maxout是激活函数,wf是遗忘门的权重矩阵,wi是输入门的权重矩阵,st-1是双向lstm中前一时刻单元的输出,xt是t时刻双向lstm单元的输入,bf是遗忘门的偏置,bi是输入门的偏置;

步骤5.2执行maxout-bilstm的正向反馈传播,更新候选值向量新细胞状态ct,用于过滤输出细胞状态的过滤值ot、t时刻的输出值st,具体方法如公式(8)、(9)、(10)、(11)所示:

ot=σ(wo[st-1,xt]+bo)(10)

st=ot*tanh(σ(wo[st-1,xt]+bo))(11)

其中,σ为sigmoid函数,tanh为激活函数,wc是细胞状态权重,bc是细胞状态的偏置,wo是过滤值权重,bo是过滤值偏置,xt是t时刻双向lstm单元的输入,st-1是双向lstm中前一时刻单元的输出;

步骤5.3使用截断梯度回传方法更新网络权重与偏置,实现模型的反向传播过程,具体为:

步骤5.3.1计算遗忘门ft,输入门it,细胞状态ct和过滤值ot四个参数的梯度,定义w为遗忘门、输入门、细胞状态及过滤值的权重和偏置矩阵,即如公式(12):

步骤5.3.2求解误差e对权重和偏置矩阵w的偏导数,完成maxout-bilstm权重的更新;

步骤六:模型预训练,又具体包括如下子步骤:

步骤6.1采用实际训练数据量的λ%作为预训练数据集,在多层神经网络中进行前反馈传播,递归计算得到神经网络最后的输出结果ad,如公式(13):

其中,f为多层神经网络的传递函数,为神经网络中第d-1层与第d层的连接权重,ad-1是前一层网络的输出,b为偏置;

步骤6.2计算神经网络输出ad与真实输出y的误差值ep,如公式(14):

步骤6.3更新每个神经元上的权重,具体为计算权重的梯度,将权重梯度与训练因子相乘并取反后加到权重上;

步骤6.4保存预训练后的网络参数,存储预训练后模型;

步骤七:使用预训练后的maxout-bilstm对含噪声的语音信号进行训练,得到结果。

有益效果

一种基于预训练和双向lstm的语音识别方法,与现有技术相比,具有如下有益效果:

1.本发明使用maxout网络改进双向循环长短期记忆网络,大幅度提高了声学模型在高噪声环境下的鲁棒性;

2.本发明通过有效地提取语音信号特征,设计并实现了无需语音增强技术的模型预训练方法,可应用于高噪声环境下的语音识别模型构建与训练。

附图说明

图1为本发明一种模型预训练和双向lstm的语音识别方法实施例1中步骤f的训练过程图;

图2为本发明一种模型预训练和双向lstm的语音识别方法实施例1中步骤e的maxout网络结构;

图3为本发明一种模型预训练和双向lstm的语音识别方法实施例1中步骤e的maxout-bilstm模型结构。

具体实施方式

下面将结合附图和实施例对本发明加以详细说明,同时也叙述了本发明技术方案解决的技术问题及有益效果,需要指出的是,所描述的实施例仅旨在便于对本发明的理解,而对其不起任何限定作用。

实施例1

本实施例叙述了采用本发明所述的基于预训练和双向lstm的语音识别方法。

步骤a:输入待处理语音信号;

具体到本实施例,采用matlab按照信噪比9:1、7:3为纯净语音叠加噪声信号,每个输入待处理语音信号的文件的格式为’.wav’;

步骤b:语音信号预处理;

本实施例将步骤a输入的语音信号通过一个高通滤波器,其中滤波器的系数为0.96;

选取25ms,将通过高通滤波器处理后的语音信号进行分帧,并设定12.5ms的帧移,步骤a输入的待处理语音信号转换成了以帧为单位的短时语音信号t(n);

将每帧短时语音信号与a值为0.46的汉明窗函数相乘,得到加窗处理后的帧信号t′(n);

步骤c:提取语音特征;

具体到本实施例,使用语音识别工具kaldi和matlab进行语音特征的提取;

首先,使用kaldi对步骤b得到的加窗后帧信号t′(n)进行快速傅立叶变换,得到幅度谱;然后修改配置文件,将梅尔刻度滤波组中三角滤波器的个数设置为24;运行脚本,得到12维mfcc;

然后使用matlab求解加窗后帧信号t′(n)的能量en,并求解mfcc对应的一阶差分、二阶差分,以及每帧信号的能量en的一阶差分和二阶差分;将得到的40维语音特征存到特征矩阵,具体包括12维mfcc、12维mfcc一阶差分、12维mfcc二阶差分、1维能量、1维能量一阶差分、1维能量二阶差分,还有一维用于补零的叠加帧;

步骤d:构建双向lstm模型;

具体到本实施例中,使用语音识别工具kaldi构建双向lstm;具体为修改kaldi库中的配置文件,选择双向lstm模型,加载模型;

步骤e:使用maxout函数优化双向lstm,并存储更改后的maxout-bilstm;

使用maxout函数优化的maxout-bilstm如图3所示,具体步骤和参数与步骤5.1至步骤5.3一致;

其中,maxout激活函数的结构图如图2所示,maxout的结构主要是在输入层和隐藏层每个节点之间加入具有k个神经元的网络层,即m=(m1,m2,…,mk),并选择这k个神经元中的最佳值作为最终的输出,图2中x是输入层的神经元,o为输出神经元;

具体到本实施例中,首先更新步骤d中加载的双向lstm的遗忘门限与输入门限,使用maxoutcomponent组建替代原双向lstm中的sigmoidcomponent组建,将优化后的maxout-bilstm模型存储,并加载到运行脚本中;

步骤f:模型预训练;

首先对声学模型采用传统初始化的随机数,进行初次权重初始化。然后使用带有噪声语音的数据对声学模型进行首次预训练;

具体到本实施例,使用步骤e存储的maxout-bilstm对含噪声数据进行预训练;本步骤中,预训练数据使用了5%的训练集数据,学习率选取0.001;含有噪声数据首先进行前反馈传播,然后误差反向传播,更新maxout-bilstm中的网络权重,一轮预训练结束后,得到适应噪声条件的网络参数,需要保存预训练后的模型;

步骤g:使用maxout-bilstm进行语音识别训练,具体步骤如图1,通过步骤f保存的预训练后的模型,对整个数据集进行训练;

具体到本实施例中,运行kaldi工具脚本时,需要跳过构建以及初始化声学模型步骤,直接运行步骤f中的预训练后的maxout-bilstm进行训练,得到语音识别结果。

以上所述为本发明的较佳实施例而已,本发明不应该局限于该实施例和附图所公开的内容。凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。

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