刘 虹 袁三男
(上海电力大学电子与信息工程学院 上海 200090)
自动语音识别(Automatic Speech Recognition,ASR)技术是一种将人类语音转换成文字的技术,语音识别的任务主要有声纹识别、关键词识别、语言辨识、连续语音识别[1]。语音识别属于模式识别,主要通过模型算法识别声音向量,即语音的特征参数,最终给出识别结果,而语音识别的最终目标是能够在不同环境下,依旧能准确地识别出说话人说的内容[2]。早期语音识别的声学模型主要是混合高斯隐马尔可夫模型(Gaussian Mixture Model-Hidden Markov Model,GMM-HMM),但是该模型在嘈杂环境下的识别效果较差,无法满足现代自动语音识别的要求[3]。从2009年开始,深度学习的发展使得大词汇量的语音识别成为可能。基于深度神经网络(Deep Neural Network,DNN)的系统取代了GMM-HMM模型成为了主流语音识别的模型[4],但由于模型本身的缺陷,语音识别的识别率难以继续得到提高。由于语音是上下文相关的,因此长短时记忆神经网络(LSTM)的出现大大提高了语音识别的准确度,LSTM有着强大的序列建模能力[5]。同时,Graves等[6]将联结时序分类技术引入到循环神经网络的训练中,完成了序列的输入和输出自动对齐的任务。目前识别率较好的语音识别的模型主要将CNN和LSTM结合到一起,CNN用来提取特征,LSTM对序列建模,但是CNN的层数一般是两到三层,表达能力有限,提取上下文的相关性主要还是依靠LSTM网络。但是LSTM的记忆模块较小,神经网络的训练速度很慢,且实时性较差。
本文提出一种基于多尺度残差深度卷积神经网络的语音识别模型,由于卷积神经早期用在语音识别中主要是提取特征,卷积层数也较少,限制了卷积神经网络对语音识别的表达能力。因此,本文结合多尺度分析和深度残差网络,提取语音特征图中不同尺度的特征,将这些特征进行融合,最后结合联结时序分类算法构建端到端的中文语音识别模型,摆脱序列建模对LSTM的依赖。
随着激活函数、批量归一化和残差机制等各类算法的出现,卷积神经网络向着更深层次的方向发展,图像识别的准确率得到了进一步的提升[7]。但在语音识别中,目前主流神经网络框架中的卷积层的层数只有几层,序列建模仍然依赖LSTM网络,限制了卷积神经网络在语音识别领域中的发展。
CNN主要由卷积层、池化层、全连接层、激活函数组成,卷积层用来提取特征参数,池化层对特征图进行压缩,而全连接层充当分类器的作用[8]。池化层又分为最大池化和平均池化,最大池化采用特征图的局部最大值达到特征降维的目的,在有噪声的语音中,相邻帧的时频图的局部最大值通常为语音,局部最小值为噪声,最大池化层会对含噪语音的时频图进行筛选,提高语音的分辨率,降低噪声,因此本文采用最大池化层[9]。CNN的激活函数一般使用线性整流函数(Rectifiler Linear Unit,ReLU)。批量归一化(Batch Normalization,BN)技术的出现有效地解决了神经网络内部协变量转移的问题,大大加快了神经网络的训练速度[10]。随机失活层(Dropout)使网络的泛化性能得到提高,随机响应网络的节点,保证了网络的稀疏性[11],本文同时引入空洞卷积,在相同的卷积核大小的情况下,空洞卷积通过改变空洞率的大小来改变感受野的大小,网络的参数量不变的同时,又获得更多的上下文信息,空洞卷积实际的卷积核大小计算公式如下:
K=k+(k-1)(r-1)
(1)
式中:k为原始卷积核的大小;r为扩张率;K为空洞卷积的实际感受野大小。
批量归一化和Dropout层的出现加深了CNN的深度,通常网络越深,训练精度越高。但是随着网络层数的增加,网络参数变得难以优化[12],训练精度反而会下降。深度残差网络是2015年提出的深度卷积网络,其特点是简单高效,并能有效地解决网络深度变深以后的网络性能退化的问题[13]。残差网络通过学习输入到输出的目标函数与原输入的残差量,将残差量与原始输入量相加,得到最终的目标映射函数,若输入变量为x,目标输出的实际映射为H(xl),则残差映射F(xl,Wl)可以定义为:
F(xl,Wl)=H(xl)-xl
(2)
式中:xl为l层的输入量;Wl为l层的权重矩阵。通过“捷径连接”的方式,直接把输入xl传到输出作为初始结果,输出结果为H(xl)=F(xl,Wl)+xl,当F(xl,Wl)=0时,H(xl)=xl。
语音当前的状态,与前后的状态都有关,网络层数越多,丢失的细节信息越多,因此本文引入多尺度特征。图1为一段纯净语音的时频图,图2为加了噪声的语音时频图,两幅图所表示的语音内容相同,横向为时间轴,纵向为频率轴,该段语音有16 s,时频图的时间轴较长。时频图反映了语音的信号强度在不同频段内随时间的变化情况。不同频率中颜色深的地方随着时间的推移,延长成声纹,由图1可以看出,语音信号的能量大多集中在低频,高频能量较少,但高频能量中包含很多语音的细节部分,这些细节部分也会影响语音识别的结果。由图2可知,在噪声背景下,语音时频图的纹理受到了干扰,但是高低频段某些纹理特征和轮廓信息依旧存在,因此模型既要能提取到细节信息,又要提取整体的轮廓信息。本文采用不同大小的卷积核以及不同空洞率的空洞卷积获取语音信号的细节信息和上下文相关性,卷积核越大,感受野越大,并对语音的时间维度和频率维度建模。图3中的scale1和scale2为两个多尺度子空间,scale1的卷积核大小为3,scale2的卷积核大小为5,scale1和scale2各包含两个残差网络,Conv表示卷积层,Max_pool表示最大池化层,箭头所示即为残差结构,残差网络采用“捷径连接”的方式,相同的特征图在两个不同尺度空间下会有不同的表达形式,达到信息互补的目的。因此将这两个尺度空间融合,得到具有较好语义能力特征参数,从低层往高层逐层提取特征,得到全局信息,既可以得到相邻帧之间的相关性,也可以获取不相邻帧之间的相关性。若scale1网络的输出为fs1(x),scale2网络的输出为fs2(x),则融合后网络输出为fs1(x)+fs2(x)。
图1 语音信号的时频图
图2 含噪语音的时频图
图3 多尺度残差深度神经网络的语音识别模型
CTC通常和LSTM以及RNN一起建模,目前主流的语音识别模型都含有LSTM或者RNN,但LSTM和RNN的训练受到计算机计算能力和内存的限制,训练周期较长,不利于参数调整和优化,CNN可借助其强大的并行运算能力大大缩短训练周期。语音识别中常用HMM进行帧对齐,将每一帧数据对齐到HMM状态下[14],这种强制对齐的方法并不合理,因为语音中静音状态并没有对应的标签,而CTC不需要预先将输入和输出强制对齐。
在给定输入序列下X,经过Softmax层输出之后,网络的输出为P(qt|X),qt为t时刻的输出,则标签序列l为所有路径概率总和为:
(3)
式中:Γ(qt)为标签序列的多对一的映射。因为同一个标签序列可能有多条路径与其对应,所以需要去掉路径中的重复的标签和空白标签。qt∈A,t=1,2,…,T,A为加了空白标签“—”的标签集合,输出序列中概率最大的标注序列为:
(4)
CTC的损失函数是所有标签的负对数概率之和,可以通过反向传播训练CTC网络:
H(x)=-logP(l|X)
(5)
本文所用到的模型框架如图3所示,输入为语音的时频特征(500×250),分别输入scale1和scale2两个尺度空间,提取不同尺度的特征,两个尺度空间融合后,将融合后的特征参数输入全连接层。全连接层共2层,第一层有256个网络节点,第二层网络节点的个数为2 667个,加上了一个空白字符。通过Softmax层连接CTC模型,学习率为0.001,batchsize为8,所有卷积层和池化层后都添加了dropout层。CTC在海量训练数据的条件下不再需要语言模型,因此本文的模型直接以汉字为建模单元,构建端到端的语音识别模型。
本文基于THCHS30进行实验,THCHS30数据库是由清华大学发布的中文语音库,有35小时的语音数据,数据库内容大部分来自新闻语料,全部为中文普通话,每个音频16 s左右。将该数据集中10 000句作为训练集,893句作为验证集,2 495句作为测试集。该数据集还提供了含有噪声的语音数据,噪声环境主要是咖啡馆、汽车内噪声和白噪声,可用于模型在不同噪声环境下的性能测试。实验采用的操作系统是Ubuntu 16.04,GPU为Rtx2080ti,实验平台为Tensorflow 3,Python 3.6。
(1) 不同模型的对比。将本文模型与BLSTM-CTC模型、DCNN模型、CNN-LSTM模型进行对比。DCNN模型即scale1和scale2。
BLSTM-CTC模型的输入特征为600×39维的二阶差分MFCC特征参数,其中BLSTM声学模型包含3层隐藏层,第一层和第二层包含共256个前向和后向的LSTM单元,第三层为512个前向和后向的LSTM单元。解码单元CTC模型,batch size设置为8,学习率为0.001。
DCNN1模型的结构采用scale1尺度空间的结构,卷积核大小为3,经过两个残差网络和最后一层池化层后,输入三层全连接层,第一层全连接层有256个网络节点,第二层有512个神经网络单元,第三层有2 667个网络节点,batch size为8,学习率为0.001。DCNN2模型采用scale2尺度空间的结构,卷积核大小为5,全连层结构与DCNN1结构一致。
CNN-LSTM模型结构由三层卷积、三层池化层、两层BLSTM隐藏层、一层全连接层组成。输入特征为600×39的二阶差分MFCC特征参数。卷积核大小为3,池化层选择1×3,只对频率维度进行池化。第一层隐藏层有256个网络节点,第二层有512个神经网络单元,全连接层有2 667个节点。batch size为8,学习率为0.001。
本文提出的语音识别模型的识别率比单一尺度空间、BLSTM网络和CNN-LSTM网络的都高,相对于BLSTM模型,验证集和测试集的识别率都提高9%左右,相对于DCNN1和DCNN2模型,识别率分别提高5%和10%左右,相对于CNN-LSTM网络,识别率提高3%左右。不同模型下的语音识别率如表1所示,只含CNN的语音识别模型每轮的训练时间比BLSTM模型缩短6倍左右,比CNN-LSTM模型缩短4倍左右。
表1 不同模型下的语音识别率
(2) 不同模型的抗噪声性能对比。本文同时还验证不同模型的抗噪声性能,数据集中包含咖啡馆噪声(cafe),汽车噪声(car)和白噪声(white),信噪比为0 dB。将这些噪声加入待识别的语音中,实验结果如表2所示,CNN有一定的抗噪声性能,而本文提出的multi-scale DCNN 模型的抗噪声性能比BLSTM网络、DCNN网络和CNN-LSTM模型都要好,更具有实用性。
表2 不同噪声类型下的语音识别率 %
(3) 低信噪比下的识别率变化。本文还对比不同噪声在低信噪比下的BLSTM、DCNN1、CNN-LSTM模型和本文模型的误码率。由图4-图6可知,在低信噪比下,本文提出的多尺度残差深度神经网络比BLSTM网络的抗噪声性能更加稳定,噪声越强,BLSTM网络的识别率较差并且识别率下降更快,不利于实际生活中的应用。而DCNN网络和CNN-LSTM网络的抗噪声性能比BLSTM网络好,在cafe和car噪声下,变化相对平缓,但是在白噪声下,识别率也下降较快。因此,本文模型具有更好的鲁棒性。
图4 不同信噪比下不同模型的误码率(cafe)
图5 不同信噪比下不同模型的误码率(car)
图6 不同信噪比下不同模型的误码率(white)
本文针对传统语音识别模型训练时间较长以及抗噪声性能较差的问题,提出多尺度残差深度神经网络的端到端语音识别模型。该模型不仅加快网络的训练速度,而且提高语音识别的识别率和抗噪声性能。为了提取更多的上下文信息,还引入空洞卷积和多尺度特征,增大感受野,提升网络的泛化性能,降低过拟合的概率。实验证明,该模型相对于传统的语音识别的模型,有更好的稳定性和实用性。