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

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

什么是全双工自然对话?

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

image.png

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

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

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

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

技术方案

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

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

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

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

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

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

image.png

设备端交互管理

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

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

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

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

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

设备端播放管理

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

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

持续时长

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

人机交互识别

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

会话流

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

总结

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

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

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

感谢

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

相关实践学习
达摩院智能语音交互 - 声纹识别技术
声纹识别是基于每个发音人的发音器官构造不同,识别当前发音人的身份。按照任务具体分为两种: 声纹辨认:从说话人集合中判别出测试语音所属的说话人,为多选一的问题 声纹确认:判断测试语音是否由目标说话人所说,是二选一的问题(是或者不是) 按照应用具体分为两种: 文本相关:要求使用者重复指定的话语,通常包含与训练信息相同的文本(精度较高,适合当前应用模式) 文本无关:对使用者发音内容和语言没有要求,受信道环境影响比较大,精度不高 本课程主要介绍声纹识别的原型技术、系统架构及应用案例等。 讲师介绍: 郑斯奇,达摩院算法专家,毕业于美国哈佛大学,研究方向包括声纹识别、性别、年龄、语种识别等。致力于推动端侧声纹与个性化技术的研究和大规模应用。
相关文章
|
人工智能 编解码 云计算
这次,阿里云用AI与全球华人共迎中国年!
这次,阿里云用AI与全球华人共迎中国年!
|
PyTorch 算法框架/工具
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
关于如何使用torch2trt工具将PyTorch模型转换为TensorRT引擎文件的实操指南。
859 1
Jetson学习笔记(四):pth(torch模型文件)转trt(tensorrt引擎文件)实操
|
9月前
|
机器学习/深度学习 弹性计算 测试技术
Kimi Playground与ModelScope MCP合作,共建更智能的Agent
月之暗面发布开源模型Kimi K2,参数总量达1T,激活参数32B,基于MoE架构,具备强大的代码能力与通用Agent任务处理能力。在多项基准测试中取得SOTA成绩,并已开源。ModelScope与Kimi Playground集成,支持一键同步MCP服务,方便开发者使用。
545 0
|
9月前
|
存储 Java 对象存储
轻量级锁
轻量级锁是JVM为提升多线程性能而引入的锁机制,通过CAS操作减少线程阻塞,适用于同步块执行时间短且线程竞争不激烈的场景。其核心在于使用栈帧中的锁记录与CAS操作实现高效加锁,避免用户态与内核态切换带来的性能损耗。当无竞争时,仅需一次CAS即可完成锁获取;若竞争激烈,则可能升级为重量级锁。相比偏向锁和重量级锁,轻量级锁在低竞争环境下具有更高的效率。
243 0
|
分布式计算 Spark
【赵渝强老师】Spark的容错机制:检查点
Spark通过Checkpoint机制将RDD状态持久化到磁盘,以支持容错。当任务执行出错时,可以从检查点位置重新计算,减少开销。Checkpoint目录可设置为本地文件夹或HDFS。建议生产系统使用高可靠的文件系统保存检查点。文中详细介绍了在本地和HDFS上设置检查点目录的步骤,并附有代码示例和视频讲解。
378 7
|
测试技术
[googletest] --- 简易使用教程
[googletest] --- 简易使用教程
1200 0
|
供应链 监控 安全
云 HIS 系统的药品库存管理功能的特性
云HIS系统在药品库存管理方面引入了实时监控、智能预警、高效采购、精确追溯等多项新特性,提升了管理效率和准确性。系统支持多终端访问,实现自动化流程,并确保合规性和数据安全,同时还可与供应链集成,优化库存结构,提供全方位的药品管理解决方案。
573 5
云 HIS 系统的药品库存管理功能的特性
|
移动开发 网络协议 编译器
实战案例3:C语言实现的HTTP服务器
实战案例3:C语言实现的HTTP服务器
|
Web App开发
PanTools v1.0.27 多网盘批量管理、遍历分享、转存、重命名、复制...
一款针对多个热门网盘的文件管理、批量分享、批量转存、批量重命名、批量复制、批量链接检测、跨账号移动文件、多账号文件搜索等,支持不同网盘的不同账号的资源文件操作。适用于网站站长、资源爱好者、网盘拉新等,对于管理名下具有多个网盘多个账号具有实用的效果。
1087 0
|
消息中间件 运维 算法
【DSW Gallery】OneClassSVM 算法解决异常检测问题
OneClassSVM 是一种无监督的异常检测算法, 用于对无 label 的数据进行异常检测,并且支持将 OneClassSVM 模型部署成一个流服务,用来对实时数据进行异常检测。该D emo 将介绍如何在 DSW 中使用 OneClassSVM 算法解决异常检测问题。
【DSW Gallery】OneClassSVM 算法解决异常检测问题