天猫精灵如何和我们聊天?

简介: 天猫精灵已经走过几年的历史,在这几年中,天猫精灵变得更加智能,其中的体现之一是交互方式变得越来越自然。本文将介绍天猫精灵的全双工自然对话交互方式。

什么是全双工自然对话?

如果孙悟空的金箍棒加入天猫精灵语音交互的支持,那么孙悟空在获得金箍棒后会怎样给他的猴儿们演示呢?

image.png

在一问一答方式中,孙悟空首先需要唤醒金箍棒,然后再发出大一些的指令,金箍棒在收到指令后会变粗变高并回复已经变大。如果孙悟空要想让金箍棒再大一些,需要再次唤醒金箍棒并发出指令。每次想让金箍棒大一些,孙悟空就要重复这个过程。

在连续对话方式中,孙悟空也要先唤醒金箍棒,然后在发出大一些的指令,金箍棒也会在收到指令后会变粗变高并回复已经变大。如果孙悟空要想金箍棒再大一些,可以选择等待金箍棒的回复结束,然后直接说出大一些的指令。接下来每次想让金箍棒大一些,孙悟空只需要等待金箍棒回复结束,然后直接说出大一些的指令即可。

在自然对话模式中,孙悟空先唤醒金箍棒,然后发出大一些的指令,金箍棒在收到指令后会直接变粗变高。接下来,如果孙悟空想金箍棒在大一些,直接说出大一些指令即可,不需要再次唤醒,也不需要等待回复结束。

天猫精灵有孙悟空演示金箍棒的场景吗?答案是肯定的,例如音量控制就非常相似。那么天猫精灵的全双工自然对话是怎么实现的呢?

技术方案

设备端:负责听和说。主要解决什么时候听,有没有听到语音,听到的语音有多长;什么时候说,以及说什么。

语音识别:即 ASR,将用户的语音识别成文本,并提取声音的特征。

语义理解:即 NLU,负责理解用户说了什么并转换成机器可读的信息。

语音合成:即 TTS,负责将文本转换成语音。

对话管理:即 DM,根据语义理解的结果和会话的上下文信息调用各种服务完成用户的请求。

人机交互识别:根据 ASR 输出的声学特征判断收到语音是不是用户和音箱说的话。

image.png

设备端交互管理

用户打开自然对话后,服务端在对用户进行应答的同时会下发自然对话收音指令到设备端。

设备端收到自然对话收音指令后,进入自然对话状态并开始收音。

在自然对话状态下,设备端检测到用户说话时开始发起自然对话交互请求;检测到用户说话结束时结束请求,并上报自然对话状态的持续时长和用户的说话时长到服务端。

设备端收到服务端应答,但是应答中不包含自然对话收音指令时,如果当前处于自然对话状态则退出自然对话。

自然对话收音指令中包含收音的持续时长,如果在这个时长内没有检测到声音也会退出自然对话。

设备端播放管理

在用户交互过程中,需要根据用户的意图决定被打断的播放动作是否需要继续。比如,用户在播放音乐时说“收藏这首歌”,那么在执行用户指令后需要继续恢复播放音乐;而用户在收听天气时问了算术,那么在执行用户的指令后不需要继续播放天气。

所以我们把音箱播放的类型分成 3 类,即需要恢复的播放、不需要恢复的播放以及提示音,并根据当前的播放类型和即将播放的类型来确定是否保存播放状态。

持续时长

用户不会一直和音箱交互,持续的收音和处理会极大的增加云端的处理负担,也没有必要,因此我们需要对自然对话的持续时长进行限制。但是用户和用户交互的时长又不是确定的,因此我们采取了滑窗的计时方式,即每一次用户交互后,我们都会重新计时,等待用户进行交互。

人机交互识别

在自然对话持续的过程中,用户可能在与其它人聊天,我们需要识别出来,并且做到用户无感知。在实际实践过程中,我们以语音识别时提取的声学特征为输入,通过深度学习算法来判断用户是否在与与音箱进行交互。如果发现请求不是用户和精灵的交互,精灵不会做出响应。

