语音识别的技术历史悠久,早在上世纪50年代,贝尔研究所就研究出了可以识别十个英文数字的简单系统。从上世纪70年代起,传统的基于统计的HMM声学模型,N元组语言模型的发明,已经使得语音识别技术可以在小规模词汇量上使用。在新世纪伊始,GMM-HMM模型的序列鉴别性训练方法的提出又进一步提升了语音识别的准确率。最近5-10年间,随着深度学习的快速发展,算力的快速增长,数据量的急速扩张,深度学习开始大规模应用于语音识别领域并取得突破性进展,深度模型已经可以在干净标准的独白类音频上达到5%以下的错词率。
近日,机器之心了解到,云从科技的语音识别技术又将现有的错词率进一步降低到3.5%以下,并同时大幅的减少了模型的训练和预测时间。此外,端到端的模型可以轻松的将各种语言揉合在一个模型中,不需要做额外的音素词典的准备,这将大大推动业界技术研究与应用落地的进度。
端到端模型优势
在现在主流的利用深度学习的语音识别模型中仍在存在多种派系,一种是利用深度学习模型取代原来的GMM部分,即DNN-HMM类的模型,另一种则是端到端的深度学习模型。
第一种模型需要先实现HMM结构与语音的对齐,然后才能进一步地训练深度神经网络。除此之外,在训练这一类的模型时,训练样本的标注不仅仅是原本的文本,还需要对文本进一步的拆解成为音素投入训练,这对于标注部分的工作就会造成极大的挑战。在解码的时候,这种模型同样还需要依赖这个发音词典。
端到端的模型旨在一步直接实现语音的输入与解码识别,从而不需要繁杂的对齐工作与发音词典制作工作,具有了可以节省大量的前期准备时间的优势,真正的做到数据拿来就可用。端到端的模型的另一个优点是,更换识别语言体系时可以利用相同的框架结构直接训练。例如同样的网络结构可以训练包含26个字符的英文模型,也可以训练包含3000个常用汉字的中文模型,甚至可以将中英文的词典直接合在一起,训练一个混合模型。此外,最重要的一点是,端到端的模型在预测时的速度更快,对于一个10 秒左右的音频文件,端到端的模型在一块GPU的服务器上仅需0.2秒左右的时间便可给出预测结果。
现在的语音识别问题有如下几个难点:(1)对自然语言的识别和理解;(2)语音信息量大。语音模式不仅对不同的说话人不同,对同一说话人也是不同的,一个说话人在随意说话和认真说话时的语音信息是不同的;(3)语音的模糊性。说话者在讲话时,不同的词可能听起来是相似的;(4)单个字母或词、字的语音特性受上下文的影响,以致改变了重音、音调、音量和发音速度等。端到端的模型由于不引入传统的音素或词的概念,直接训练音频到文本的模型,可以有效地规避上述难点。
云从科技基于端到端的语音识别网络进行了两种方法的探索,一种是基于原有的CNN-RNN-CTC网络的改进,一种是基于CTC loss与attention loss结合机制的网络。两种改进方法在端到端的识别领域中都达到了目前最好的结果。以下是对这两篇论文的技术解读:
1.论文标题:Cascaded CNN-resBiLSTM-CTC: An End-to-End Acoustic Model For Speech Recognition
论文地址:https://arxiv.org/abs/1810.12001
这此论文中,作者基于百度之前提出的Deep Speech 2的模型框架结构,提出了三个改进的点。第一是把循环神经网络中的长短时记忆层(LSTM)变成了双向的残差长短时记忆层(resBiLSTM)。此举可以更好地保留之前卷积神经网络所提取出的音素信息和之后每一个双向的残差长短时记忆层更好的结合。因为循环神经网络中的每一层主要是负责提取句子中的语义信息,但语义信息的理解也和音素信息紧密相关。随着循环神经网络的深入,原本更底层的层很难接收到卷积神经网络所给出的信息,对于复杂的长句子中音素和语义信息的结合较差,新提出的残差网络可以较好地修正这一问题。
第二点是引入了级联的训练结构,即对于第一个网络中难分(分错)的样本进行二次训练。在实验中我们发现,在第一层网络结构中被分错的样本比全部的样本的平均句长多出了11%以上。随着句子的变长,强语法和语义相关的单词会距离更远,那么对于较浅的循环神经网络来说就会更难捕捉到这一个信息。在发现这一区别后,作者在在第二层的级联结构中使用了更深的循环神经网络(7层到13层),但同时缩减了每一层的隐含节点数(对应样本量的减少,防止出现复杂模型的过拟合问题)。下图是对这两点改进后具体的模型图。
最后一点,是作者提出了新的训练方式来提升训练速度。深度学习中的模型一般都会采用随机梯度下降的方式来训练,每一次只训练其实其中一批数据(mini batch)。原来的训练模式是固定批量的大小从一而终。但是对于语音识别这样的问题来说,输入的数据是不定长的,这就会导致训练时,每一批和每一批的数据中最长的那一条是不一样的。为了防止训练时内存溢出,固定批量的方式必然需要迁就数据集中最长的那一个音频。在我们的训练数据集中,最长的音频是最短的音频的10倍左右,这样就会带来在训练短音频时的内存浪费。作者提出一种对全部训练集从低到高排序的方式,每次取排序后的一批音频,之后根据批次内最长的音频片段来实时调整批量的大小,从而提升内存利用率并使得训练时间下降了约25%。在LibriSpeech 960小时的训练数据集上,利用在8块1080Ti上训练一次的时间从24500秒降到18400秒左右,减少25%。且此方法并未因排序失去数据选取的随机性而显得效果变差。
作者在前处理上仍旧采用传统简单的快速傅里叶变换(FFT)来提取频谱特征输入改进后的深度学习网络,并采取了基于统计的N元组语言模型来对模型输出的文本进行解码和修正。选取这两种方法的原因是处理简单且不需要经过复杂的训练。作者提出的语音模型配合简单的前后处理机制仍旧可以取得很好的效果,更进一步证明了语音模型的优势。最终,在语音识别数据集Librispeech上,取得了3.41%的错词率。
2.论文标题:AN IMPROVED HYBRID CTC-ATTENTION MODEL FOR SPEECH RECOGNITION
论文地址:https://arxiv.org/abs/1810.12020
目前比较流行的端到端的语音识别模型主要包括:单独依赖CTC解码的模型,单独依赖attention解码的模型,以及混合CTC与attention共同解码的模型。纯CTC解码通过预测每个帧的输出来识别语音,算法的实现基于假设每帧的解码保持彼此独立,因而缺乏解码过程中前后语音特征之间的联系,比较依赖语言模型的修正。纯attention解码过程则与输入语音的帧的顺序无关,每个解码单元是通过前一单元的解码结果与整体语音特征来生成当前的结果,解码过程忽略了语音的单调时序性。为了兼顾两种方法的优缺点,作者采用混合解码的框架模型。网络结构是卷积层加BiLSTM层的Encoder结构后分别连接基于Attention以及CTC的Decoder结构,由两种解码器共同输出识别结果。
混合模型的Loss计算是CTC-Loss与Attention-Loss做权重相加。作者在实验中发现,在混合模型中CTC权重越低效果会越好。当把CTC-Loss的权重降低时,整体网络在计算反向梯度时由Attention部分得到的梯度会占主要部分,这样的结果就是网络优先朝着优化Attention解码的方向进行参数调整,最后训练得到的CTC解码效果就相对较差。考虑这一点,作者在CTC解码器部分单独增加了一个BiLSTM层,该层不与Attention部分共享,单独依靠CTC-Loss的反向梯度进行优化,从而弥补了CTC权重低带来的不足,使Attention解码效果最优的情况下尽可能提升CTC部分的效果。
在本文中,作者使用了基于子词(subword)的编解码方式。子词是介于字母与单词之间的一种表征方式。由于英文单词中的常常出现不发音的字母,在不同单词中相同字母的发音也千差万别,这就给基于字母的编解码模型带来了不小的麻烦,这种模型也更需要依赖语言模型的修正。基于单词的模型则只能解码出参与训练的已有标签的单词,因而完全无法解决OOV的问题。将文本按照子词分割开来,就可以同时改善以上两种方法中存在的问题。另一方面,作者为了网络更好的适应对子词的解码,使用了smoothing-attention的方法:
通常的attention方法(包括本文使用的Loc-Aware)在计算attention energy中会使用softmax,这样使得attention得分的分布变得比较尖锐,最终从attention得到的特征会集中在某一帧的位置上。和字母级别的解码相比,子词需要相对更宽的上下文特征。作者将attention中的softmax改为sigmoid,使attention得分的分布变得相对平滑,从而使解码器每个LSTM单元的输入特征包含更多的语音上下文特征信息。
最后,作者使用基于14600本书的Librispeech公开语言模型扩充数据集训练了两层LSTM作为语言模型(LM),在语音识别数据集Librispeech上,取得了目前已公开的端到端语音识别网络中的最好效果。目前Espnet在github的模型,使用该扩充语言模型数据集训练的LM后在test-clean的表现为WER=4.0%。相比之下,作者的方法效果提升16.5%。