科学网—语音识别技术发展史
语音识别技术发展史
与机器进行语音交流,让它听明白你在说什么。语音识别技术将人类这一曾经的梦想变成了现实。语音识别就好比“机器的听觉系统”,该技术让机器通过识别和理解,把语音信号转变为相应的文本或命令。
在1952年的贝尔研究所,Davis等人研制了世界上第一个能识别10个英文数字发音的实验系统。1960年英国的Denes等人研制了第一个计算机语音识别系统。
大规模的语音识别研究始于上世纪70年代以后,并在小词汇量、孤立词的识别方面取得了实质性的进展。上世纪80年代以后,语音识别研究的重点逐渐转向大词汇量、非特定人连续语音识别。
同时,语音识别在研究思路上也发生了重大变化,由传统的基于标准模板匹配的技术思路开始转向基于统计模型的技术思路。此外,业内有专家再次提出了将神经网络技术引入语音识别问题的技术思路。
上世纪90年代以后,在语音识别的系统框架方面并没有什么重大突破。但是,在语音识别技术的应用及产品化方面出现了很大的进展。比如,DARPA是在上世界70年代由美国国防部远景研究计划局资助的一项计划,旨在支持语言理解系统的研究开发工作。进入上世纪90年代,DARPA计划仍在持续进行中,其研究重点已转向识别装置中的自然语言处理部分,识别任务设定为“航空旅行信息检索”。
我国的语音识别研究起始于1958年,由中国科学院声学所利用电子管电路识别10个元音。由于当时条件的限制,中国的语音识别研究工作一直处于缓慢发展的阶段。直至1973年,中国科学院声学所开始了计算机语音识别。
进入上世纪80年代以来,随着计算机应用技术在我国逐渐普及和应用以及数字信号技术的进一步发展,国内许多单位具备了研究语音技术的基本条件。与此同时,国际上语音识别技术在经过了多年的沉寂之后重又成为研究的热点。在这种形式下,国内许多单位纷纷投入到这项研究工作中去。
1986年,语音识别作为智能计算机系统研究的一个重要组成部分而被专门列为研究课题。在“863”计划的支持下,中国开始组织语音识别技术的研究,并决定了每隔两年召开一次语音识别的专题会议。自此,我国语音识别技术进入了一个新的发展阶段。
自2009年以来,借助机器学习领域深度学习研究的发展以及大数据语料的积累,语音识别技术得到突飞猛进的发展。
将机器学习领域深度学习研究引入到语音识别声学模型训练,使用带RBM预训练的多层神经网络,提高了声学模型的准确率。在此方面,微软公司的研究人员率先取得了突破性进展,他们使用深层神经网络模型(DNN)后,语音识别错误率降低了30%,是近20年来语音识别技术方面最快的进步。
2009年前后,大多主流的语音识别解码器已经采用基于有限状态机(WFST)的解码网络,该解码网络可以把语言模型、词典和声学共享音字集统一集成为一个大的解码网络,提高了解码的速度,为语音识别的实时应用提供了基础。
随着互联网的快速发展,以及手机等移动终端的普及应用,可以从多个渠道获取大量文本或语音方面的语料,这为语音识别中的语言模型和声学模型的训练提供了丰富的资源,使得构建通用大规模语言模型和声学模型成为可能。
在语音识别中,训练数据的匹配和丰富性是推动系统性能提升的最重要因素之一,但是语料的标注和分析需要长期的积累和沉淀,随着大数据时代的来临,大规模语料资源的积累将提到战略高度。
现如今,语音识别在移动终端上的应用最为火热,语音对话机器人、语音助手、互动工具等层出不穷,许多互联网公司纷纷投入人力、物力和财力展开此方面的研究和应用,目的是通过语音交互的新颖和便利模式迅速占领客户群。(雨田整理)
相关产品
siri
Siri技术来源于美国国防部高级研究规划局所公布的CALO计划:一个让军方简化处理一些繁复庶务,并具学习、组织以及认知能力的数字助理,其所衍生出来的民用版软件Siri虚拟个人助理。
Siri成立于2007年,最初是以文字聊天服务为主,随后通过与语音识别厂商Nuance合作,Siri实现了语音识别功能。2010年,Siri被苹果以2亿美金收购。
Siri成为苹果公司在其产品iPhone和iPadAir上应用的一项语音控制功能。Siri可以令iPhone和iPadAir变身为一台智能化机器人。Siri支持自然语言输入,并且可以调用系统自带的天气预报、日程安排、搜索资料等应用,还能够不断学习新的声音和语调,提供对话式的应答。
GoogleNow
GoogleNow是谷歌随安卓4.1系统同时推出的一款应用,它可以了解用户的各种习惯和正在进行的动作,并利用所了解的资料来为用户提供相关信息。
今年3月24日,谷歌宣布GoogleNow语音服务正式登陆Windows和Mac桌面版Chrome浏览器。
GoogleNow的应用会更加方便用户收取电子邮件,当你接收到新邮件时,它就会自动弹出以便你查看。GoogleNow还推出了步行和行车里程记录功能,这个计步器功能可通过Android设备的传感器来统计用户每月行驶的里程,包括步行和骑自行车的路程。
此外,GoogleNow增加了一些旅游和娱乐特色功能,包括:汽车租赁、演唱会门票和通勤共享方面的卡片;公共交通和电视节目的卡片进行改善,这些卡片现在可以听音识别音乐和节目信息;用户可以为新媒体节目的开播设定搜索提醒,同时还可以接收实时NCAA(美国大学体育协会)橄榄球比分。
百度语音
百度语音一般指百度语音搜索,是百度公司为广大互联网用户提供的一种基于语音的搜索服务,用户可以使用多种客户端发起语音搜索,服务器端根据用户的发出的语音请求,进行语音识别然后将检索结果反馈给用户。
百度语音搜索不仅提供一般的通用语音搜索服务,还有针对地图用户制定的特色搜索服务,后续还会有更多的个性化搜索和识别服务出现。
目前百度语音搜索以移动客户端为主要平台,内嵌于百度的其他产品中,比如掌上百度,百度手机地图等,用户可以在使用这些客户端产品的同时体验语音搜索,支持全部主流的手机操作系统。
微软Cortana
Cortana是WindowsPhone平台下的虚拟语音助手,由游戏《光晕》中Cortana的声优JenTaylor配音,Cortana中文版又名“微软小娜”。
微软对Cortana的描述为“你手机上的私人助手,为你提供设置日历项、建议、进程等更多帮助”,它能够和你之间进行交互,并且尽可能的模拟人的说话语气和思考方式跟你进行交流。此外圆形的图标按钮会随着你手机的主题进行调整,如果说你设置了绿色的主题,那么Cortana就是绿色的图标。
此外,你能够通过开始屏幕或者设备上的搜索按钮来呼出Cortana,Cortana采用一问一答的方式,它只有在你咨询它的时候才会显示足够多的信息。
栏目主持:雨田
《中国科学报》(2014-08-22第14版中国.互联网)语音文字识别基本原理和经典综述
目录0引言1发展历程2基本原理3语言模型3.1n-gram3.2RNN4声学模型的传统模型5声学模型的深度学习模型5.1DNN5.2RNN和LSTM6声学模型的端到端模型6.1CTC6.2Seq2Seq0引言这是北理计算机研究生的大数据课程的汇报作业,我负责这一部分的讲述,故通过整理这个博客来梳理一些下周一的讲演思路。
1发展历程2基本原理我录了一句自己说这句话时的音频,将这一段音频转化为声音的波形图就如下图所示。第一个波峰就是“嗨”字,后面的三个紧凑的波峰也就是剩下的三个字,这很简单。而对这样一个波形图,为进行语音的识别需要经历三个大的步骤,分别是
预处理声音特征提取建立声学模型和语言模型在预处理阶段,首先要做的事情叫做VAD(VoiceActivityDetection),翻译过来就是语音端点检测或者说是静音抑制。指的是从声音信号流里识别和消除长时间的静音期。图中演示的是通过短时能量(绿)和过零率(红)来切割下“嗨大家好”声音的首尾空白。下一步预处理的操作就是分帧。概念其实很简单,就是把刚刚的声音波形图分成一小段一小段,值得注意的是分帧时是要有交叠的;正因为如此,分帧后再展开的声音波形图比原波形图要长而且出现锯齿。预处理阶段最重要的结束之后,再下一步就是声音特征的提取。如图所示的就是将之前我说的那句“嗨,大家好”转化成MFCC特征的矩形方阵。具体转化过程会更加复杂一些,包括但不限于短时傅里叶变换、取倒谱等等。这个程序是github上找到的AcousticFeatureExtraction-master,对于声音特征的提取做的很好。基本的事情处理结束之后,最重要也是最复杂的一步就是声学模型和语言模型的建模了。在这一部分,只简单介绍一下这俩模型什么意思,后续会详细说明不同的模型。如上图的公式所示,其中W表示文字序列,Y表示语音输入。在语音文字识别当中,就是要把语音输入转化为对应的文字序列;而将这句话转化成数学表达,就是(1)式中的条件概率。将(1)通过贝叶斯定理转化成(2),又由于(2)中分母的概率对整个式子影响不大,所以约等于不考虑分母,这样就得到了(3)式。而(3)式当中的两个,就分别是声学模型和语言模型。声学模型是对声学、语音学、环境的变量、说话人性别、口音等的差异的知识表示,即给定文字之后发出这段语音的概率;而语言模型是对一组字序列构成的知识表示,即判定一个文字序列出现的概率。声学模型一般得到语音特征到音素的映射;语言模型一般得到词与词、词与句子的映射。
3语言模型首先说明一下较为好说的语言模型。仍以刚才这段“嗨大家好”举例。当通过声学模型建立出声音对应的发音音素之后,语言模型就要考虑这样一段发音因素对应的文字最大的概率是什么文字。比如说刚出来“hai”之后,对应的就是“嗨”,而不是“害”“还”“海”,因为在语言模型当中,单个“hai”对应“嗨”字的概率最大。其余的也同理。更刁钻一点,同音字问题也要通过语言模型去进行处理。比如说这一段有名的《季姬击鸡记》。为了处理这些问题,在这里介绍两个语言模型。
3.1n-gram仍以这一段为例,对于“haidajiahao”,这一串词是一个个词组成的。好像是废话,但总结成数学表示就是
T是由词序列A1,A2,A3,…AnA1,A2,A3,…AnA1,A2,A3,…An组成的,即使得
P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)P(T)=P(A1A2A3…An)最大
P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An−1)P(T)=P(A1A2A3…An)=P(A1)P(A2|A1)P(A3|A1A2)…P(An|A1A2…An-1)P(T)=P(A1A2A3…An)=P(A1)P(A2∣A1)P(A3∣A1A2)…P(An∣A1A2…An−1)
而最后一行的公式在实际运算中显然是过于苦难和繁琐了。因此,我们要引入马尔科夫假设。
马尔科夫假设:一个item的出现概率,只与其前m个items有关
举个例子来说明的话就是,假设你一直在转圈(原地改变方向),那么你下一刻所处什么方向,只与你现在在什么方向有关,与之前的积累量无关。上面那个圈圈图说明的就是,一个状态到另一个状态建立这种概率连接,它能否从一个状态转移到另一个状态只与当前状态有关,这样就不需要为之前众多的变化而费心了。在语言模型中,以2-gram举例说明,之前的概率就可以简化为
P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An−1)P(T)=P(A1)P(A2|A1)P(A3|A2)…P(An|An-1)P(T)=P(A1)P(A2∣A1)P(A3∣A2)…P(An∣An−1)
3.2RNNRNN(循环神经网络)也是常用的一个语言模型。当把词依次输入到网络中,每输入一个词,循环神经网络就输出截止到目前为止下一个最可能的词。在此不详细展开了。
4声学模型的传统模型传统的声学模型一般基于GMM(高斯混合模型)和HMM(隐马尔可夫模型)。GMM指的是将多个正态分布(高斯分布)的数据进行混合的一种概率模型。在语音识别中,可以通过高斯混合模型将先前得到的声音特征进一步转化为声音的状态。隐马尔可夫模型是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。马尔可夫过程之前提到过,就是当下状态只与前一个或几个状态有关,与再往前的状态无关。之前得到的状态需要通过HMM来判定是否保留或跳转。图中的viterbi是一种找寻有向无环图中最短路径的算法。声音特征再处理得到的状态会构成一个庞大的状态网络,而利用viterbi算法就可以方便的找到状态网络中的最短路径,也就是最终的文字序列。
5声学模型的深度学习模型5.1DNNDNN实际上就是用DNN替换了GMM来对输入语音信号的观察概率进行建模。与GMM采用单帧特征作为输入不同,DNN将相邻的若干帧进行拼接来得到一个包含更多信息的输入向量。相比于GMM-HMM,DNN-HMM具有如下优点:
DNN不需要对声学特征所服从的分布进行假设DNN由于使用拼接帧,可以更好地利用上下文的信息DNN的训练过程可以采用随机优化算法来实现,可以接受更大的数据规模5.2RNN和LSTM语音的协同发音现象说明声学模型需要考虑到语音帧之间的长时相关性,尽管上文中DNN-HMM通过拼帧的方式对上下文信息进行了建模,但是毕竟拼接的帧数有限,建模能力不强,因此引入了RNN(循环神经网络)增强了长时建模的能力,RNN隐层的输入除了接收前一个隐层的输出之外,还接收前一时刻的隐层输出作为当前输入,通过RNN的隐层的循环反馈,保留了长时的历史信息,大大增强了模型的记忆能力,语音的时序特性通过RNN也得到了很好的描述。但是RNN的简单结构在模型训练进行BPTT(BackpropagationThroughTime)时很容易引起梯度消失/爆炸等问题,因此在RNN的基础上引入了LSTM(长短时记忆模型),LSTM是一种特殊的RNN,通过Cell以及三个门控神经元的特殊结构对长时信息进行建模,解决了RNN出现的梯度问题,实践也证明了LSTM的长时建模能力优于普通RNN。
6声学模型的端到端模型6.1CTCCTC(Connectionisttemporalclassification)翻译过来叫做连接时序分类,主要用于处理序列标注问题中的输入与输出标签的对齐问题。传统的语音识别的声学模型训练,对于每一帧的数据,需要知道对应的label才能进行有效的训练,在训练数据之前需要做语音对齐的预处理。采用CTC作为损失函数的声学模型序列,不需要预先对数据对齐,只需要一个输入序列和一个输出序列就可以进行训练。CTC关心的是预测输出的序列是否和真实的序列相近,而不关心预测输出序列中每个结果在时间点上是否和输入的序列正好对齐。CTC建模单元是音素或者字,因此它引入了Blank。对于一段语音,CTC最后输出的是尖峰的序列,尖峰的位置对应建模单元的Label,其他位置都是Blank。
6.2Seq2SeqSequence-to-Sequence方法原来主要应用于机器翻译领域。给定序列X,输出Y,最直白的一种办法就是延伸在机器翻译中所使用的Seq2Seq模型。2017年,Google将其应用于语音识别领域,取得了非常好的效果,将词错误率降低至5.6%。如图所示,Google提出新系统的框架由三个部分组成:Encoder编码器组件,它和标准的声学模型相似,输入的是语音信号的时频特征;经过一系列神经网络,映射成高级特征henc,然后传递给Attention组件,其使用henc特征学习输入x和预测子单元之间的对齐方式,子单元可以是一个音素或一个字。最后,attention模块的输出传递给Decoder,生成一系列假设词的概率分布,类似于传统的语言模型。