Kaldi语音识别实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1 语音识别技术基础

1.1 语音识别极简史

人类用机器处理自己语音的历史可以追溯到18世纪。在18世纪末、19世纪初,奥匈帝国的发明家Wolfgang von Kempelen设计并打造了一款手工操作的机器,可以发出简单的声音。在19世纪末的时候,美国的发明家Thomas Edison发明了留声机,被认为是人类处理语音历史上的一座里程碑。然而,语音识别,也就是让机器自动识别人类的语音,这个工作其实到20世纪中叶才有了实质性的进展。一般认为,现代语音识别起始的一个重要时间点是1952年贝尔实验室发布了一个叫作Audrey的机器,它可以识别one、two等十个英文单词。

从20世纪50年代到现在也不过70年左右的时间,语音识别的技术及效果却有了翻天覆地的变化。从早期效果极其不稳定的简单的数字识别,到现在效果达到日常生活实用要求的大词汇量连续语音识别,语音识别经历了数次技术革命,每次技术革命都带来了语音识别系统效果的质变。下面简单介绍语音识别发展历史上几个非常重要的时间节点。

1.1.1 语音识别早期探索

与很多技术发展是从模仿人或动物的生理工作原理开始一样,早期的语音识别探索也试图从人如何听懂语音打开突破口。这个阶段的语音识别工作很多都把工作重心放到人类理解语音的各个环节上,并且试图用机器去逐个攻克这些环节,包括词意、句法、语法等。

基于模板匹配的语音识别方法是这个阶段比较成功的方法,其大致原理是:将训练语料中的音频提取声学特征后保存起来作为模板,当有新的音频输入机器的时候,机器会用同样的方式提取声学特征,并且和之前保存的语料特征做比较,如果新提取的特征和已经保存的模板特征比较接近,则认为两者输入的词语是同样的,系统输出模板对应的文字。基于模板匹配的方法可以在一些精心控制的场景(比如环境比较安静、系统开发者自己测试等)下得到不错的识别效果,但是在环境比较复杂,或者说话比较随意的时候,效果往往就不太理想。

1.1.2 概率模型一统江湖

从20世纪70年代开始,一批具有信息论背景的研究人员进入语音识别领域,并且开始将通信工程中常用的概率模型引入语音识别领域。这其中的杰出代表是Frederick Jelinek博士。Frederick Jelinek博士早期在康奈尔大学从事信息论的研究,1972年在学术休假期间,Frederick Jelinek博士加入IBM华生实验室(IBM T.G.Watson Labs)并领导了语音识别实验室。Frederick Jelinek博士深厚的信息论背景使他敏锐地觉察到语音识别并不是一个仿生学问题,而是一个完美的统计学问题。他抛弃了早期语音识别工作中词意、句法、语法等一系列对人类理解语音来说非常重要的概念,转而用统计模型对语音识别问题进行建模。他对此的一个经典解释是:飞机飞行并不需要挥动翅膀(Airplanes don′t flap their wings)。言外之意是,计算机处理人类的语音,并不一定需要仿照人类处理语音的方式,句法、语法这些在人类语言学中很重要的概念,在语音识别中并不见得是决定因素。

虽然用概率模型来解决语音识别问题的思路从20世纪70年代开始就被提出来了,但是直到20世纪80年代,概率模型才逐渐代替老旧的基于模板、语言学等思路的方法,开始走到语音识别舞台的中心。在这个过程中,隐马尔可夫模型(Hidden Markov Model)在语音识别中的应用居功至伟。不同于早期的方法,隐马尔可夫模型使用两个随机过程,即状态转移过程和观察量采样过程,将从声音特征到发音单元的转换过程建模成一个概率问题,通过已经有的语音数据训练隐马尔可夫模型的参数。在解码时,利用相应的参数,估计从输入声学特征转换成特定发音单元序列的概率,进而得到输出特定文字的概率,从而选取最有可能代表某一段声音的文字。隐马尔可夫模型的应用一方面大大减少了语音识别系统对专家(如语言学家)的依赖,从而降低了构建语音识别系统的成本;另一方面,区别于基于模板的一些方法,隐马尔可夫模型可以从更多的语音数据中来估计更好的参数,从而使得相应的语音识别系统在实际应用中的结果更加稳定。

