陈 戈,谢旭康,孙 俊,陈祺东
江南大学 人工智能与计算机学院,江苏 无锡 214122
自动语音识别系统(automatic speech recognition,ASR)广泛应用到许多产品中,来支持各种业务应用程序,比如手机助手、智能家居、客服机器人、会议记录等,已经成为生活中不可或缺的一部分。传统的ASR系统通常由声学模型、发音词典、语言模型三部分构成,构建和调整这些单独的组件通常较为复杂[1-2]。近些年来,随着计算能力快速发展以及数据资源的急剧增长,将传统语音识别三个模块融合一体的端到端(end-to-end,E2E)ASR 系统取得显著的进展。不同于前述的混合架构,E2E模型只需要音频和对应的文本标签,在一个模型中通过训练学习语音到文字的映射,可以直接将语音输入转换为字符序列输出,大大简化了训练过程。目前流行的E2E语音方法主要基于以下三种模型构建:连接时序分类(connectionist temporal classification,CTC)[3-4]、基于注意力的编解码器(attention based encoder decoder,AED)[5-6]和换能器(transducers)[7-8]。这些深度学习模型易于搭建、调优,在某些应用场景方面的识别率都超过了基于传统语音识别方法的模型[5],还可以将多个模型进行灵活的组合,利用不同基础模型的优点来达到更好的效果[9-10]。
基于CTC 构建端到端声学模型,无需时间维度上帧级别对齐标签,极大地简化了声学模型训练流程。Graves 等[3]首次构建了神经网络连接时序分类(neural network CTC,NN-CTC)声学模型,并验证了对于声学建模的有效性;Hannun等[11]采用了带有双向递归层的5层循环神经网络(recurrent neural network,RNN),经过CTC 损失训练以及语言模型来纠正,在Switchboard 数据集[12]上获得了当时最好的结果。同时他们还提出了一些优化方案。Amodei 等[4]在这基础上,使用有13 个隐层(包含卷积层)的模型取得了更好的结果。Lee等[13]提出了中间CTC损失来规范CTC训练并提高了性能。
基于自注意力的Transformer 体系结构[14]由于能够捕获长距离交互和高训练效率而被广泛用于序列建模。但Transformer 在提取长序列依赖的时候有效,而提取细粒度的局部特征图案的能力却比较弱。文献[15]假设全局和局部相互作用对参数有效性都很重要,擅长提取局部特征,但需要更多的层或者参数量去捕捉全局信息的卷积神经网络(convolutional neural network,CNN),提出了一种新的自我注意和卷积的组合Conformer,实现自我注意学习全局交互作用,而卷积有效地捕获基于相对偏移的局部相关性。
Chan等在文献[16]中提出了LAS(listen,attend and spell),与之前的方法不同,LAS在标签序列中不做独立性假设,也不依赖于隐马尔可夫模型(hidden Markov model,HMM)。LAS 同样基于具有注意力的序列到序列学习框架。它由一个编码器RNN作为听者(listener),一个解码器RNN作为拼写者(speller)。listener采用金字塔型RNN,将低级语音信号转换为高级特征。speller使用注意机制[5-6]指定字符序列的概率分布,将这些更高级别的特征转换为输出标签[9,17]。但前人的工作尚未探索基于最先进的Conformer模型[15]作为listener所带来的效果。
基于以上内容,本文首先探索了不同编解码器组合而成的LAS语音识别系统的性能,对比了不同编解码器结构下语音识别的准确率;其次,以Conformer编码器结合LAS 模型提出了基于Conformer 的LAS 语音识别模型(Conformer-LAS);为进一步提高语音识别准确率以及加快模型训练收敛速度,添加CTC解码器联合训练,并加入文献[14]中提出的中间层CTC 损失作为子任务辅助训练,提出Conformer-LAS-CTC 语音识别模型;最后,基于Aishell-1[18]数据集开展语音识别研究,对比不同模型的实验效果,其实验结果验证了本文提出的Conformer-LAS-CTC语音识别模型的先进性。
由Gulati等[15]提出的Conformer对比文献[9]将卷积和自我注意相结合,自我注意学习全局交互作用,而卷积有效地捕获基于相对偏移的局部相关性,从而获得了比单独使用卷积或自我注意更有效的结果。Conformer Encoder 首先使用卷积子采样层处理输入,然后使用大量的Conformer Block代替文献[19-20]中的Transformer块来处理输入。图1[16]左边展示了Conformer 编码器整体架构,右边展示了Conformer Block具体结构。
图1 Conformer编码器模型架构Fig.1 Conformer encoder model architecture
其中Conformer Block 是由前馈模块(Feedforward Module)、多头自注意模块(Multi-Head Self-Attention Module)、卷积模块(Convolution Module)三个模块组成,Conformer Block前后各有一个前馈层,多头自注意力模块和卷积模块被夹在中间,并且前馈层采用半步残差连接,每个大模块后面跟着层归一化(Layernorm),每个模块上都采用了残差单元。通过这种结构,将卷积和Attention串联起来达到增强的效果。
采用的多头自注意模块中,还集成了Transformer-XL[21]的一项重要技术,即相对正弦位置编码方案。相对位置编码使得自我注意模块在不同的输入长度上具有更好的泛化能力,并且产生的编码器对话语长度的变化具有更强的鲁棒性。
卷积模块包含一个扩展因子为2的逐点卷积,通过GLU激活层投影通道数,然后是一维深度卷积,卷积后接Batchnorm和swish激活层。
在Conformer Block中,前后都部署了相同的Feedforward Module,每个FFN 都贡献一半的值,称为半步FFN。在数学上,对于第i个Conformer Block 的输入xi,输出hi计算公式如下:
其中,FFN 是指前馈模块,MHSA 是指多头自注意力模块,Conv是指卷积模块,Layernorm表示层归一化,每个模块间都使用残差连接。
LAS[17]模型包含了编码器listener、解码器speller 和一个注意力网络,大致模型架构如图2所示。
图2 LAS模型架构Fig.2 LAS model architecture
图2 中listener 是声学模型的编码器,执行编码操作,这个操作将输入声学序列x=(x1,x2,…,xT)转换为高层次的表示h,其中高级别特征序列h的长度可以和输入声学序列x一样,或者得到下采样后的短序列。
本文探索了BLSTM、Transformer、Conformer三种不同的模型结构作为listener对整体语音识别模型的影响。
speller是一个基于注意力机制的解码器,在每个输出步骤中,转换器都会根据之前看到的所有字符生成下一个字符的概率分布,从而得到输出序列y的概率如下:
在每个时间步t,通过注意力机制计算输出对编码器特征h的条件依赖。注意力机制是当前解码器隐藏状态和编码器输出特征的函数,通过以下机制将编码器特征压缩为上下文向量ct。
其中,向量vT、ba,以及矩阵Wh、Wd都是经过学习得到的参数;dt表示解码器在时间步数t的隐藏状态。然后对uit进行softmax,得到attention分布:
利用αit通过对hi加权求和得到相应的上下文向量:
每一时刻,用于捕捉先前输出上下文的解码器隐藏状态dt经以下方式得到:
其中,dt-1是上一个隐藏状态,是通过yt-1学习得到的嵌入层向量。在t时刻,输出yt的后验概率如下:
其中,Ws和bs是可学习参数。最后,模型损失函数定义为:
连接时序分类(CTC)在标注符号集中加入了一个空白符号(blank),它意味着此帧没有预测值输出。因而在模型的预测输出中就包含了很多空白符号,一个音素对应的一整段语音中只有一个尖峰被识别器确认,其他都被识别为空白,结果相当于自动切分了音素边界,实现了将空白符号和连续出现的状态进行消除,得到最终预测的字符序列。
在给定输入序列h下,经过Softmax层输出之后,网络的输出为P(qt|h),qt为t时刻的输出,则标签序列l为所有路径概率总和为:
式中,Γ(qt)为标签序列的多对一的映射。因为同一个标签序列可能有多条路径与其对应,所以需要去掉路径中的重复的标签和空白标签。qt∈A,t=1,2,…,T,A为加了空白标签“-”的标签集合,输出序列中概率最大的标注序列为:
CTC的损失函数是所有标签的负对数概率和,可以通过反向传播训练CTC网络:
为了实现更好的语音识别模型,本文采用Conformer模型作为编码器(listener),LAS 模型的Attention and Spell 部分与CTC 模型联合解码,共同构造端到端的Conformer-LAS-CTC语音识别系统。图3给出了该模型架构。
图3 Conformer-LAS-CTC语音识别模型Fig.3 Conformer-LAS-CTC speech recognition model
它包括三部分,一个共享编码器、一个CTC解码器和一个注意力解码器。共享编码器由N个Conformer[16]编码器层组成。CTC解码器由线性层和对数softmax层组成,CTC 损失函数应用于训练中的softmax 输出。LAS解码器结构在第1.2节中已详细介绍。
和其他编码器模型的对比实验中,Conformer 都实现了最好的效果。其中卷积块在效果上最为重要,两个半步FFN 的效果也优于只有一个FFN 的结构。在多头自注意力机制中集成相对正弦位置编码,即使输入长度不同,自我注意模块也具备很好的泛化能力和更强的鲁棒性。因此在本文提出的模型中,使用Conformer 编码器将输入的帧级别声学特征x=(x1,x2,…,xM)映射到一种序列高级表示(h1,h2,…,hU)。
LAS解码器则通过使用注意力机制[14-16]指定字符序列的概率分布,相较于其他端到端模型,LAS 网络生成字符序列,而不对字符之间进行任何独立假设。这也决定了该模型解码会带来更好的精确度。在本文提出的结构中,采用Conformer编码器与LAS解码器联合的方法,解码器将已经生成的文本(y1,y2,…,yS-1)联合隐藏状态(h1,h2,…,hU)进行注意力解码,将这些更高级别的特征转换解码,最终生成目标转录序列(y1,y2,…,yS)。
因为CTC可以被视为一种能够直接优化输入序列与输出目标序列似然度的目标函数,在此目标函数下,CTC在训练过程中自动学习并优化输入、输出序列的对应关系,所以本文结构加入音素级别CTC 解码器辅助训练。
在残差网络正则化技术中,随机深度通过随机跳过一些层来帮助训练非常深的网络,但由于集成策略,它对正则化低层无效。受此启发,在CTC 训练中跳过中间层之后的所有层,加入中间CTC损失(InterCTCloss)[13]作为辅助任务来诱导子模型。训练依赖于较低层的子模型可以规范整个模型的较低部分,从而进一步改善CTC的性能。
本文考虑具有CTC 损失函数的N层编码器,由于子模型和完整模型共享较低的结构,通过获得模型的中间表示以计算相应的CTC 损失。与完整模型一样,对子模型同样使用CTC损失:
CTC 可以学习声学特征和标签序列之间的单调对齐,这有助于编码器更快地收敛;基于注意的解码器可以学习目标序列之间的依赖关系。因此,将CTC 和注意损失相结合不仅有助于基于注意的解码器的收敛,而且使混合模型能够利用标签依赖性。
本文模型使用CTC和LAS解码器联合优化模型参数,同时加入中间层音素级别CTC损失,用于正则化较底层参数,以进一步提高模型性能,因此在训练过程中定义损失函数如下:
其中,CTCloss、InterCTCloss、Attloss分别是CTC 损失、中间层CTC 损失与Attention损失,λ和μ是两个超参数,用于衡量CTC、中间层CTC与Attention权重。
本文实验使用的数据集为希尔贝壳开源的178h数据集(Aishell-1)[21],采样率16 kHz。该数据集包括400位来自中国不同口音区域的发音人,语料内容涵盖财经、科技、体育、娱乐、时事新闻。其中按无交叠原则划分为训练集、验证集以及测试集,训练集120 418 条音频,验证集14 331条音频,测试集7 176条音频。
本文实验所采用的硬件配置为Intel®CoreTMi7-5930K 处理器,32 GB 运行内存,GPU 显卡为NVIDIA GeForce GTX TITAN X;软件环境为64位Ubuntu18.04操作系统上搭建的Pytorch深度学习环境。
本文实验中,使用80维FBank(filter banks)作为输入特征,其中帧长为25 ms,帧移为10 ms。在训练时使用Adam[22]优化器,并使用文献[19]中的学习率自适应变化策略,其中热身步数为2.5×104,最高学习率为0.001。本文实验对于训练集音频应用变速0.9、1.1来扩充数据集[23],以及使用Google 提出的SpecAugment[24]来随机掩盖时域频域的一部分信息,其中掩盖参数为F=27,T=100。在音频特征输入部分使用两个2D 卷积神经网络(CNN)模块,每个模块都有两个卷积神经网络、批次归一化层(BatchNorm2d)以及ReLu 激活函数,每个CNN都有32个滤波器组,每个滤波器内核大小为3×3,步长为1。然后接二维最大池化层(2D-MaxPool),内核大小为2×2,步长为2,然后再通过线性层(Linear)输出为256 的维度,最后再使用2 个核大小为2,步长为2 的一维最大池化层(1D-Maxpool)进行下采样,减少语音特征冗余信息。主体网络结构是LAS,listen 使用基于Conformer的Encoder结构,参数配置为多头注意层使用d_model=256,h=4,前馈神经网络层d_ff=1 024,卷积模块中Pointwise CNN 输入通道为256,输出为512,卷积核大小为1,Depthwise CNN 输入通道为256,输出通道为256,卷积核大小为15,其中使用Swish激活函数[25],每个模块之前都使用了Layernorm 和残差连接来加速模型训练收敛,使用每层Dropout比率为0.1来提高模型鲁棒性。在编码器中间层,使用了基于音素级别的CTC loss(权重为0.1)来辅助训练,attend 中利用局部注意力(local-attention)来关注编码器输出的信息,spell 利用LSTM 来解码出信息,其中输入维度为1 024,训练中使用Dropout,比率为0.3。本文所有的实验结果都是在无外部语言模型和超参数优化的情况下得到的。
本文首先在Aishell-1 数据集上验证了所提出的Conformer-LAS,以及使用音素级别中间层CTC 损失(权重为0.1)辅助训练的Conformer-LAS-CTC 效果,并与基线模型以及其他编解码器组合模型的实验效果进行对比,如表1所示。使用字错率(character error rate,CER)作为评判标准,所有的评估结果都四舍五入保留至小数点后2位。
表1 不同编解码器在Aishell-1上的实验结果Table 1 Experimental results of different encoder-decoder on Aishell-1 单位:%
从表1中可以看出:
(1)在解码器都采用LAS模型时,提出的Conformer-LAS-CTC 模型相对于以BLSTM 为编码器的模型字错率相对降低了19.52%,相对于Transformer 编码器模型更是相对降低了46.74%。
(2)使用音素级别中间CTC 损失辅助训练的Conformer-LAS-CTC(+Inter CTC)模型获得了最优效果,相对于Conformer-LAS-CTC模型在测试集上又获得了2.11%的提升。
为了更好地体现各模型之间的差异,本文在训练集中每隔1 000 步选取一个损失值,各模型在训练集上的损失曲线如图4所示;在验证集中选取前70 epoch,训练过程的识别字错率(CER)曲线如图5所示。
图4 训练过程损失Fig.4 Loss during training
图5 验证集上字错率Fig.5 Character error rate of verification set
从图4训练过程损失曲线中可以看出,在最初的0~10 000 步中,Conformer-LAS-CTC 就已经体现出优势,相比Transformer-LAS 和Conformer-LAS 模型的loss 曲线,其斜率更大,下降更快,在10 000步之后Conformer-LAS-CTC相比于BLSTM-LAS模型则更加平稳,这意味着Conformer-LAS-CTC 模型相比于其他模型可以快速且稳定地训练出loss值。从图5验证集上字错率曲线中可以看到,随着迭代次数的增加,模型逐渐趋于收敛,字错率最终都稳定在一个固定范围内,Conformer-LAS和Conformer-LAS-CTC的字错率都明显低于BLSTM-LAS模型和Transformer-LAS。其中Conformer-LAS-CTC 采用Conformer-LAS 编解码器学习目标序列之间的依赖关系,并采用CTC辅助加快收敛,在训练集上能学到更多的信息,模型泛化性能和准确率都得到了提升。
本文还将所提出的模型与传统语音识别方法以及近两年主流的端到端模型在Aishell-1 上的效果进行了对比,结果如表2所示。
表2 不同声学模型在Aishell-上的实验结果Table 2 Experimental results of different acoustic models on Aishell-1 单位:%
从表2 中可以看出,相比于其他端到端模型,本文提出的模型也进一步降低了字错率,这清楚地证明了所提出的Conformer-LAS-CTC模型的有效性。
为了进一步验证本文提出的模型性能,还探索了不同解码层数对语音识别效果的影响,控制LAS解码器中所采用的LSTM层数分别为1层、2层、3层,将获得的实验结果进行对比,结果如表3所示。
表3 不同解码层次实验结果Table 3 Experimental results of different model levels 单位:%
从表3 中可以看出,随着spell 层数增加,语音识别模型在测试集上的字错率逐渐下降,由此得出更多的解码器层将有利于获得更好的识别效果。本文提出的模型在组合3层解码层时达到了4.54%的错误率。
本文提出了Conformer-LAS-CTC 声学模型用于端到端语音识别。研究了不同编解码器组合的识别效果,证明了Conformer编码器与LAS解码器组合,并添加音素级别CTC 辅助解码,引入中间CTC 损失联合训练。该模型在Aishell-1 数据集上显示出最好的性能。本文还对比了传统语音识别模型和其他端到端模型,验证了Conformer-LAS-CTC 声学模型的先进性。该模型在Conformer Decoder 具有3 层LSTM 网络时达到了字错率4.54%的最佳性能。未来的研究中会探索不同的超参数对模型的影响,以及研究融合外部语言模型解码提升模型的鲁棒性。