作者 | 陈孝良
责编 | 胡永波
目前来看,语音识别的精度和速度比较取决于实际应用环境,在安静环境、标准口音、常见词汇上的语音识别率已经超过95%,完全达到了可用状态,这也是当前语音识别比较火热的原因。
随着技术的发展,现在口音、方言、噪声等场景下的语音识别也达到了可用状态,但是对于强噪声、超远场、强干扰、多语种、大词汇等场景下的语音识别还需要很大的提升。当然,多人语音识别和离线语音识别也是当前需要重点解决的问题。
学术界探讨了很多语音识别的技术趋势,有两个思路是非常值得关注的,一个是就是端到端的语音识别系统,另外一个就是G.E. Hinton最近提出的胶囊理论,Hinton的胶囊理论学术上争议还比较大,能否在语音识别领域体现出来优势还值得探讨。
端到端的语音识别系统当前也没有大规模应用,从理论上来看,由于语音识别本质上是一个序列识别问题,如果语音识别中的所有模型都能够联合优化,应该会获取更好的语音识别准确度,这也是端到端语音识别系统的优势。
但是从语音采集、信号处理、特征提取、声学模型、语音模型、解码搜索整个链条都做到端到端的建模处理,难度非常大,因此现在常说的端到端的模型基本还是局限于声学模型范畴,比如将DNN-HMM或者CNN/RNN-HMM模型进行端到端的优化,比如CTC准则和Attention-based模型等方法。
事实上,端到端的训练,可以把真实场景的噪声、混响等也作为新特征来进行学习,这样可以减少对于信号处理的依赖,只是这种方法还存在训练性能、收敛速度、网络带宽等诸多问题,相对于主流的语音识别方法还没有取得明显的优势。
本文以科普为主,将知识纵横连接,并能结合实践深入浅出的文章,对于全面了解语音识别很有帮助。非常感谢国内语音识别领域各位伙伴的支持,文中若有不足之处,期待大家的指正!
语音识别基础知识
数学与统计学
数学是所有学科的基础,其中的高等数学、数理方程、泛函分析等课程是必要的基础知识,概率论与数理统计也是语音识别的基础学科。
声学与语言学
声学基础、理论声学、声学测量等是声学方面的基础课程,有助于了解更多声学领域的知识。语言学概论、语言哲学、语义最小论与语用多元论、语法化与语义图等知识对于理解语言模型和语音交互UI设计非常有帮助。
计算机学
信号系统、数字信号处理、语音信号处理、离散数学、数据结构、算法导论、并行计算、C语言概论、Python语言、语音识别、深度学习等课程也是必备的基础知识。
语音识别专业知识
语音识别的知识体系可以划分为三个大的部分:专业基础、支撑技能和应用技能。语音识别的专业基础又包括了算法基础、数据知识和开源平台,其中算法基础是语音识别系统的核心知识,包括了声学机理、信号处理、声学模型、语言模型和解码搜索等。
专业基础
算法基础
声学机理:包括发音机理、听觉机理和语言机理,发音机理主要探讨人类发声器官和这些器官在发声过程中的作用,而听觉机理主要探讨人类听觉器官、听觉神经及其辨别处理声音的方式,语言机理主要探究人类语言的分布和组织方式。这些知识对于理论突破和模型生成具有重要意义。
信号处理:包括语音增强、噪声抑制、回声抵消、混响抑制、波束形成、声源定位、声源分离、声源追踪等。具体如下:
端点检测:端点检测,英语是Voice ActivityDetection,简称VAD,主要作用是区分一段声音是有效的语音信号还是非语音信号。VAD是语音识别中检测句子之间停顿的主要方法,同时也是低功耗所需要考虑的重要因素。VAD通常都用信号处理的方法来做,之所以这里单独划分,因为现在VAD的作用其实更加重要,而且通常VAD也会基于机器学习的方法来做。
特征提取:声学模型通常不能直接处理声音的原始数据,这就需要把时域的声音原始信号通过某类方法提取出固定的特征序列,然后将这些序列输入到声学模型。事实上深度学习训练的模型不会脱离物理的规律,只是把幅度、相位、频率以及各个维度的相关性进行了更多的特征提取。
声学模型:声学模型是语音识别中最为关键的部分,是将声学和计算机学的知识进行整合,以特征提取部分生成的特征作为输入,并为可变长的特征序列生成声学模型分数。声学模型核心要解决特征向量的可变长问题和声音信号的多变性问题。事实上,每次所提到的语音识别进展,基本上都是指声学模型的进展。声学模型迭代这么多年,已经有很多模型,我们把每个阶段应用最为广泛的模型介绍一下,其实现在很多模型都是在混用,这样可以利用各个模型的优势,对于场景的适配更加鲁棒。
语言模型:通过训练语料学习词之间的关系来估计词序列的可能性,最常见的语言模型是N-Gram模型。近年,深度神经网络的建模方式也被应用到语言模型中,比如基于CNN及RNN的语言模型。
解码搜索:解码是决定语音识别速度的关键因素,解码过程通常是将声学模型、词典以及语言模型编译成一个网络,基于最大后验概率的方法,选择一条或多条最优路径作为语音识别结果。解码过程一般可以划分动态编译和静态编译,或者同步与异步的两种模式。目前比较流行的解码方法是基于树拷贝的帧同步解码方法。
语音识别数据知识
数据采集:主要是将用户与机器对话的声音信息收集起来,一般分为近场和远场两个部分,近场采集一般基于手机就可完成,远场采集一般需要麦克风阵列。数据采集同时还有关注采集环境,针对不同数据用途,语音采集的要求也很不一样,比如人群的年龄分布、性别分布和地域分布等。
数据清洗:主要是将采集的数据进行预处理,剔除不合要求的语音甚至是失效的语音,为后面的数据标注提供精确的数据。
数据标注:主要是将声音的信息翻译成对应的文字,训练一个声学模型,通常要标注数万个小时,而语音是时序信号,所以需要的人力工时相对很多,同时由于人员疲惫等因素导致标注的错误率也比较高。如何提高数据标注的成功率也是语音识别的关键问题。
数据管理:主要是对标注数据的分类管理和整理,这样更利于数据的有效管理和重复利用。
数据安全:主要是对声音数据进行安全方便的处理,比如加密等,以避免敏感信息泄露。
语音识别开源平台
目前主流的开源平台包括CMU Sphinx、HTK、Kaldi、Julius、iATROS、CNTK、TensorFlow等,CMU Sphinx是离线的语音识别工具,支持DSP等低功耗的离线应用场景。由于深度学习对于语音识别WER的下降具有明显的作用,所以Kaldi、CNTK、TensorFlow等支持深度学习的工具目前比较流行,Kaldi的优势就是集成了很多语音识别的工具,包括解码搜索等。具体的开源平台汇总如表1所示。
支撑技能
声学器件
计算芯片
声学结构
阵列设计,主要是指麦克风阵列的结构设计,麦克风阵列一般来说有线形、环形和球形之分,严谨的应该说成一字、十字、平面、螺旋、球形及无规则阵列等。至于麦克风阵列的阵元数量,也就是麦克风数量,可以从2个到上千不等,因此阵列设计就要解决场景中的麦克风阵列阵型和阵元数量的问题,既保证效果,又控制成本。
声学设计,主要是指扬声器的腔体设计,语音交互系统不仅需要收声,还需要发声,发声的质量也特别重要,比如播放音乐或者视频的时候,音质也是非常重要的参考指标,同时,音质的设计也将影响语音识别的效果,因此声学设计在智能语音交互系统也是关键因素。
应用技能
下面这三种识别,可以归为语音识别的范畴,也可以单独列成一类,这里我们还是广义归纳到语音识别的大体系,作为语音识别的功能点更容易理解。
参考文献
1.Deep Learning:Methods andApplications,Li Deng and Dong Yu 2.Automaitic Speechand Speaker Recognition: Large Margin and Kernel Methods, Joseph Keshet andSamy Bengio 3.Xuedong Huang, Alex Acero, Hsiao-wuenHon, Spoken Language Processing 4.Lawrence Rabiner,Biing-Hwang Juang, Fundamentals of Speech Recognition 5.Dan jurafsky andJames H. Martin, Speech and Language Processing 6.Dynamic RoutingBetween Capsules,Sara Sabour,Nicholas Frosst,Geoffrey E. Hinton 7.https://en.wikipedia.org/wiki/Speech_perception 8.http://www.speech.cs.cmu.edu 9.http://htk.eng.cam.ac.uk/ 10.http://kaldi-语音识别.org/ 11.https://www.microsoft.com/en-us/cognitive-toolkit/ 12.http://www.soundpi.org/
作者简介:陈孝良,博士,声智科技创始人,专注声学前沿技术和人工智能交互,曾任中国科学院声学研究所副研究员。