Press "Enter" to skip to content

Speech Technologies at Google: an Overview 演讲心得

大家好,我们是 LINE 台湾资料开发团队的 Penny、Johnson 与 Nina。很高兴能参加这次由台湾大学电信所及资工所,于 2 月 7 号举办的专题演讲 “Speech Technologies at Google: an Overview”。本演讲很难得地邀请到带领 Google speech 团队的 Pedro J. Moreno 博士,亲自分享 Google 语音辨识服务的技术演进和应用。演讲内容深入浅出,从传统语音辨识的方法,到比较深的 end-to-end 模型,并用 end-to-end 模型带出几个主要的应用。接下来我们会针对什幺是语音辨识、如何做语音辨识、语音辨识的应用,以及 LINE 台湾对于中文语音辨识的努力进行分享。

 

怎幺做语音辨识?

 

首先,什幺是语音辨识呢?

 

语音辨识,或称自动语音辨识 ( A utomatic   S peech   R ecognition, ASR) 的目标很简单,就是透过电脑自动把语音内容转成对应的文字,与大家说的语音转文字 ( S peech  T o  T ext, STT) 是同一件事。听起来好像很枯燥,但其实可延伸出无穷的应用。Pedro J. Moreno 博士在演讲中就提到,语音辨识迷人的地方在于,你可任意组合输入及输出的元素,形成各种应用。例如语音翻译,把外国人说的英文语音,翻译并合成产生中文语音输出;又例如语音助理,把输入的语音,透过自然语言理解 (NLU) 转成在哪个领域 (domain)、有什幺意图 (intent),以及要完成的任务中须收集哪些关键词,进而完成动作。

 

Google 的语音辨识最早出现在 2006 年的 Goog-411 产品中,让用户可透过语音输入公司名称,搜寻到公司电话及地址。虽然此服务在 2010 年终止,却也因此收集到不少用户的语音资料,作为之后学习的基础。2009 年后则陆续出现在 Google Voice、YouTube、Voice Search 等服务中,一直到现在大家熟知的 Google Home 及 Assistant 应用。短短十几年间,透过类神经网路、深度学习与 sequence-to-sequence 模型的演进、资料与计算上的持续扩充,让目前 Google 语音搜寻 (voice search) 的字错误率 (word error rate, WER) 从原本 20% 降到 6%,是非常大的进步。

 

所以,该怎幺做语音辨识呢?

 

我们可把语音辨识分成几个小模组 (如下图一) 以了解细部运作,当一段语音进来后,先等比例切成一帧帧 (frame),透过声学模型 (Acoustic Model, AM) 转译成一个个状态 (state),接着透过决策树模型,把状态分成能区别意义的最小单位:音素,音素经过字典可找出对应的字,最后,再透过语言模型 (Language Model, LM) 把一串字整合成句子,若再加上自然语言处理 (NLP),则可转成有意义的文字。如把语音辨识 (ASR) 看成一个系统 (如图二),则可分为三大模组 (sub-modules),包含声学模型 (AM)、发音模型 (Pronunciation Model, PM),以及语言模型  (LM),这也是语音辨识较为传统的作法。

图一:语音辨识问题的子模组

图二:传统语音辨识系统

传统 ASR 模型要解决的问题,其实可看成一个简单的机率问题 (如图三),W 是要输出的文字序列 (Word sequence),O 是输入的音频 (Audio waveform),所以这问题的目标就是在已知的音频输入下,找到最可能产生的文字序列。透过贝氏定理 (Bayes’ Rule) 可拆解成两个机率分布:(1) 给定一个文字序列会出现这个音频的机率,以及 (2) 出现这个文字序列的机率。其中 (1) 就是 ASR 中的声学模型 (AM),而 (2) 就是语言模型 (LM)。此处声学模型 (AM) 可拆得更细,表示成音频属于某个音素的机率,以及音素对应到文字序列的字典 (PM)。而音素又可透过状态来进行转换,如果透过状态的表示,并假设每个状态只与前一个状态有关的话,AM 就可用隐藏式马可夫模型 (Hidden Markov Model, HMM) 来实现。

