△ 千反田,日本语发音“吃蛋挞”

你家的智能音箱,大概就要听你们两个人说话了。

语音助手,如果要中文日文来回调的话,还挺累的。

不过,现在遇到这种情况,谷歌助手已经不用手动转换语言了:

预先设置好两种语言,比如中文日文。然后你说中文,谷歌助手就用中文答你,她说日语,谷歌助手就用日语回她。

多么顺滑。


上面说的都没错,除了中文还没支持……

目前支持的语言有:英语、西班牙语、法语、德语、意大利语,和日语。

至少,日语还是有的嘛。

而且,做个顺滑的双语小王子,对语音助手来说,并不是一件容易的事。


谷歌团队也是经过多年努力,走过许多险要之地,才来到今天的。

识别多种语言,到理解多种语言,再优化识别过程……

我们来仔细感受一下:

听出哪种语言

听到别人在说日语的时候,你即便不会说日语,也很容易听出那是日语。

但让机器来做这样的判断,并不容易。就算有了全自动语音识别系统,也很难做到。


所以,从前的语音助手,用之前都要设定好语言,省却这一步判断。

2013年,谷歌开始用深度神经网络,来开发口语辨别 (LangID) 技术。

如今,AI已经能在2000多对语言之间,辨别谁是谁:比如英语vs法语、英语vs日语、日语vs法语。

就像语音检测 (有没有人在说话) 、说话人识别 (谁在说话) 、语音识别 (ta在说啥) 的算法一样,这里用的也是序列建模(Sequence Modeling) 。

一个难点,就是要用更大的音频数据集来训练模型。

听懂说的是啥,要快

要同时理解两种以上的语言,AI的工作流程变得很复杂。

多个进程要并行,每个进程都会产生增量结果(Incremental Results) ,让语音助手在分辨语种之外,还要分析人类在说些什么,创建命令然后执行。


比如,人类说“上个早晨6点的闹钟”,对语音助手来讲,就是把时钟应用打开,把6点的参数设好,另外还要设置闹钟今天就工作。当然,单语助手也是这样。

然而,单语容易做到的事,双语就未必了。启用LangID,两套语音识别系统同时工作,二者做出的判断最后要经过一轮评估

这一步,是由另外一个算法完成的。这个算法会给两个语音识别系统的判断结果,做个排名,决定要输出怎样的命令。

当用户说完的时候,模型除了知道ta说了哪种语言,也要领会ta的意图。而评估步骤会增加处理成本,也会造成不必要的延时

反应慢,可能是语音助手最大的缺点了。所以,算法还需要优化。

优化,优化

要最大限度地解决运算成本与时间问题,就要在分辨语种的环节,加快速度。

如果,在用户说完之前,算法就能判断出语种。这时,另外一种语言的识别器,就不用继续听了。运算量减少了,用时也减少了。

听过一部分,算法就初步猜测一下语种。越早判断完成,就能越早把任务简化到单语

但是,到底什么情况下,可以锁定一种预言,抛弃另一种?


这里用的是随机森林,结合了背景信息,比如用户用的什么设备,算法给出的备选命令以前是不是经常出现,用户是不是经常用这种语言等等。

这些因素,都会坚定AI的判断。

从双语到三语

现在,谷歌助手还只能支持两种语言同时识别。

但算法的优化还在进行,团队正在朝着三语进发。

不过,支持三语之前,最好还是先把汉语支持了吧。


—(量子位)