基于统计模型的语音识别方法,或者更确切地说,基于隐马尔可夫模型的语音识别方法,极大地提高了语音识别的准确率和稳定性,为语音识别的商业应用打下了坚实的基础。在接下来的三十多年的时间中,基于隐马尔可夫模型的语音识别方法基本上垄断了语音识别领域,直到2010年左右神经网络模型在语音识别建模中兴起。

1.1.3 神经网络异军突起

确切地说,神经网络模型也是概率模型中的一种。神经网络在语音识别中的应用,其实从20世纪80年代中后期便已经开始。早期神经网络在语音识别系统中的应用,还是以和隐马尔可夫模型配合使用为主,也即后来所说的“混合模型”。在标准的隐马尔可夫模型中,从隐含发音状态输出可观察量的时候,需要对输出的概率分布进行建模。在经典的基于隐马尔可夫模型的语音识别系统中,这个过程一般是用高斯混合模型(Gaussian Mixture Model)来建模的。在“混合模型”中,高斯混合模型被神经网络所代替,由神经网络对输出的概率分布进行建模。这其中使用的神经网络可以是前馈神经网络、递归神经网络等各种神经网络。然而,受到计算资源、训练数据、神经网络本身训练方法等各种因素的影响,神经网络一直没有能够代替高斯混合模型,成为主流语音识别系统的一部分。

在2010年左右,微软的研究人员开始重新审视神经网络在语音识别系统中的应用。他们发现,如果以上下文相关的三音子作为神经网络的建模单元,并且用最好的基于隐马尔可夫、高斯混合模型的语音识别系统生成的对齐数据作为神经网络的训练数据,适当调节隐马尔可夫模型的转换概率,在当时的计算资源和训练数据(几百小时)下,所生成的基于隐马尔可夫模型、神经网络模型的语音识别系统(NN-HMM)的效果会远远好于对应的基于隐马尔可夫、高斯混合模型(GMM-HMM)的语音识别系统的效果。由于是隐马尔可夫模型和神经网络模型同时使用,因此这样的系统当时也被称为“混合系统”或“混合模型”。研究人员进而惊喜地发现,随着计算资源和训练数据的增加,“混合模型”的效果也在不断地变好。对比早期的“大规模”语音识别系统所使用的几百个小时的训练数据,现在成熟的商用语音识别系统往往采用上万小时的训练数据,得益于计算资源的丰富及并行化技术的发展,这样规模的训练往往可以在1~2周内完成。神经网络的引入让语音识别系统的效果有了质的提升,让语音识别技术进入千家万户、成为日常生活中的一部分成为了可能。

在2014年左右,谷歌的研究人员进一步发现,当使用特殊的网络结构时,“混合模型”里面的隐马尔可夫模型其实也可以被替换掉。研究人员使用双向长短期记忆神经网络(Bidirectional long short-term memory network),附之以一个叫作Connectionist Temporal Classification(CTC)的目标函数,可以直接将音频数据转换成文字,而不需要经过传统的基于隐马尔可夫模型的语音识别系统中的中间建模单元(比如基于上下文的三音子建模单元)。由于这种系统直接将音频转换成文字,所以也被称作“端到端”系统。目前,虽然基于隐马尔可夫模型的语音识别系统仍然大量存在于商业系统中,但是同时,随着更多神经网络结构被应用到“端到端”系统中,基于神经网络的“端到端”语音识别系统的效果也一直在提升,科技巨头如谷歌也逐渐将“端到端”系统应用到他们的商业系统中。在可预见的未来,神经网络模型或许可以完全代替隐马尔可夫模型在语音识别技术中的应用。

1.1.4 商业应用推波助澜

技术的发展和商业的应用往往是相辅相成的。一方面,技术本身的进步可以使得商业应用成为可能,或者增加商业应用的价值;另一方面,商业的应用可以为技术的发展提供更多的资源,从而推动技术的进步。语音识别技术从最初的探索到目前进入千家万户的经历,完美地阐述了这个过程。