图三:ASR 的统计模型

从传统方法转变到 end-to-end

 

实务上,以 sub-module 的形式包装整个语音辨识的流程 (AM → PM → LM) 是十分有效的,这样的传统方法沿用于 Google 语音辨识产品。如上面介绍的 AM (Acoustic Model) 将声学讯号拆解成音素,也就是组成 subword 的最小单位;PM (Pronunciation Model) 将这些片段的音素对应成文字上的形素,也就是可表达文字的最小单位;接着 LM (Language Model) 将这些文字的最小单位按照语言使用的逻辑、机率组成合理的文字,也就是我们看得懂的句子。但这些模型都是分开训练、使用不同训练资料、应用不同的调参优化策略,这样对整体应用的优化将造成阻碍,像是损失 (loss) 的传递不能直接透过 LM 的最终答案传达到 AM 的模型参数优化上,这对机器学习相当不利。所以一个 end-to-end 的模型会是合理又更有效的解决方法。以下会介绍 Google 在应用及研究上大量使用的 end-to-end 模型。

 

早在 2006 年,为解决语音与文字需要对齐 (alignment) 的问题,常耗费大量人力进行标注。后来,在结合 RNN 模型拥有记忆力的特性下,提出 CTC 模型 (Connectionist Temporal Classification),自动对齐文字训练材料与语音输入的每一帧音讯。也就是说,以往需要知道哪几帧输入音讯对应输出的哪个字符、了解如何分割不同输出字符对应输入帧的边界、耗费人力区分音与音之间的边界,以及填入对应的字符等;而在 CTC 当中,则是利用 blank symbol 空白字符”<b>” 加入输出字符串中,将对应的输出字符与空白字符排列好、可对齐每帧音讯,像是对应一段 12 帧音讯 banana,对应声音不同的停顿点,它可以是 12 帧的 b a a “<b>” n a a “<b>” n a a “<b>”,也可以是 12 帧的 b b a “<b>” “<b>” n a “<b>” n a a “<b>”,这些分割方式,都可很直观地将标注字合併成输出字符 banana。具体的模型如下图,CTC 模型利用 RNN 模型,将序列的文字输出编码成各帧的向量,并透过 softmax layer 产生可能对应的文字输出 (也就是最可能的分割排列) 机率分布,数学上可用 gradient ascent 最大化该机率模型。

出处

 

对于近期语音识别产品最常使用的模型,2017 年 Google speech team 以 RNN-T ( Alex Graves, 2012 ) 架构的应用就是个很好的开始。相比于传统的 CTC 模型,RNN-T 除了拥有跟 CTC 一样不需要对齐音频与文字的特性,还可达到 end-to-end 的效果:联合优化端到端 (end-to-end) 训练的参数,并拥有 LM 语言模型最佳化文字产出的效果。RNN-T 示意如下图:

出处

 

关于 RNN-T 模型,简单来说可想像成声学模型 AM Encoder 和语言模型 LM Prediction Network 的结合。具体可理解成 Encoder 这端利用双向 (bidirectional) 的 RNN-base 模型,将声音讯号编码成向量,接着 Prediction Network 这端会将先前识别出的文字当作输入,以单向的 RNN-base 模型预测下一个可识别的文字之机率分布,透过一个 Joint Network 将两边的资讯统合,最后产出考量了声学讯号和识别的语言文字序列等,输入后可识别的文字之机率分布。实务上,相较于传统的 HMM 与 CTC 模型,RNN-T 有着模型更小、训练更快的优势,且有较好的準确度,使得这类模型可被放在手机等应用端上使用。

 

随着深度学习的进展,Google speech team 也将近年来发展成熟的 Attention 记忆力模型加入语音识别的模型中,发展出全新模型,也就是 LAS 模型 ( Chan et al. 2015 ),LAS 的结构如下:

出处

 

