谷歌 2018 年度的开发者大会(Google I/O 2018)介绍的 Android P、Gmail、Gboard、TPUv3 等众多新产品和功能中,尤为亮眼的无疑是个人助理 Google Assistant 中新增加的 Duplex,它可以自己给饭馆、发廊等商业店面打电话,帮用户预约时间。
这几天媒体各种报道与惊叹,甚至说起吊打智障Siri。EDN编辑找到了谷歌AI blog上来自谷歌的工程师 首席工程师Yaniv Leviathan以及工程副总裁Yossi Matias的博客,他们在博客中揭秘了Duplex用到的技术。
Google duplex是一种用于特定领域,通过拨打电话执行任务的工具。
特定领域是指比如预定一家餐馆、预定一次理发等。Google duplex可以进行非常自然的人机对话,听起来非常地自然,就像真实的人在进行电话拨打一样。
借助语言理解、交互、时间控制、语音生成方面的最近技术发展,Google Duplex 的对话听起来相当真实自然。
为了处理上面提到的挑战,Duplex 的核心是一个 RNN 网络,它是由 TensorFlow Extended(RFX)构建的。为了达到高精度,谷歌用匿名的电话对话数据训练了 Duplex 的 RNN 网络。
这个网络会使用谷歌自动语音识别(ASR)的识别结果文本,同时也会使用音频中的特征、对话历史、对话参数(比如要预订的服务,当前时间)等等。
谷歌为每一种不同的任务分别训练了不同的理解模型,不过不同任务间也有一些训练语料是共享的。最后,谷歌还利用 TFX 的超参数优化进一步改进了模型。
输入语音先经过自动语音识别系统(ASR)处理,生成的文本会与上下文数据以及其它输入一起输入 RNN 网络,生成的应答文本再通过文本转语音(TTS)系统读出来。
总结,Google duplex使用到的技术包括:
1、使用Google自己的ASR(语音识别)技术,将对话方的语音转化为文字;
2、使用TensorFlow构建基于RNN(循环神经网络)的模型,基于匿名电话会话数据语料库,进行Duplex的训练,训练好的模型,可以根据对话方的语音转化成的文字,生成相应的文字响应;
3、使用综合TTS引擎(Tacontron和WaveNet),将深度学习模型生成的文字,转化为语音,作为最终的对话响应;
4、duplex可以和Google assistant配合使用,Google assistant可以在后台调用duplex,进行任务的执行。
谷歌联合使用了一个级联 TTS 引擎和一个生成式 TTS 引擎(其中使用了 Tacotron 和 WaveNet),根据不同的情境控制语音的语调。
这个系统还可以生成一些语气词(比如“hmmm”、“uh”),这也让语音变得更自然。当级联 TTS 需要组合变化很大的语音单元,或者需要增加生成的停顿时,语气词就会被添加到生成的语音中,这就让这个系统可以以一种自然的方式向对方示意“是的我听着呢”或者“我还在考虑”(人类说话的时候就经常在思考的同时发出一些语气词)。谷歌的用户调查也确认了人类觉得带有语气词的对话更熟悉、更自然。
另一方面,系统的延迟也要能够符合人类的期待。比如,当一个人在电话里讲了“你好”这样的简单句子之后,他们会希望很快听到一个简短的回复,这种时候会对延迟更加敏感一些。当 AI 系统检测到了需要短延迟的情境时,就会使用更快但精度也更低的模型来处理。在某些极端情况下,系统甚至都不会等待 RNN 运行,而是直接使用快速逼近模型(通常也会和更慢的正式回应搭配起来使用,就像人类不完全理解另一方的时候会犹豫一样)。
这样的做法就可以让系统达到 100ms 之内的极短延迟。有趣的是,谷歌发现在某些情况下要增加一些延迟来让对话听起来更自然,比如回复一个很复杂的句子的时候。
总结而言:
1、Duplex被限制在特定的领域进行使用,这使得技术人员可以针对该领域进行详细的技术设计,从而取得有针对性的非常自然的效果;
2、神经网络模型的输入不仅是ASR的文字结果,还包括对话的历史记录,使得模型可以更好地理解对话的上下文,生成更加准确的响应;
3、Duplex会使用“嗯”、“啊“等表示停顿、思考的语气词,或者延长某些词,好像它正在花时间去思考一个答案,使得语音响应听起来更加自然;由于人们在进行真实的对话时,有时会期待及时快速的响应,比如说“你好?”在类似的极端情况下,duplex甚至会不等待深度学习模型的响应结果,而是用更快的类似的响应,如此,便使得响应更加地自然。
据悉:今年夏天,谷歌就会开始基于 Google Assistant 测试 Duplex,就从预订餐馆、预订发廊、询问节假日的营业时间这样的事项开始。