编者按:在人工智能飞速发展的今天,语音辨认技巧成为很多设备的标配,过去五年间,语音辨认的需求逐渐爆发。然而,目前语音辨认相关的应用及使用场景仍具有局限性,因此,国内外众多企业纷纷开始探索语音辨认的新算法新策略。 本文中,百分点感知智能实验室从技巧发展的角度出发,深入分析了语音辨认技巧不同发展阶段的模型构建和优化,以及未来发展趋势。语音辨认技巧简单的说,就是将计算机接收到的音频信号转换为相应的文字。语音辨认技巧从上个世纪50年代出现,发展到现在已有半个多世纪的历史。经过多轮技巧迭代,语音辨认已经从最早的孤立数字辨认,发展到今天复杂环境下的连续语音辨认,并且已经应用到各种电子产品中,为人们的日常生活带来许多便利。从技巧发展的历史来讲,语音辨认技巧主要经历了三个时代,即基于模版匹配的技巧框架、基于统计机器学习的技巧框架和最新的端到端技巧框架。近年来,得益于深度学习技巧突破性的进展,以及移动互联网的普及带来的海量数据的积累,语音辨认已经达到了非常高的准确率,在某些数据集上甚至超过了人类的辨认能力。随着辨认准确率的提升,研究者们的关注点也从语音辨认的准确率,渐渐转移到了一些更加复杂的问题上,比如多语种混合语音辨认。该问题涉及到多语种混合建模、迁移学习和小样本学习等技巧。对某些小语种来说,由于无法获得足够多的训练样本,因此,如何从小样本数据中构建可靠的语音辨认系统成为一个待解决的难题。针对该问题,百分点科技提出了一系列的算法,针对小语种语音辨认系统构建中出现的训练样本获得困难、文本书写规则复杂、发音单位不统一等问题作了相应的优化。基于这些技巧,百分点科技已经成功研发出数十种小语种语音辨认系统,在支持语种的数量,以及辨认准确率上都处于国内领先地位。接下来的章节中,将重点介绍语音辨认技巧不同发展阶段经历的重要技巧框架,包括传统的HMM-GMM和HMM-DNN,以及最新的端到端方法等。一、GMM-HMM/DNN-HMMGMM-HMM先从GMM-HMM开始说,GMM-HMM基本使用HTK或者Kaldi进行开发。在2010年之前,整个语音辨认领域都是在GMM-HMM里做一些文章,如图一所示。图一 GMM-HMM框架我们的语音通过特征提取后,利用混合高斯模(GMM)来对特征进行建模。这里的建模单位是cd-states,cd-states的具体生成方法如图二所示。
图二 cd-states的生成方法建模单位在GMM-HMM时代,或者DNN-HMM时代,基本没有太多创新,大多使用tied triphone,即senone,下图描述了GMM-HMM的整体过程。
图三 GMM-HMM的整体过程图三展示了基本的训练前准备,此外就是纯训练的过程。纯训练解决的是如何将图三右边的特征向量分配到左边状态序列里的问题。DNN-HMM在2010年前后,由于深度学习的发展,整个语音辨认的框架开始转变成DNN-HMM。其实就是把原来用GMM对特征进行建模,转换成用神经网络去建模。由于神经网络从2010年至今不断发展,各种不同的布局不断出现,也带来了不同的动机。DNN-HMM的基本布局如图四所示。
图四 DNN-HMM的基本布局DNN模型,可以是纯DNN模型、CNN模型或LSTM模型等。整个模型层只是在GMM基础上做替换。在这个时代,模型布局整体上都是各种调优,最经典的模型结果就是google的CLDNN模型和LSTM布局。《Context-DependentPre-Trained Deep Neural Networks for Large-Vocabulary Speech Recognition》是公认的第一篇研究DNN-HMM的论文,文中对比了GMM-HMM跟DNN-HMM的功能,如下表所示。
而后,google、微软等公司在这一算法上不断推进,在模型布局上各种挑战,下面的表格是Alex Graves在《Hybrid speech recognition with deepbidirectional LSTM》里GMM,DNN和DBLSTM的功能对比,该数据集用的是WSJ。
从上述的实验结果中可以看到,相对传统的GMM-HMM框架,DNN-HMM在语音辨认任务上可以获得全面的提升。DNN-HMM之所以取得巨大的成功,通常被认为有三个原因:第一,DNN-HMM舍弃了声学特征的分布假设,模型更加复杂精准;第二,DNN的输入可以采用连续的拼接帧,因而可以更好地利用上下文的信息;第三,可以更好的利用鉴别性模型的特点。二、端到端语音辨认端到端语音辨认,是近年来业界研究的热点,主流的端到端方法包括CTC,RNN-T和LAS,如图五所示。
图五 端到端语音辨认方法CTC传统的模型训练还是比较繁琐,而且特别依赖HMM这套架构体系。真正脱离HMM的是CTC。CTC在一开始是由Hinton的博士生Grave发现的。CTC框架虽然在学习传统的HMM,但是抛弃了HMM中一些复杂的东西。CTC从原理上就解释的比HMM好,因为强制对齐的问题是会存在不确定因素或者状态边界有时是分不清楚的,但HMM必须要求分一个出来。而CTC的好处就在于,它引入了一个blank概念,在边界不确定的时候就用blank代替,用尖峰来表示确定性。所以边界不准的地方我们就可以用blank来替代,而我们觉得确信的东西来用一个尖峰来表示,这样尖峰经过迭代就越来越强,如图六所示。
图六 CTC的工作原理CTC在业界的使用有2个办法,有人把它当作声学模型使用,有人把它当作语音辨认的全部。但目前工业界系统都只把CTC当作声学模型来使用,其动机更好。纯端到端的使用CTC做语音辨认,动机还是不够好。这里说下chain模型,Chain模型的起源来自kaldi。kaldi当时也想做CTC,但发现kaldi体系下CTC动机不好,但CTC的一些思想特别好,后来Dan Povey发现可以在此基础上做一些优化调整,于是就把chain模型调好了。但在kaldi体系里chain模型的动机的确比原来模型的动机要更好,这个在Dan Povey的论文中有解释。CTC时代的改进让语音辨认技巧朝着非常好的方向发展,CTC还有一个贡献就是前面提到的建模单位,CTC把建模单位从原来的cd-states调整为cdphone,或到后面的音节(syllable),或到后面的字级别(char)。因此,端到端的语音辨认系统里就很少用前面细粒度的建模。目前很多公司的线上系统都是基于LSTM的CTC系统。CTC在业界用得最成功的论文是《Fast and Accurate Recurrent Neural NetworkAcoustic Models for Speech Recognition》,论文里探索出来在CTC领域比较稳定的模型布局是5层LSTM的布局。这篇文章从LSTM是单向还是双向,建模单位是cdstate是ciphone还是最终的cdphone等问题进行探究。集中建模单位的比较结果,如下面的表格所示。从表格上可以看到,功能最优的是cdphone的双向LSTM的CTC系统。但是由于双向在线上流式处理会不好处理,所以单向LSTM的功能也是可以接受的。
google还探索了区分度训练sMBR在CTC这套系统下带来了多少的功能提升,结果如下面的表格所示。
此外,google在这一阶段还探索了一套教CLDNN的模型布局,布局如图七所示。
图七 CLDNN的模型布局该模型的整体功能对比如下:
整体CTC阶段,以Alex Graves的论文为主线,论文中从timit小数据集,到最终google上万小时数据集,一步一步验证了CTC算法的威力,引领了语音界的潮流。CTC是语音界一个比较大的里程碑的算法。LAS
图八 LAS模型的整体布局接下来就是注意力机制(attention)。注意力机制天然适合seq2seq的模型,而语音天然就是序列问题。LAS的全称叫做listen, attended and spell,此模型拉开了纯端到端语音辨认架构的序幕,一个LAS模型的整体布局如图九所示。LAS目前应该是所有网络布局里面最好的模型,功能也是最好的,这点毋庸置疑,超过了原来基于LSTM-CTC的baseline。但是LAS要求见到所有的输入,这对流式解码来说是不允许的,这一致命的问题影响了这种算法的推进,也引起了众多研究者的关注。当然最好的办法就是把attention对输入那块改小点,出了一个叫Mocha的算法,该算法以后有机会再做介绍。CTC算法虽然是一个里程牌的算法,但CTC算法也有缺陷,比如要求每一帧是条件独立的假设,比如要想功能好需要外加语言模型。一开始的LAS模型动机也不够好,实验对比的结果如下表所示。
后来google的研究者们经过各种算法演练,各种尝试,最终提出了可流式解码,功能也更好的模型,结果如下表所示。但是严格上来说,google的流式模型也不是LAS模型,如果不考虑流式解码,LAS模型布局肯定是最优的。
RNN-T和LAS模型类似的,还有一个叫RNN-T算法,它天然适合流式解码。RNN-T也是Grave提出的,此算法在2012年左右就提出来了,但是并没有受到广泛关注,直到google把它运用到pixel手机里才开始流行起来。RNN-T相比CTC,继承了blank机制,但对原来的路径做了约束。相比CTC来讲, RNN-T的约束更合理,所以整体功能也比CTC好。但是RNN-T较难训练,一般需要把CTC模型当作预训练模型的基础再进行训练。此外,RNN-T的显存极易爆炸,因此有很多人在改进显存的应用。google在2020 ICASSP里的论文里写着用RNN-T结合LAS,动机超过了基于LSTM-CTC的baseline方案。图九表示了从HMM的路径扩展,到CTC约束的路径,再到RNN-T的路径约束。
图九 HMM、CTC和RNN-T的路径约束RNN-T最初在timit上的模型功能如下表所示。
后来,google在大数据上各种尝试,比如预训练、模型布局优化等,最终功能达到了比CTC好的功能,google的RNN-T模型的布局如图十所示。
图十 google的RNN-T模型的布局google最终在大数据集上验证了功能比基线好。这是一个里程碑,但这些都是Alex Graves工作的延展。由于RNN-T天然具备流式,外加RNN-T模型动机好,google不断的宣传这个模型布局,此模型最终也被google上线到pixel手机上。Transformer/Conformertransformer和conformer是目前功能最好的模型。transformer模型是从NLP借鉴到ASR领域,从ESPnet的论文里证明, transformer模型在各个数据集上动机比RNN或者kaldi的模型都好,如图十一所示。
图十一 transformer模型在各个数据集上动机此外,图十二表示了在librispeech数据集上各个模型的功能对比(错误率),大家可以自己来看,目前最好的系统就是conformer LAS模型。
图十二 在librispeech数据集上各个模型的功能对比(错误率)图片来源于https://github.com/hirofumi0810/neural_sp同样,在google的论文《FastEmit: Low-latency Streaming ASR with Sequence-levelEmission Regularization》里,同样在librispeech上,conformer模型比LSTM或者transformer模型好,如图十三所示。
图十三 conformer模型在librispeech上的错误率最后,为什么要去大家都去研究端到端模型,其实可以从两方面来考虑:第一,端到端模型把原来传统的模型简化到最简单的模型,抛弃了传统的那些复杂的概念和步骤;第二,其实整个端到端模型用很小的模型布局大小就达到原来几十G模型的动机。google论文的原文里写着:In this section, we compare the proposed RNN-T+LAS model (0.18G inmodel size) to a state-of-the-art conventional model. This model uses alow-frame-rate (LFR) acoustic model which emits contextdependent phonemes[11] (0.1GB), a 764k-word pronunciation model (2.2GB), a 1st-pass 5-gramlanguage-model (4.9GB), as well as a 2nd-pass larger MaxEnt language model(80GB) [31]. Similar to how the E2E model incurs cost with a 2nd-pass LASrescorer, the conventional model also incurs cost with the MaxEnt rescorer. Wefound that for voice-search traffic, the 50% computation latency for the MaxEntrescorer is around 2.3ms and the 90% computation latency is around 28ms. InFigure 2, we compare both the WER and EP90 of the conventional and E2E models.The figure shows that for an EP90 operating point of 550ms or above, the E2Emodel has a better WER and EP latency tradeoff compared to the conventionalmodel. At the operating point of matching 90% total latency (EP90 latency + 90%2nd-pass rescoring computation latency) of E2E and server models, Table 6 showsE2E gives a 8% relative improvement over conventional, while being more than400-times smaller in size.但端到端模型真正与业务相结合时,遇到的问题还是很明显,比如:不同场景下模型需要如何调整?遇到一些新词的时候LM如何调整?针对此类问题,学术界和工业界都在寻找新的解决方案。参考资料[1]googleend-to-end speech recogntionhttps://docs.google.com/presentation/d/1RFfws_WdT2lBrURbPLxNJScUOR-ArQfCOJlGk4NYaYc/edit?usp=sharing[2]A Streaming On-Device End-to-End Model Surpassing Server-Side ConventionalModel Quality and Latency :https://arxiv.org/pdf/2003.12710.pdf[3]几个端到端的开源代码地址:espnet,wenet,speechbrain,wav2letter,https://github.com/hirofumi0810/neural_sphttps://github.com/cywang97/StreamingTransformer[4]Towards End-to-End Speech Recognition[5]李宏毅老师的课程:https://speech.ee.ntu.edu.tw/~hylee/dlhlp/2020-spring.html
原创文章,作者:百分点科技,如若转载,请注明出处:https://www.iaiol.com/news/34316