基于ResNet-BLSTM的端到端语音识别
2020-09-15胡章芳付亚芹夏志广马苏东
胡章芳,徐 轩,付亚芹,夏志广,马苏东
1.重庆邮电大学 光电工程学院,重庆 400065
2.重庆邮电大学 先进制造学院,重庆 400065
1 引言
自动语音识别(Automatic Speech Recognition,ASR)是一项复杂任务,系统基于严格设计的处理流程,包括输入特征、声学模型、语言模型和隐马尔可夫模型(Hidden Markov Models,HMM)[1]。而 ASR 的长期目标是能够在不同的环境下有效处理人们的讲话,对于传统的GMM-HMM混合模型而言相当有挑战性。一个良好的声学模型应该具备有效模拟语音信号中的各种声学变化能力,从而获得在不同讲话和环境条件下的鲁棒性。语音识别模型通常将特征提取和分类器作为两个独立的问题研究,先设计特征提取方法,然后基于提取的特征优化分类器性能。这种将两者分割的方法有两个缺点[2-3]:一是人工设计特征提取方法需要精心设计和大量实验验证;二是人工设计的特征对于当前的分类任务并不能保证是最优的。DNN及其变体能够同时进行特征提取和分类任务。如文献[4]表明,DNN 的低层能够提取对说话人自适应的特征,DNN 的高层能够提高不同类别的区分性,从而提升最终分类效果。这种特征规整与分类任务的联合优化特性是DNN优于基于高斯混合模型(Gaussian Mixture Model,GMM)一个重要原因。
最近几年,随着深度学习技术的发展,卷积神经网络(Convolutional Neural Network,CNN)和长短时记忆网络(Long Short-Term Memory,LSTM)在语音识别技术中相较于传统的语音识别技术方法,取得了较好的识别率。但其网络结构输入端的特征通常是梅尔频率倒谱系数[5(]Mel Frequency Cepstral Coefficents,MFCC),该特征是基于人耳听觉特性提出来的,它与频率成非线性对应关系,但易造成高频区域信息损失的问题,而且传统语音特征为了计算量的考虑必须采用非常大的帧移,无疑造成了时域上的信息损失,在说话人语速较快的时候表现得更为突出。因此对语音识别任务来说,并不能保证其为最优特征。
进一步,文献[6]为了解决这些问题,研究了从原始语音波形作为神经网络的输入,用神经网络训练的方法,提取到较于MFCC 更好的特征,该方法不需要任何人工干预处理,并且网络的参数是由训练数据和目标函数来确定。文献[7]采用一层时域卷积作为特征提取器,结合卷积网络、长短时记忆网络(Convolution-LSTMDeep Neural Network,CLDNN)的混合神经网络,首次将以原始语音波形为输入的模型识别性能达到以MFCC 特征为输入的模型识别性能。但是由于它们采用的卷积层数很少,一般只有1~2层,并且只把CNN视作一种特征提取器来使用,这样的卷积网络结构表达能力十分有限。为了解决这一问题,文献[8]中采用多时间频率分辨率卷积网络与带记忆模块的前馈序列神经网络(Feed-forward Sequential Memory Network,FSMN)相结合的模型,提升了语音识别性能和训练速度。但采用更多的FSMN 层,会使得训练出现梯度消失问题,导致训练的不稳定性。
针对以上问题,本文提出了一种基于残差网络(ResNet)[9]与双向长短时记忆网络(BLSTM)[10]相结合的模型结构,提升端到端模型的识别率和系统鲁棒性。采用残差网络,直接将整段语音的语谱图作为输入,相比其他以传统语音特征作为输入的语音识别模型速度更快。其次,从模型结构来看,本文的ResNet与传统端到端系统中的CNN 做法不同,它借鉴了图像识别中做法,通过将语音转化成一张图像作为输入,再将时间和频率作为图像的两个维度,然后通过一些卷积层和池化(pooling)层的组合,这样大大增强了CNN的表达能力。其次在ResNet 后接BLSTM,通过该网络能够学习到语音信号的上下文信息,从而提升端到端模型的识别率。
2 DCNN模型
CNN 作为语谱图的特征提取器,完整的CNN 包括卷积层和池化层,在卷积网络最后一层使用最大池化层(Max-pooling)对输出的特征进行固定大小的采样,由此在减少参数的同时保留了绝大部分特征信息,提升性能。由于CNNs擅长对输入端的局部结构进行建模,并且卷积层对语谱图进行卷积操作时,其卷积权重都是全共享的,相较于DNN网络而言,可以大幅度提升训练速度。DCNN模型如图1所示。
图1 DCNN模型
3 ResNet-BLSTM模型
单一堆叠的CNN 网络随着层数的增加,模型会发生梯度消失和网络性能的退化问题。因此,本文在原有的CNN 中引入残差模块以及并行的卷积层,并接入BLSTM 层,提出了RseNet-BLSTM 模型。该模型由两个模块组成,RseNet 模块和BLSTM 模块。RseNet 能够提取语谱图当中的局部区域特征,然后由BLSTM 对特征进行上下文建模。
3.1 模型输入
由于时域分析不能直观反映语音信号的频率特征,频域分析又不能表示语音信号随时间的变化关系,因而文献[11]提出了语谱图的分析方法,它结合了频谱图与时域波形图的优点,能够直观地显示语音信号频谱随时间的变化,是一种动态的频谱。从语谱图上能够直观地看见在任意给定的时间,不同的频率成分颜色不同,则频谱值不同。本文将原始语音信号转换成大小为N×N三通道的语谱图(Spectrogram),同时在原始语谱图上增加三组不同方差[0.2,0.4,0.6]的高斯白噪声点,用于提高模型的鲁棒性。原始语谱图和带噪语谱图如图2所示。
图2 原始语谱图及带噪语谱图
3.2 ResNet模块
3.2.1 残差网络
在堆叠的CNN 网络中引入了残差模块,残差模块基本原理如图3所示。
图3 残差网络结构
设输入为X,输出为y,权重矩阵为Wi,F(X,(Wi))表示为网络的学习残差函数,具体公式如下:
如果X的维度与学习残差函数维度不同,为了实现输入与输出之间的加法,则利用捷径线上的线性投影Ws矩阵完成。引入残差模块的前提是一个残差模块至少有两层卷积网络。
残差模块的引入,使得网络在优化参数的过程相较于普通堆叠网络更容易,并且随着网络层数的增加能够获得更加准确的识别率。
3.2.2 ResNet模块设计
单一叠加的卷积神经网络主要是由卷积层和池化层组成,卷积层越多,网络深度越深。虽然深层的网络能够提取到更加丰富的特征,但由此也会导致模型复杂,以及计算量过大的问题。本文基于上述考虑,ResNet模块设计结构如图4所示。
图4 ResNet模块
ResNet模块包括8层卷积层、2层池化层,以及一组并行卷积层。由于本文在设计卷积核尺寸时是从以下两个方面考虑:(1)语谱图包含语音信号的特点;(2)过大的卷积核,容易导致计算量增加,不利于增加网络的深度。故本文选择的卷积核尺寸分别有3×3和5×5及1×1。
图4 中自上而下分别是语谱图、残差层、并行卷积层、最大池化层。残差层的卷积核大小都是3×3,卷积核的数量依次递增,分别为32、64、128,之后接一层池化层,其目的是为了减少参量,加快训练速度。
同时为了解决语音说话人语速导致识别率低问题,提高模型的鲁棒性,本文设计了并行的卷积组,该层每组卷积核数量均为128,但大小不一致,目的是为了提取到不同尺度的特征。最后将三组输出与上一层的输出进行特征融合。使得模型能够适应说话人的语速。
由于语音信号大部分信息都反映在能量谱中,因此在最后一层使用最大池化层,保留语谱图中的纹理特征。
3.3 BLSTM模块
3.3.1 BLSTM网络
由于语音信号普遍具有长时间的特性,而DNN 在处理语音信号时,经常使用固定语音帧作为输入,不能利用前后语音帧之间的信息。而LSTM[12]能够很好地解决上述问题。图5为基本的LSTM结构。
图5 LSTM网络结构
其中xt为输入,ht表示为当前t时刻的状态,yt为网络模型最终输出。LSTM推导公式如下:
其中,i、o、f、c分别代表结构中的输入门、输出门、遗忘门和当前记忆单元;σ(⋅)表示为sigmoid 激活函数;w·x为输入层连接的权值矩阵,w·c为与记忆单元连接的权值矩阵。最终得出LSTM的输出。
BLSTM对每一个训练序列分别作用一个向前和向后的LSTM 网络,并且连接着同一个输出层,这样使得网络能够充分学习到序列的上下文信息。
3.3.2 BLSTM模块设计
语音信号是序列信号,而且序列之间的信息是相互关联的,因此该模块选择BLSTM,每个BLSTM 层的单元大小设置为128,最后用softmax层得到每个字符的最大概率。由于BLSTM在训练过程中耗时[13-14],且训练困难,所以本文在该模块只选择两层BLSTM。该模块如图6所示。
图6 BLSTM模块
3.3.3 CTC算法
语音识别是一种序列到序列映射的任务,其中X={X1,X2,…,Xt}为输入序列,Y={Y1,Y2,…,YL}为目标序列。在语音识别中,X是声信号,Y是字符序列。为了训练声学模型,必须使每个输入对应的输出概率P(Y|X)最大化。在给定一个输入序列的情况下,提供一个输出序列分布的一种方法,该方法将潜在变量序列O={O1,O2,…,Ot}的多到一映射引入作为最终预测的较短序列。某个序列Y的概率定义为所有映射到该序列的潜在序列的概率之和。文献[15]使用了一种连接时序分类(CTC)的方法,通过对每个时间步长的网络输出用softmax 函数来指定潜在序列上的分布,它提供了在该时间步从输出到标签字符表中每个字符的概率Pr(Ot|X)。并且在标签文本中引入了一个额外的空输出类“blank”,用于表示在特定的时间步长内不输出字符的概率。每个时间段内可能存在的序列有多条路径,在计算过程中,首先合并重复的连续非空白标签,然后删除空白标签,其中“blank”类用“ - ”代替,σ(⋅)表示为输入到输出的映射函数,公式如下所示:
因此最终输出序列的概率Pr为每条可能出现的路径概率σ总和:
CTC采用一种类似于HMM[13]模型中的向前的动态规划算法,能够有效地计算上述式子。为了使用CTC去预测输出序列,使用了最好的路径解码算法,在给定网络输出的情况下,每一帧的输出是独立的。因此在每个时间步长中,通过得到每一帧的输出标签概率,就能得到概率最大的可能序列。然后将σ(⋅)函数应用到该序列中,得到预测序列:
其中,Π*是输出序列最可能的路径概率,其形式为Π*=arg maxΠPr(Y|X),因为CTC 能够对于语音信号直接映射到标签,无需依赖语音音频和对应标签序列的一一对齐,因此本文采用CTC对语音信号到中文字符建模。
4 实验步骤
4.1 实验数据
本文采用的语音数据为开源语音数据集Aishell-1[16],此数据集都是在真实环境下录音,包括多名来自中国不同地区的不同发音的参与者共同录制。环境都是在安静的室内,一共使用三种不同的设备录音:高保真麦克风(44.1 kHz,16 bit);Android系统;手机(16 kHz,16 bit);iOS系统手机(16 kHz,16 bit)。本文使用的是采样率为16 kHz的语音,时长为178 h。其中验证集为10 h,测试集为5 h。本文将分别在验证集和测试集上验证模型的性能。
4.2 模型训练和优化
在优化模型的过程中,本文使用的初始学习率为0.01,优化器为Adam,并使用退化学习率的机制,即每循环M次,学习率自动下降0.95。初始权重值设定范围为[-0.1,0.1],初始偏置值为0.1。同时在训练过程中,为了防止发生过拟合,本文使用dropout 方法,每层网络的dropout初始值设定为0.95。并且在计算损失值的过程中,使用L2 正则化去改善拟合。损失函数使用CTC_Loss,具体公式如下:
其中S为训练集,Pr(Y|X)为上文给定X输出Y序列的概率。
4.3 评估指标参数
本实验使用的评估指标为字错误率(WER),目的是为了检测识结果的准确性,具体公式如下:
其中,S为替换,D为删除,I为插入,N为原始语音相应文本的字词总数。
4.4 实验平台
本文实验均在Ubantu16.04(64 bit)系统上运行。其中深度学习神经网络框架训练和测试软件均为Tensorflow;运行内存为16 GB,GPU设备为4台GXT1080ti。
5 实验结果分析
5.1 实验对比模型参数
为了验证本文模型的有效性,对比了以下三种端到端识别模型:(1)DNN+BLSTM+CTC 模型[17];(2)CNN+LSTM+DNN+CTC[18]模型;(3)CNNmaxout+DNNmaxout+CTC[11]模型。具体模型结构参数见表1。
表1 模型1-3网络结构参数
其中模型1中的MFCC特征参数为26维,输入为前后9 帧加当前帧,一共494 维参数。模型2 的特征为滤波器组特征(Filter bank,Fbank),是将MFCC 最后一步的离散余弦变换去掉而得到的语音特征,其与MFCC特征相比,保留了更多的原始语音数据。模型3和本文模型的输入均为语谱图。
5.2 模型性能探究
5.2.1 模型性能比较
为了探究不同模型的性能,本文先分别在训练集上训练4种模型,保存4种模型的7次迭代次数,然后在验证集做验证,找出其最优的迭代次数,最后在测试集上做性能测试。图7为各模型在训练集上的效果。
图7 训练集Epoch迭代次数
从图7 中可以得出,模型1 和模型2 分别在迭代至200次左右时,模型性能能够达到最佳。而采用语谱图作为输入的模型3和本文模型需要迭代至260次左右才能到达最优性能。这是因为模型3 和本文模型都是通过卷积神经网络学习语谱图的特征信息,因此都需要较大的迭代次数。随着迭代次数的增加,各模型对训练数据趋于拟合状态。本实验共保留迭代次数为150、175、200、225、250、275、300用于验证集测试。
为了找出各模型最佳效果的迭代次数,本文设置了第二组实验,在验证集上测试出最优效果,如图8所示,模型1和2在迭代次数为200、225时效果最优,模型3和本文模型在迭代次数为275时效果最优。
图8 验证集性能表现
最后设置一组实验将在验证集上得到的各模型最好的迭代次数用于测试集上做比较,如图9所示。
图9 测试集性能表现
由于本模型使用了残差结构和并行卷积层,性能和鲁棒性均优于其他模型。从表2中可以看到,和其他模型相比较,本文模型WER 分别下降了5.43%、3.71%、2.52%。
表2 各模型的表现结果
5.2.2 语音文本字数长度
由于语音识别性能也易受到语音文本字数长度的影响,比如一段语音的字数过长,易导致识别效果下降。因此本文设置一组实验,探究各模型对于不同长度语音字数的识别效果。在本实验中,测试集文本长度有三组,分别为[0~5]、[5~10]、[10~15]。测试结果为平均值,实验结果如图10所示。
图10 语音字数长度对WER的影响
从图10中可以得出,本文提出的模型在[0~5]、[5~10]语音字数长度范围内,表现出优于其他模型的性能;而在[10~15]范围内时,识别性能有所下降。产生上述的原因可能是由于本文使用的输入是语谱图,因此在限定语谱图大小的情况下,本文模型不利于连续的长语音片段识别。解决的方法:扩展语谱图大小,以及设置更深的卷积层提取特征信息。
6 结束语
本文提出了一种用于端到端语音识别模型:由ResNet 和BLSTM 构成,并以语谱图作为输入。该模型相较于另外几类端到端模型,本文提出的模型总体性能均优于其他模型。但该模型的缺点是不易训练连续的长语音。此后,下一步工作会在该模型做进一步的优化,以及在带噪声的语音集下进行训练和测试。