会话流

在自然对话持续的过程中,语义理解服务会记住会话的历史,并结合历史来处理用户的请求,通过这种方式,用户的多次连续交互就可以形成一个会话流,与用户的交互也更加自然。例如,用户询问今天说“今天天气怎么样”,精灵会回复今天的天气,如果用户再询问明天的天气,那么用户不用说“明天天气怎么样”,而只需要说“明天呢”。

总结

全双工自然对话是一个系统的工程,涉及到从设备端的前端信号处理、设备端语音交互管理、到云端网关、语音识别、语义理解等整个语音交互链路,涉及到部门多个团队的协作,项目的顺利推进离不开各个团队的通力协作,充分体现了“因为信任所以简单”和“此时此刻非我莫属”的价值观。

全双工自然对话上线后受到了用户的广泛好评,自然对话的用户只要使用精灵,几乎都会使用这个功能来与天猫精灵交互,而这部分用户的活跃度也比其它用户更高。

当然,在提升用户交互体验的道路上,全双工自然对话不是终点,还有很多可以提升的地方,我们会继续努力,为用户提供更好的交互体验。

感谢

衷心感谢参与项目的所有同学,有些同学甚至为此取消了国庆假期的安排。在大家的共同努力下,短短一个多月时间内就完成了全链路方案的实现和落地,让用户可以更早的体验到精灵的黑科技。

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
11月前
|
消息中间件 NoSQL API
环信实现聊天功能
环信实现聊天功能
71 0
语音社交源码知识语音房间功能的实现
就像我说的一样,语音社交源码技术语音房间功能对于开发语音社交平台也是至关重要的,当然,开发语音社交平台还有很多功能,在以后我会为大家一一讲解,如果大家还有什么不懂的可以问我。
语音社交源码知识语音房间功能的实现
微信 - 微信语音转发好友 / 朋友圈方法
微信 - 微信语音转发好友 / 朋友圈方法
176 0
微信 - 微信语音转发好友 / 朋友圈方法
|
自然语言处理 JavaScript Java
|
开发者 语音技术 自然语言处理
天猫精灵创建音乐小场景-冬瓜
天猫精灵创建音乐小场景-冬瓜
847 0
天猫精灵创建音乐小场景-冬瓜
|
机器人 Shell 数据安全/隐私保护
基于nonebot的QQ群聊机器人制作(一)
基于nonebot的QQ群聊机器人制作(一)
基于nonebot的QQ群聊机器人制作(一)
|
开发工具 数据安全/隐私保护 开发者
简单的环信单聊(用于商城聊天)
简单的环信单聊(用于商城聊天)
223 0
简单的环信单聊(用于商城聊天)
|
人工智能 自然语言处理 JavaScript
天猫精灵语音交互体验
生活有良伴,万物有精灵。天猫精灵是阿里推出的人工智能的产品,主要与人进行交互,通过人工智能,改变大众生活方式。生活中经常遇到的场景,小朋友经常使用天猫精灵播放“米小圈上学记”。本篇文章简单介绍下,如何自定义天猫精灵语音交互。
天猫精灵语音交互体验
|
数据可视化 Java 开发工具
天猫精灵体验:天气小助手开发
猫精灵技能应用开发平台是阿里巴巴天猫精灵面向不同类型的广大开发者推出的技能应用开发、接入平台。 该平台提供了从语音交互模型定义、语义解析理解能力,到技能开发、测试、部署的一整套开发工具和便捷的可视化操作工作台,帮助开发者高效地将各类技能应用快速接入到天猫精灵音箱以及精灵生态硬件终端。
277 0
天猫精灵体验:天气小助手开发
|
自然语言处理 开发工具 git
天猫精灵语音开发-第三天
图文详解如何开发天猫精灵语音应用,以及阿里云云开发平台的基本使用,最后将介绍如何把使用阿里云云开发平台做后台开发天猫精灵应用
204 0