你家的智能音箱,大概就要听你们两个人说话了。
语音助手,如果要中文日文来回调的话,还挺累的。
不过,现在遇到这种情况,谷歌助手已经不用手动转换语言了:
预先设置好两种语言,比如中文日文。然后你说中文,谷歌助手就用中文答你,她说日语,谷歌助手就用日语回她。
多么顺滑。
上面说的都没错,除了中文还没支持……
目前支持的语言有:英语、西班牙语、法语、德语、意大利语,和日语。
至少,日语还是有的嘛。
而且,做个顺滑的双语小王子,对语音助手来说,并不是一件容易的事。
谷歌团队也是经过多年努力,走过许多险要之地,才来到今天的。
从识别多种语言,到理解多种语言,再优化识别过程……
我们来仔细感受一下:
听出哪种语言
听到别人在说日语的时候,你即便不会说日语,也很容易听出那是日语。
但让机器来做这样的判断,并不容易。就算有了全自动语音识别系统,也很难做到。
所以,从前的语音助手,用之前都要设定好语言,省却这一步判断。
2013年,谷歌开始用深度神经网络,来开发口语辨别 (LangID) 技术。
如今,AI已经能在2000多对语言之间,辨别谁是谁:比如英语vs法语、英语vs日语、日语vs法语。
就像语音检测 (有没有人在说话) 、说话人识别 (谁在说话) 、语音识别 (ta在说啥) 的算法一样,这里用的也是序列建模(Sequence Modeling) 。
一个难点,就是要用更大的音频数据集来训练模型。
听懂说的是啥,要快
要同时理解两种以上的语言,AI的工作流程变得很复杂。
多个进程要并行,每个进程都会产生增量结果(Incremental Results) ,让语音助手在分辨语种之外,还要分析人类在说些什么,创建命令然后执行。
比如,人类说“上个早晨6点的闹钟”,对语音助手来讲,就是把时钟应用打开,把6点的参数设好,另外还要设置闹钟今天就工作。当然,单语助手也是这样。
然而,单语容易做到的事,双语就未必了。启用LangID,两套语音识别系统同时工作,二者做出的判断最后要经过一轮评估。
这一步,是由另外一个算法完成的。这个算法会给两个语音识别系统的判断结果,做个排名,决定要输出怎样的命令。
当用户说完的时候,模型除了知道ta说了哪种语言,也要领会ta的意图。而评估步骤会增加处理成本,也会造成不必要的延时。
反应慢,可能是语音助手最大的缺点了。所以,算法还需要优化。
优化,优化
要最大限度地解决运算成本与时间问题,就要在分辨语种的环节,加快速度。
如果,在用户说完之前,算法就能判断出语种。这时,另外一种语言的识别器,就不用继续听了。运算量减少了,用时也减少了。
听过一部分,算法就初步猜测一下语种。越早判断完成,就能越早把任务简化到单语。
但是,到底什么情况下,可以锁定一种预言,抛弃另一种?
这里用的是随机森林,结合了背景信息,比如用户用的什么设备,算法给出的备选命令以前是不是经常出现,用户是不是经常用这种语言等等。
这些因素,都会坚定AI的判断。
从双语到三语
现在,谷歌助手还只能支持两种语言同时识别。
但算法的优化还在进行,团队正在朝着三语进发。
不过,支持三语之前,最好还是先把汉语支持了吧。
—完—(量子位)