语言技术丨李妍:语音识别知多少
由于微信公众号平台推出新功能,“语言资源快讯”左边显示的名称并非原作者,而是公众号管理者,原作者将于大标题和文末显示,感谢各位读者的谅解!
语音识别知多少
在介绍语音识别之前,我先跟大家简单解释一下什么是语音技术。
其实,对于语音技术的理解,大部分门外汉的认识仅仅局限于语音识别。实际上,语音技术包括很多方面,具体如下图。
(图源知乎)
也就是说,在语音技术这一领域,下分很多方向:说话人识别、语种识别、语音增强、语音合成、音色转换、以及语音识别等。
现实生活中,人们除了语音识别外,也就对语音合成(如一些app可以将人说话内容配上背景音乐),以及语种识别比较熟悉。其中,语种识别,顾名思义,不管你说哪种语言,你的机器都能准确识别。
以对siri的提问为例。
汉语
粤语
英语
日语
韩语
泰语
话不多说,接下来,就让我为大家介绍一下人们最为熟悉的语音识别。
语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR)、计算机语音识别(英语:Computer Speech Recognition)或是语音转文本识别(英语:Speech To Text, STT),其目标是以计算机自动将人类的语音内容转换为相应的文字。与说话人识别(英语:Speaker recognition)及说话人确认不同,后者尝试识别或确认发出语音的说话人而非其中所包含的词汇内容。
语音识别技术的应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入等。
语音拨号
语音导航
室内设备控制——蓦然认知之智能家居
(图片来源于雷锋网)
语音文档检索
简单的听写数据录入
语音识别技术与其他自然语言处理技术如机器翻译及语音合成技术相结合,可以构建出更加复杂的应用,例如语音到语音的翻译。
语音识别技术所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。
其实,早在计算机发明之前,自动语音识别的设想就已经被提上了议事日程,早期的声码器可被视作语音识别及合成的雏形。
而1920年代生产的"Radio Rex"玩具狗可能是最早的语音识别器,当这只狗的名字被呼唤的时候,它能够从底座上弹出来。最早的基于电子计算机的语音识别系统是由AT&T贝尔实验室开发的Audrey语音识别系统,它能够识别10个英文数字。其识别方法是跟踪语音中的共振峰。该系统得到了98%的正确率。
到1950年代末,伦敦学院(Colledge of London)的Denes已经将语法概率加入语音识别中。
1960年代,人工神经网络被引入了语音识别。这一时代的两大突破是线性预测编码Linear Predictive Coding (LPC), 及动态时间规整Dynamic Time Warp技术。
语音识别技术的最重大突破是隐含马尔科夫模型Hidden Markov Model的应用。从Baum提出相关数学推理,经过Rabiner等人的研究,卡内基梅隆大学的李开复最终实现了第一个基于隐马尔科夫模型的大词汇量语音识别系统Sphinx。此后严格来说语音识别技术并没有脱离HMM框架。
尽管多年来研究人员一直尝试将“听写机”推广,语音识别技术在目前还无法支持无限领域,无限说话人的听写机应用。
目前,主流的大词汇量语音识别系统多采用统计模式识别技术。典型的基于统计模式识别方法的语音识别系统由以下几个基本模块所构成:
信号处理及特征提取模块
声学模型
发音词典
语言模型
解码器
语言模型是使用大量文本训练出来的,可以利用某门语言本身的统计规律来帮助提升识别正确率。语言模型很重要,如果不使用语言模型,当状态网络较大时,识别出的结果基本是一团乱麻。
那么,我们来着重看一下中文声学特征:
以普通话发音为例,我们会将一个字的发音切割成两个部分,分别是声母(initials)与韵母(finals)。而在发音的过程之中,声母转变至韵母是一个渐进而非瞬间的改变,因此我使用右文相关声韵母模式(Right-Context-Dependent Initial Final, RCDIF)作为分析方法,可以更精准的识别出正确的音节(syllable)。
而根据声母的不同特征,又可以将声母分为下面四类:
爆破音(Plosive):
发音时嘴唇紧闭后,吐出气流制造出类似爆破的声音。其声音震幅变化会先降至极小值后(代表嘴唇紧闭)后在急剧上升,而端视是否有持续送气,倘若有持续送气(aspirated),则震幅可能会有另一个波峰,若无(un-aspirated )则在波峰之后,震幅将有所下降。如:ㄆ与ㄅ便是前述的关系,ㄆ有持续送气,而ㄅ则无。右图左为ㄅ,右图右为ㄆ。
摩擦音(Fricative):
发音时,舌头紧贴硬颚,形成狭窄的信道,气流通过时造成湍流发生摩擦,由此发出声响。由于摩擦音是透过稳定输出气流,使得声音震幅变化相较于爆破音变化幅度较小。如ㄏ、ㄒ 等皆为摩擦音。
爆擦音(Affricate):
此类型的发声模型兼具爆破音与摩擦音的发声特性。其主要发声构造如同摩擦音是由舌头紧贴硬颚使气流通过时产生摩擦的声音。而其信道更加紧密,使得气流会在瞬间冲出,产生出如同爆破音般的特征。如:ㄑ 、ㄔ等。
鼻音(Nasal):
发音时,软颚会下压,下压后,由气管吐出的气流被阻塞,无法进入口腔,因而转往鼻腔。也因此鼻腔与口腔会产生共振,如右图的时频谱上可以明显地看到零点(formants)分布有共振的现象,而这样的共振现象在右文相关声韵母模式(Right-Context-Dependent Initial Final, RCDIF)下与韵母俩相对较下更加明显。因此,此一现象可作为识别鼻音(Nasal)的重要依据之一。右图便为鼻音ㄋ之特征,其中红点便为零点(formants)。
(图源维基百科)
而韵母又有双母音、单母音之分,端视在发声时是否有音调的改变。而根据声带振动与否,又分为清音(unvoiced:声带不震动)等差异,以上发音时不同的方式,在时频图上大多可以找到相对应的特征,透过处理二维的时频图,借由传统视频处理的方式,达到语音识别的目的。
相关概念之语音输入法
语音输入法是使用者只要说出话语,就可以透过语音识别的技术将所说的话转换成文字输入到数位装置去,包括手机平板电脑和台式电脑或笔记型电脑等,有些装置必须另外安装相关的输入设备,才能使用语音输入的功能。
语音输入法的好处是使用者的只要说出声音就可以转换成文字输入进去,但由于每个人说话的音调音量透气声闻皆不相同,而有可能会辨识到相近的声音或是其他同音谐音字,而不符合使用者要表达的意思,而使用者需要再次的检查与更正,而有些系统有学习的功能 他可以知道这个使用者的偏好,因此如果这样的系统是由同一个人使用的话,可以预期的正确率会越来越高。
目前在Android的手机可以使用Google语音输入法来实现语音的输入只要在打字的地方按下麦克风的按钮就可以使用。
语音输入法的速度可以很快,若不计算后续检查或校正所需的时间,语音输入法的速度是可以达到每分钟200到300个字左右,依人的说话速度而定。
在有些需要快速沟通的场合,比如说使用LINE等通讯软件, 语音输入法可以替使用者节省许多打字的时间也避免使用者打字速度太慢或选不到字的问题 或者是快速的利用语音输入来查询资料 配合 自然语言技术 语音输入法也可以模拟与人对话的情形和犹如机器人聊天机器人般的效果。
相关概念之语音处理
语音处理(Speech processing),又称语音信号处理、人声处理,其目的是希望做出想要的信号,进一步做语音辨识,应用到手机界面甚至一般生活中,使人与电脑能进行沟通。
语音信号的来源:
人声是由于声带震动,而产生声音。当运动肌肉挤压,使肺脏中的空气通过声带时,空气流动使得声带做周期性的震动,又再一次震动了空气,接着,带着动能的空气离开气管到达口腔或鼻腔,在腔室中震动,最后离开在嘴唇传到人耳变成声音。
若调整口腔中舌头的位置,会产生不同种类的声音,如果舌头没有做太多的动作,空气只有在口腔中共振,接着直接流出嘴唇,会产生母音,若提起舌头,使口鼻腔相通,则会出现鼻音。
语音信号分类:
从中文发音的观点来说,声音仍可分为子音与母音,母音和子音可以用两种方式区分:
发声方式:一般而言,母音跟嘴唇形状有关,而且不与鼻腔共振。相对而言,在发出子音时,就会运用到鼻腔配合发声。
频谱分析:从频谱上观察可以发现子音的信号频率较高,持续时间较短,且会在母音之前出现。而母音的频率较低,持续时间较长,在子音后或独立出现,另外,母音的能量也会比子音大。
下面列出中文注音符号中的母音、子音及其拼音。
(图源维基百科)
语音的架构:
要分析语音信号前,必须先了解其架构,语音的要素从小到大分别是:音素→音节→词汇→句子→整段话。
音素是声音的最小单位,例如“呵”这个字的音素,就是“ㄏ”和“ㄜ”,但是音素和注音符号并不相等,例如“鸥”虽然只有“ㄡ”这个母音,但是由于是双母音,所以会把他拆成两个音素。音节在中文而言,就是只一个字,例如:“天天开心”就有四个音节。词汇是文字组成的有意义片段,各种不同的词汇集结成句子,最后变成整段话,这就是语音的架构。
语音处理主要有两个目的:
减少信号噪声,做出想要的信号模组;
进行语音辨识,使人可以利用语言与电脑沟通。
Hofstadter说:“一个机器要能理解人说的话,它必须要有腿,能够走路,去观察世界,获得它需要的经验。它必须能够跟人一起生活,体验他们的生活和故事……”
IBM的语音识别专家Frederick Jelinek曾开玩笑说:“每当我开掉一个语言学家,识别率就上升了。”其原因是因为语音识别相当于一个lexer,而语言学家研究的是parser以及interpreter。
在深度学习时代,我们更少地依赖于语言学知识进行语音的识别。
比如对于一帧语音片段,对其提取特征后,我们直接将其作为DNN(深度神经网络)的输入向量,其输出代表了对各音素的预测概率。我们期待算法能通过反向传播自动学会概率的预测,这也标志着“智能化”的语音识别的成熟。
语音识别系统的一般架构如左图,分训练和解码两阶段。
训练,即通过大量标注的语音数据训练声学模型;
解码,即通过声学模型和语言模型将训练集外的语音数据识别成文字。
语言识别的工作,简单来说,无非就是由帧识别为状态(难点);由状态组合成音素;由音素再组合为单词。
从数据处理及特征提取,到模型初始化,从单音素到三音素的训练和解码,从基于最大似然的训练到基于最大互信息的判别性训练,以及大量的配置文件,需要很高的学习时间成本;为了获得比较好得识别准确率,还需要对齐操作。
(参考:知乎;维基百科)
特别鸣谢
感谢北京航空航天大学中法工程师学院系统工程专业(自然语言处理方向)的赵宇凡同学对本文提出的宝贵修改意见。
撰文:李妍
(就读于延边大学)
图文编辑:李妍
审读人员:怡然
责任编辑:老甘
投稿邮箱:jnufyzx@163.com
往期回顾:
扫码关注:语言资源快讯
亲爱的读者:
做语言资源保护公众号不容易,每天更新公众号更不容易,而每天提供新语料尤其不容易。很多读者还没养成打赏习惯,提倡每个月打赏一元钱,积少成多,我们的事业就有希望。谢谢各位!