得益于20世纪70年代概率模型的发展,以及20世纪80年代隐马尔可夫模型的大规模应用,在20世纪80年代末、90年代初,语音识别技术在一些可控的场景(比如安静的朗读场景)下已经初步进入商用门槛。1990年,Dragon Systems公司发布了第一款语音识别商用软件Dragon Dictate。Dragon Dictate使用了当时新兴的隐马尔可夫模型,但是受限于计算机的算力,Dragon Dictate并不能自动对输入的语音分词,因此用户在说出每个单词后都必须停顿,然后让Dragon Dictate转写。尽管如此,Dragon Dictate的售价依然高达9000美元。7年之后,1997年,Dragon Systems公司推出了Dragon Dictate的后续版本Dragon NaturallySpeaking。这个版本已经可以支持连续语音输入,1分钟可以处理大约100个单词,但是为了得到更好的效果,需要用户提供大约45分钟的语音数据对模型调优。Dragon NaturallySpeaking的售价也由其前任的9000美元下降到大约700美元。值得一提的是,经过一系列的合并与收购操作之后,Dragon NaturallySpeaking产品及其品牌最终被在语音识别领域大名鼎鼎的Nuance Communications公司获得,其后续版本至今仍在销售。

经过20世纪90年代的商业验证,语音识别技术在21世纪初期持续发展,识别率也稳步攀升。语音识别技术逐渐进入当时主流的操作系统,如Windows Vista、Mac OS X等,作为键盘和鼠标输入的备选方案。然而,在20世纪第一个10年中的绝大部分时间里,语音识别技术的用户使用率都非常低,究其原因,还是因为不够准确、不够简单,使用成本相对于键盘和鼠标的使用成本更高。这个局面直到2008年末才有改观。2008年11月,谷歌在苹果手机上发布了一个语音搜索的应用,让用户可以用语音输入搜索指令,然后在谷歌自己的搜索平台上进行搜索。区别于Dragon NaturallySpeaking等商业的语音识别系统在本地机器上处理语音数据,谷歌的语音搜索应用选择将音频数据传输到谷歌的服务器进行处理,依托谷歌强大的算力,可以使用非常复杂的语音识别系统,从而大大提升了语音识别的准确率。同时,由于苹果手机上屏幕键盘比较小,输入不方便,语音输入的用户体验大大超过了键盘输入的用户体验,语音识别的用户使用率开始节节攀升。

智能手机似乎是为语音识别量身定制的一个应用场景。2010年,语音助手Siri作为一个独立的应用出现在苹果手机上,苹果公司迅速收购了这个独立的应用,并于2011年在苹果手机iPhone 4S上正式发布了默认的语音助手Siri。Siri的发布在语音识别技术的应用上具有里程碑的意义:成千上万的用户开始知道并且逐渐使用语音识别技术。值得一提的是,语音识别开源软件Kaldi于2009年在约翰霍普金斯大学开始开发,与谷歌语音搜索应用、苹果语音助手Siri的发布处于同一个时期。

谷歌语音搜索应用和苹果语音助手Siri的发布,一方面引导了用户,让用户在日常生活中逐渐接受了语音识别技术;另一方面,也为语音识别技术的发展积累了海量的用户数据。同一时期,神经网络被再度考虑应用到语音识别技术中,神经网络的训练需要海量的计算能力和用户数据,科技公司如谷歌、苹果、微软在公司发展早期所积累的计算能力,以及他们通过语音搜索、语音助手等应用所积累的海量用户数据,为神经网络在语音识别中的应用打下了坚实的基础。这些新的数据和新的模型被反馈回语音识别技术中,进一步推动了语音识别技术的发展。

2014年,亚马逊发布了一个带有语音助手的智能音箱Echo,将语音识别技术从近场语音识别推向了远场语音识别。不同于谷歌的语音搜索应用和苹果的语音助手Siri,亚马逊的智能音箱Echo并不需要用户贴近麦克风说话。相反,用户在家里任何位置说话,语音助手都可以正确地处理语音并且响应。亚马逊的Echo将语音交互的体验又推上了一个台阶。继亚马逊之后,国外科技巨头如谷歌、苹果,国内科技巨头如百度、阿里巴巴、小米,都纷纷推出了自己的带语音助手的智能音箱,语音识别开始进入百花齐放、百家争鸣的时代。语音识别技术也由最初只能在可控场景下勉勉强强地工作,发展到现在可以在非常真实的场景下非常稳定地工作。