它也可被理解成 AM 与 LM 的结合,AM 可説是图中的 Encoder,用一个多层的 RNN 模型将声音讯号编码成模型的隐状态向量,可让模型学到对输入讯号更多层次的理解,例如可理解 spelling variants 的识别 (像是 “triple w” 与 “www” 的同等性)。完成 encode 后,则通过一层注意力模型,将隐状态向量,也就是声音讯号本身学出对每个不同时间输入的权重,让模型更有效地捕捉输出与输入局部资讯之间的关联,并产生将当前输入经过 attention 权重后的 context vector,最后透过如 LM 的 Decoder 模型,将接收的 context vector 转化成预测识别字的机率分布。而近年来,Google 针对 LAS 模型的各种改良,可超越传统模型的 WER (6.7%),达到 WER 仅有 5.6% 的準确度 ( Chui et al. 2017 )。

 

语音辨识可解决什幺问题?

 

常见的语音辨识应用,概念上是训练一个 AI 模型去侦测声音,并做出下一步的行动,例如:传送一个文字讯息,或语意理解后转成语音命令来控制智慧装置,让生活更加便利。但还有一群人因为渐冻人症、中风或失聪等疾病,使得他们的咬字与发音不同于他人,导致他们所说的话不容易被理解,此时,语音辨识模型能带来很大的帮助,Google 的 Project Euphonia 及 Parrotron 就是在解决这个问题,帮助语言障碍者们被他人理解、接轨世界。

 

Project Euphonia 可帮助肌萎缩性脊髓侧索硬化症 (Amyotrophic lateral sclerosis, ALS) 患者,俗称渐冻人症,25% 的 ALS 患者第一个症状是口齿不清,Google 透过 ASR 协助转译他们所说的话。Google 以长达数千个小时的标準语音资料所训练的高精度 ASR 模型为基础,加入来自语言障碍者的非标準语音特徵小数据集进行 fine-tune,使得原本的 ASR 模型在理解非标準语音上大幅改善。Table 1 显示出一般标準语音 (Base) 模型和非标準语音 (Finetune) 模型,在识别 ALS 患者及非英文母语人士 (Arctic) 语音的单字错误率 (WER),其中 RNN-T 模型仅对两层网路进行微调 (fine-tune) 就可将单字错误率 (WER) 从 59.7% 下降至 20.9%。

1 非英语母语人士之语音资料集

 

2 FRS 等级 2 之 ALS 患者语音资料集

 

3 FRS 等级 3 之 ALS 患者语音资料集

 

注:FRS score 为用以评估语言障碍程度的标準,

 

等级分为 0 (不可理解) 至 4 (正常)

 

出处

 

Project Euphonia 可为语言障碍者建立个性化的模型,先将语音透过 ASR 模型转成文字,最后合成语音;而 Parrotron 则是直接用 speech-to-speech 语音训练,不须经过文字转换,使用者只须输入非标準语音,模型不须先转成文字,就可直接转化成清晰的声音,所以即便中间出现错误,输出的声音也比经由文字转换后合成的,更加接近原本的输入语音、更贴近说者的意图。我们可藉由此 demo 影片 ,看到以普通标準人声训练的通用模型和 Parrotron 之间的巨大差异,也更能体会运用 AI 科技、让语言障碍者重新与世界连结的美好成果。

 

结语

 

在理解 Google 对语音辨识所做的努力与进展后,我们也希望能把对技术难题的解法带回 LINE。LINE 提供的语音服务,也就是广为人知的 Clova 智慧语音助理,正如先前提到的,这项应用在实务上需要先将语音透过 STT 转成文字,并透过 NLU 转成意图与任务动作,再将回应透过 TTS (Text To Speech) 转成语音输出,由于每个阶段的模型都会产生误差,演讲中有提到可将 STT 与 NLU 两个阶段要训练的模型合併成一个 end-to-end 模型,直接将语音转成意图,不须先转成中介文字 ( Haghani et al. 2018 ),这可能是我们未来可以优化的方向之一。而 LINE 台湾目前正积极开发 Clova 中文化的应用,努力达成完整的语料、语料标记等目标。我们的资料开发团队也试着将不同的 end-to-end 模型,例如 Deep Speech 等,应用于中文语料库,亦计划将本次语音辨识讲座学到的新知,应用在实务开发中!

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注