现代语音识别可以追溯到1952年,Davis等人研制了世界上第一个能识别10个英文数字发音的实验系统,从此正式开启了语音识别的技术发展进程。语音识别发展到今天已经有70多年,它从技术方向上大体可以分为三个阶段。
图1.1所示是1993~2017年在Switchboard上语音识别率的进展情况。从图中可以看出,1993~2009年,语音识别一直处于高斯混合-隐马尔科夫(GMM-HMM)时代,语音识别率提升缓慢,尤其是2000~2009年,语音识别率基本处于停滞状态;2009年,随着深度学习技术,特别是循环神经网络(DNN)的兴起,语音识别框架变为循环神经网络-隐马尔科夫(DNN-HMM),并且使得语音识别进入了神经网络深度学习时代,语音识别精准率得到了显著提升;2015年以后,由于“端到端”技术兴起,语音识别进入了百花齐放时代,语音界都在训练更深、更复杂的网络,同时利用端到端技术进一步大幅提升了语音识别的性能,直到2017年,微软在Switchboard上达到词错误率5.1%,从而让语音识别的准确性首次超越了人类,当然这是在一定限定条件下的实验结果,还不具有普遍代表性。
图1.1 不同时代的语音识别
20世纪70年代,语音识别主要集中在小词汇量、孤立词识别方面,使用的方法也主要是简单的模板匹配方法,即首先提取语音信号的特征构建参数模板,然后将测试语音与参考模板参数一一进行比较和匹配,取距离最近的样本所对应的词标注为该语音信号的发音。该方法对解决孤立词识别是有效的,但对于大词汇量、非特定人的连续语音识别就无能为力。因此,进入80年代后,研究思路发生了重大变化,从传统的基于模板匹配的技术思路开始转向基于统计模型(HMM)的技术思路。
HMM的理论基础在1970年前后就已经由Baum等人建立起来,随后由CMU的Baker和IBM的Jelinek等人将其应用到语音识别中。HMM模型假定一个音素含有3~5个状态,同一状态的发音相对稳定,不同状态间可以按照一定概率进行跳转,某一状态的特征分布可以用概率模型来描述,使用最广泛的模型是GMM。因此,在GMM-HMM框架中,HMM描述的是语音的短时平稳的动态性,GMM用来描述HMM每一状态内部的发音特征,如图1.2所示。
图1.2 GMM-HMM语音识别模型
基于GMM-HMM框架,研究者提出了各种改进方法,如结合上下文信息的动态贝叶斯方法、区分性训练方法、自适应训练方法、HMM/NN混合模型方法等。这些方法都对语音识别研究产生了深远影响,并为下一代语音识别技术的产生做好了准备。自20世纪90年代语音识别声学模型的区分性训练准则和模型自适应方法被提出以后,在很长一段时间内语音识别的发展都比较缓慢,语音识别错误率一直没有明显的下降。
2006年,Hinton提出了深度置信网络(DBN),促使了深度神经网络(DNN)研究的复苏。2009年,Hinton将DNN应用于语音的声学建模,在TIMIT上获得了当时最好的结果。2011年底,微软研究院的俞栋、邓力又把DNN技术应用在了大词汇量连续语音识别任务上,大大降低了语音识别的错误率。从此,语音识别进入DNN-HMM时代。
DNN-HMM主要是用DNN模型代替原来的GMM模型,对每一个状态进行建模,如图1.3所示。DNN带来的好处是不再需要对语音数据分布进行假设,将相邻的语音帧拼接,又包含了语音的时序结构信息,使得对于状态的分类概率有了明显提升,同时DNN还具有强大的环境学习能力,可以提升对噪声和口音的鲁棒性。
图1.3 DNN-HMM模型
简单来说,DNN就是给出输入的一串特征所对应的状态概率。由于语音信号是连续的,不仅各个音素、音节以及词之间没有明显的边界,各个发音单位还会受到上下文的影响。虽然拼帧可以增加上下文信息,但对于语音来说还是不够。而递归神经网络(RNN)的出现可以记住更多历史信息,更有利于对语音信号的上下文信息进行建模。
图1.4 Sequence-to-Sequence方法
随着深度学习的发展,语音识别由DNN-HMM时代发展到基于深度学习的“端到端”时代,而这个时代的主要特征是代价函数发生了变化,但基本的模型结构并没有太大变化。总体来说,端到端技术解决了输入序列的长度远大于输出序列长度的问题。端到端技术主要分成两类:一类是CTC(Connectionist Temporal Classification)方法,另一类是Sequence-to-Sequence方法。
采用CTC作为损失函数的声学模型序列,不需要预先对数据对齐,只需要一个输入序列和一个输出序列就可以进行训练。CTC关心的是预测输出的序列是否和真实的序列相近,而不关心预测输出序列中每个结果在时间点上是否和输入的序列正好对齐。CTC建模单元是音素或者字,因此它引入了Blank。对于一段语音,CTC最后输出的是尖峰的序列,尖峰的位置对应建模单元的Label,其他位置都是Blank。
Sequence-to-Sequence方法原来主要应用于机器翻译领域。2017年,Google将其应用于语音识别领域,取得了非常好的效果,将词错误率降低至5.6%。如图1.4所示。Google提出的新系统框架由三部分组成:Encoder编码器组件,它和标准的声学模型相似,输入的是语音信号的时频特征;经过一系列神经网络,映射成高级特征henc,然后传递给Attention组件,其使用henc特征学习输入x和预测子单元之间的对齐方式,子单元可以是一个音素或一个字;最后,Attention模块的输出传递给Decoder,生成一系列假设词的概率分布,类似于传统的语言模型。
端到端技术的突破不再需要HMM来描述音素内部状态的变化,而是将语音识别的所有模块统一成神经网络模型,使语音识别朝着更简单、更高效、更准确的方向发展。