什么是语音识别
语音是人类最朴素的交互方式。不止是人与人之间,动物直接也都是语音交流,或者说语音交流是文字交流的前奏,文字是对语音的记录。现在的人机交互方式还是通过鼠标键盘,用机器语言来交流,不管是C还是C++,抑或是Java、php,或者是现在机器学习里用的最广的pathyon语言,都是人机交互的的介质。我们知道1642年法国哲学-数学家Blaise Pascal 发明了世界上第一台手摇式机械式计算机,利用齿轮传动原理制成,能做加减法。1822年英国科学家巴贝奇(C.�Babbage)制造出了第一台差分机,它可以处理3个不同的5位数,计算精度达到6位小数。直到1886年:美国人Dorr E. Felt (1862-1930), 制造了第一台用按键操作的计算器。
1969年Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行 "星际旅行(Space Travel)" 游行,在 8 月份左右趁着其妻子探亲的时间,用了 1 个月的时间,使用汇编写出了 Unix 操作系统的原型。1973年4月,第一个可操作的Alto电脑在Xerox PARC完成。Alto是第一个把计算机所有元素结合到一起的图形界面操作系统。它使用3键鼠标、位运算显示器、图形窗口、以太网络连接。1981年7月,Xerox推出Star系统,它是Alto的商用版本。特点:双击图标技术、多窗口、对话框概念、1024*768的分辨率。
1983年,微软宣布它为IBM PC设计的Windows程序,不过这个系统到1985年才发布。特点:多窗口、可改变大小窗口。1984年9月,Digital Research针对8086和DOS计算机推出GEM icon/desktop用户界面系统,这个系统稍后演变为AtariST。1985年8月,微软最终发布第一个Windows版本。1987年,微软发布第二个Windows版本,V2.03。1990年5月,微软发布Windows 3.0。1992年3月,微软推出Windows 3.1,1995年8月24日,微软发布Windows 95。1998年7月25日,微软发布Windows 98。2000年2月17日,微软发布Windows 2000,2001年10月25日,微软发布Windows XP,直至2015年7月29日Windows 10正式发布,2018年5月15日罗永浩在鸟巢发布要改变世界的革命性产品:TNT工作站。总结发现计算机演化过程是趋人性化进化的。所以说未来应该是越来越多的东西可以语音操作。
图2-18计算机交互演化方向
语音识别技术即AutomaticSpeechRecognition(简称ASR),语音识别就是让机器能够“听懂”人类的语言,理解语言中的内在含义,并能做出正确的回答货操作就成为了人们追求的目标。我们都希望像科幻电影中那些智能先进的机器人助手一样,在与人进行语音交流时,让它听明白你在说什么。语音识别技术将人类这一曾经的梦想变成了现实。语音识别就好比“机器的听觉系统”,该技术让机器通过识别和理解,把语音信号转变为相应的文本或命令。
语音识别原理及流程
语音识别,就是将一段语音信号转换成相对应的文本信息,处理过程基本上分为三步,第一步对声波信号进行处理,得到语音特征,第二步是通过语音特征识别出音节;第三步根据音节查询字典合成完整的语句。搭建一套语音识别系统主要包含特征提取、声学模型,语言模型以及字典与解码四大部分,对所采集到的声音信号进行滤波、分帧等音频数据预处理工作,将需要分析的音频信号从原始信号中合适地提取出来;特征提取工作将声音信号从时域转换到频域,为声学模型提供合适的特征向量;声学模型中再根据声学特性计算每一个特征向量在声学特征上的得分;而语言模型则根据语言学相关的理论,计算该声音信号对应可能词组序列的概率;最后根据已有的字典,对词组序列进行解码,得到最后可能的文本表示。
图2-19语音识别流程图
预处理:作为语音识别的前提与基础,语音信号的预处理过程至关重要。在最终进行模板匹配的时候,是将输入语音信号的特征参数同模板库中的特征参数进行对比,因此,只有在预处理阶段得到能够表征语音信号本质特征的特征参数,才能够将这些特征参数进行匹配进行识别率高的语音识别。
特征提取:完成信号的预处理之后,随后进行的就是整个过程中极为关键的特征提取的操作。将原始波形进行识别并不能取得很好的识别效果,频域变换后提取的特征参数用于识别。
声学模型:声学模型是语音识别系统中非常重要的一个组件,对不同基本单元的区分能力直接关系到识别结果的好坏。语音识别本质上一个模式识别的过程,而模式识别的核心是分类器和分类决策的问题。
字典:字或者词与音素的对应,简单来说,中文就是拼音和汉字的对应,英文就是音标与单词的对应;
语言模型:语言模型主要是刻画人类语言表达的方式习惯,着重描述了词与词在排列结构上的内在联系。在语音识别解码的过程中,在词内转移参考发声词典、词间转移参考语言模型,好的语言模型不仅能够提高解码效率,还能在一定程度上提高识别率。语言模型分为规则模型和统计模型两类,统计语言模型用概率统计的方法来刻画语言单位内在的统计规律,其设计简单实用而且取得了很好的效果,已经被广泛用于语音识别、机器翻译、情感识别等领域。
解码:就是通过声学模型,字典,语言模型对提取特征后的音频数据进行文字输出;
好的语音识别系统还会结合语义,仔细分析上下文的相互联系,对当前正在处理的语句进行适当修正。使得语句更为通顺。
熟悉语音识别需要哪些知识储备
语音识别的发展史
1960年代,语音识别领域引入了人工神经网络。苏联的研究者Vintsyuk提出了用Dynamic Programming(动态规划算法)实现Dynamic Time Warp(动态时间规整),该技术在小规模词语环境下取得了很大的成功,一度成为自动语音识别技术中的主流。上世纪70年代,卡内基梅隆大学的李开复将隐马尔可夫模型在语音识别中进行了应用,实现了第一个基于HMM的大词汇量的语音识别系统Sphinx,对此后的语音识别技术产生了持续的影响。到了80年代,语音识别的研究重心从孤立词的识别转向连续词汇,主要是在孤立词的基础上,通过单个词进行模式匹配实现。并且,语音识别技术的重心从模式匹配的方案逐渐转移到了统计模型的方法上来,尤其是基于隐马尔可夫模型的方案得到了长足的发展。在2010年之前,基于隐马尔可夫模型的高斯混合模型(GMM-HMM模型)通常代表着最先进的语音识别技术,这类的模型通常采用的特征提取算法是梅尔频率倒谱系数(即MFCC)算法,常用的还有fBank等特征提取算法。而人们也开展了很多研究工作来模仿人类听觉过程,后来通过引入DNN自动学习特征表示,直接取代GMM。深度学习还可以应用于给传统的HMM模型提供强大的具有判别性的特征。DNN和HMM结合的语音识别系统,大大降低了识别错误率。2010年以来,随着大数据和深度学习的发展,CNN、RNN、LSTM和GRU等网络结构也应用到语音识别中,使得语音识别技术取得了又一次巨大的突破。连接时序分类(Connectionist Temporal Classification, CTC)方法,端到端(End-to-End)结构模型,和DFCNN、Deep Speech、WaveNet、DFSMN等模型的出现,将语音识别的准确率一次又一次地推向巅峰。大多数的语音识别系统,目前仍然使用基于概率统计的N元语言模型,和相关变体模型。近几年来,残差网络(ResNet)、注意力机制(Attention mechanism)和RNN Transducer的出现,又将语音识别技术带领到发展的新阶段。当前,国内外几种主流的语音识别系统的准确率均超过了90%,有的甚至超过了95%。其中,85%准确率是评价一个语音识别系统是否可实际使用的分水岭。
2006年 Hinton]提出使用受限波尔兹曼机(restricted Boltzmann machine,RBM)对神经网络的节点做初始化,即深度置信网络(deep belief network,DBN)。DBN解决了深度神经网络训练过程中容易陷入局部最优的问题,自此深度学习的大潮正式拉开。
2009年,Hinton 和他的学生Mohamed D将 DBN 应用在语音识别声学建模中,并且在TIMIT这样的小词汇量连续语音识别数据库上获得成功。
2011年 DNN 在大词汇量连续语音识别上获得成功,语音识别效果取得了近10年来最大的突破。从此,基于深度神经网络的建模方式正式取代GMM-HMM,成为主流的语音识别建模方式。
隐马尔可夫模型
隐马尔可夫模型(Hidden Markov model, HMM)是一种结构最简单的动态贝叶斯网的生成模型,它也是一种著名的有向图模型。它是典型的自然语言中处理标注问题的统计机器学模型,隐马尔科夫模型是关于时序的概率模型,描述由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
举个例子,随机丢骰子,每个点的概率应该是一样的,但是如果出老千,就会出现非正常概率的点数。隐马尔科夫模型就是用来观察这个状态并统计找出哪几个骰子是出老千投出来的。系统的隐性状态指的就是一些外界不便观察(或观察不到)的状态, 比如在当前的例子里面, 系统的状态指的是投骰子的状态,即
{正常骰子, 出老千骰子1, 出老千骰子2,...}
隐性状态的表现也就是,可以观察到的,由隐性状态产生的外在表现特点。这里就是说, 骰子掷出的点数.
{1,2,3,4,5,6}
HMM模型将会描述,系统隐性状态的转移概率。也就是出老千切换骰子的概率。
这个模型描述了隐性状态的转换的概率,同时也描述了每个状态外在表现的概率的分布。总之,HMM模型就能够描述扔骰子出老千的频率(骰子更换的概率),和出老千用的骰子的概率分布。
语音识别问题就是将一段语音信号转换为文字序列的过程.在个问题里面
隐性状态就是:语音信号对应的文字序列
而显性的状态就是:语音信号.
HMM模型的学习(Learning): 语音识别的模型学习和上文中通过观察骰子序列建立起一个最有可能的模型不同. 语音识别的HMM模型学习有两个步骤:
1.统计文字的发音概率,建立隐性表现概率矩阵B
2.统计字词之间的转换概率(这个步骤并不需要考虑到语音,可以直接统计字词之间的转移概率即可)语音模型的估计(Evaluation):比较得出最有可能出现的文字序列。
CNN
通常情况下,语音识别都是基于时频分析后的语音谱完成的,而其中语音时频谱是具有结构特点的。要想提高语音识别率,就是需要克服语音信号所面临各种各样的多样性,包括说话人的多样性(说话人自身、以及说话人间),环境的多样性等。一个卷积神经网络提供在时间和空间上的平移不变性卷积,将卷积神经网络的思想应用到语音识别的声学建模中,则可以利用卷积的不变性来克服语音信号本身的多样性。从这个角度来看,则可以认为是将整个语音信号分析得到的时频谱当作一张图像一样来处理,采用图像中广泛应用的深层卷积网络对其进行识别。
从实用性上考虑,CNN也比较容易实现大规模并行化运算。虽然在CNN卷积运算中涉及到很多小矩阵操作,运算很慢。不过对CNN的加速运算相对比较成熟,如Chellapilla等人提出一种技术可以把所有这些小矩阵转换成一个大矩阵的乘积。一些通用框架如Tensorflow,caffe等也提供CNN的并行化加速,为CNN在语音识别中的尝试提供了可能。
据百度公开资料显示他们已经将Deep CNN应用于语音识别研究,使用了 VGGNet ,以及包含Residual 连接的深层 CNN等结构,并将 LSTM 和 CTC 的端对端语音识别技术相结合,使得识别错误率相对下降了 10% (原错误率的90%)以上。
语音识别能做什么?
1、语音唤醒、识别、输入和交互
代表产品:智能音箱,语音导航,TNT。例如最早的电视是用数字加上下左右按键控制仅有的十几个台,而现在的智能电视后台对接海量资源,通过智能电视助手可以进行方便的语音交互,节省时间。
2、沟通交流
代表产品:微信语音输入,子弹等社交产品
3、翻译
代表产品:在线翻译,实时翻译,科大讯飞翻译机。一般来说,会议场景的同传准确率为80%左右,而智能会议转写准确率则能达到90%以上,之后,其在医疗和司法系统进行了应用。另外,科大讯飞还推出了便携翻译机,易于随身携带,方便远程实时交流。
4、智能家居
代表产品:智能电视、语音遥控器、语音灯等
总结
在子不语的《下一代交互革命是语音:Voice In Voice Out》一文中,描述了这样的场景:你可以和她交谈,她可以帮你控制关于房子的一切,灯光、温度、微波炉、冰箱……Echo 已经能做到什么了呢?播放音乐、创建提醒、播报新闻自然不在话下,Echo 还能根据你在亚马逊上的购物记录,智能地帮你下单。甚至,借助于前面提到的 Skills,已经有人用 Echo 控制了家中的几乎所有电器:灯光、温控、电视机、Apple TV、安保监控、热水壶、车库……当然,这里就涉及到智能家居组网、车联网等。或许声控交互已经离我们不远了。