技能语音交互规范
1.1.1. 目录
本文档将与您分享如何使用Rokid开放平台快速为自己的产品打造一个更好的语音交互体验。
适用于:
- 为 Rokid 设备开发新的技能
- 为搭载Rokid 解决方案的设备设计完整交互
如果您是为 Rokid设备开发新技能,那您主要应该考虑用户和机器的语音交互。机器上的一些其他交互,可以复用Rokid设计好的通用方式。针对不同的需求,今后也会考虑添加用于机器的定制交互模板。
如果您是为搭载 Rokid解决方案的设备设计完整交互,那么除了语音(Text-To-Speech,简称TTS)作为主要反馈之外,您还应该考虑音效、光效、界面(包括机器和手机上的)等其他外界因素。
1.1.2. 实现用途
- 问若琪一个问题。
- 用户:"若琪,今天的农历日期是什么?"
- 农历日历:"今天农历是正月初十,是石头节,适宜嫁娶,出游,设宴。"
- 让若琪帮您做一件事。
- 用户:"若琪,帮我把咖啡煮上。"
- 智能家居:"好的,咖啡已经煮上了,2分钟后可以饮用。"
1.1.3. 用户与Rokid技能的互动方式
完整意图
单个请求语句包含了技能入口词和一个意图的全部参数,能够使Rokid直接回答。
- 用户:"若琪,请告诉我现在中国天津的天气是多少度?"
- 天气:"现在天津的天气是零下-2度,会有小雪,晚上转晴,建议穿羽绒服。"
小贴士: 尽可能给出完整意图的例句以培养用户给出完整意图的习惯。 给用户的反馈应该最快最简洁。更多反馈内容可以使用手机卡片(后续开放)去补充。
部分意图
部分意图的请求包含了技能入口词,但是意图的参数并不完全,需要用户进行额外补充。 在此情况下,您应该向用户指出3个以下比较重要的选项。如果选项多于3个,则建议把最后一个选项换成"更多",并通过手机卡片展示给用户。在用户激活"更多"后,继续展示另外三个选项作为下一步的操作。
- 用户:"若琪,帮我打开滴滴打车。"
- 滴滴打车:"好的,滴滴打车可以帮您叫车,送餐和代驾。请问您需要什么服务?"
- 用户:"打车。"
- 滴滴打车:"好的,请问要去哪里?"
- 用户:"西湖。"
- 滴滴打车:"好的,行程预估价格是XX元。需要现在帮您叫车吗?"
- 用户:"好的。"
无意图
用户对您的技能不了解,只是想尝试玩一下且并没有任何真正的目的。这个时候还是应该根据部分意图让用户尽量了解您技能的目标。
- 用户:"若琪,帮我打开滴滴打车。"
- 滴滴打车:"好的,滴滴打车可以帮您叫车,送餐和代驾。请问您需要什么服务?"
- 用户:"打车。"
- 滴滴打车:"好的,请问要去哪里?"
- 用户:"..."
- 滴滴打车:(过了xx秒) "您可以告诉我想去的地方。"
- 用户:"西湖吧"
- 滴滴打车:"好的,...."
- 滴滴打车:(如果没有任何有效反馈) "期待您的下一次用车需求。再见。"
1.1.4. 从用户那获取信息和提供反馈
反馈作用和提示类型
- 如果无法做到一次性给出用户答案或执行命令,则需要通过反馈从用户那里获取更多的信息。
- 反馈提示的类型有:
- 发散型:有可能会接收到各式各样的回复。
- 菜单型:有可能会给出用户一组选项(3-5个之间)
- 重问型:当对话出现错误或者不明确时,从问型反馈会帮助用户从错误中恢复出来,或者引导用户一步步给出正确指令或者操作。
为用户提供反馈选项
- 明确提示用户需要反馈并给出选项内容让用户选择。选项不能超过3个,同时也要防止过多重复的词语。
- 如果用户的问题会使反馈产生很多选项(多于3个),则可以按优先级给出最重要的3个选项进行提示:
- 网易云音乐:"您可以和我说'打开网易云音乐'并让我'播放热门歌曲'、'收藏当前歌曲'或者'播放王菲的流年'。"
- 如果一个应用比较复杂,在给出两个选项的同时可以给出"更多""帮助"的提示入口。之后如果用户选择了"更多","帮助",则显示出余下选项:
- 网易云音乐:"您可以跟我说'打开网易云音乐'并告诉我让我'播放热门歌曲'、'收藏当前歌曲'或者'更多'。"
- 用户:"更多。"
- 网易云音乐:"您可以说'播放R&B列表'、'单曲循环播放'、'顺序播放'、'播放王菲的歌曲'。"
- 在给出选项之后,永远记得要让用户进行选择或者给出确认答复。
- 选项也可以是给出肯定或者否定让用户进行选择。
提供智能反馈推送
- 如果有一个技能只有一个选项,进入技能之后不要让用户选择,而是直接给出反馈或者根据之前推测用户心理并给出最具正确性的反馈。
- 根据不同的用户画像提供不同类型的服务,例如老人首推的技能为医药陪护类的,而工作上班族首推的技能应该是实时资讯或者提升效率的技能。
语音反馈应该简洁明了
- TTS不像图像内容一样可以快速提取或者选择性略过,所以如果用TTS作为提示应该要简洁明了。
- 如果信息不全不足以给出正确反馈,应该一步步引导用户将信息补全,而不能一下子让用户把所有信息都给出来。
- 可以利用手机APP,让用户补充信息。可以首先给出一个例子,这个例子必须是一个完整意图作以此为引导,否则难以达到好的效果。
- 确认TTS要在会产生重大影响的时候给出,不要过多使用确认:
- 需要在网络上公开个人信息时
- 影响他人时
- 进行金钱交易或类似行为时
反馈信息的几点建议
- 在技能反馈的开头植入技能名称和Intent关键字会让用户有一种预先浏览了应用梗概的感觉:
- 若琪:"现在播放来自网易云音乐的热播榜单Top10列表。"
如果需要显示的内容过多过长,则需要把信息分解成为一组一组的方式,每组3-5个选项,同样按照优先级把最重要信息优先显示(例如第一组3个选项)。
根据用户提问去判断反馈选项数量。如果用户想要的是在几个选项之间进行选择,则可以优先显示3个选项,之后继续询问用户是否需要给出更多选项;如果用户想要的是最优选项,则直接展示最优的那一个,之后询问用户是否需要了解其他选项。
反馈信息应更多思考听觉的舒适度,而不是视觉。
尽量减少使用晦涩难懂的官方、技术术语。
与用户进行确认
- 确认的作用是给用户建立对机器的信心,帮助用户了解机器是懂用户的。
- 确认有两种使用途径:
- 显性的,作为不确定时需要让用户进行反馈从而进行下一个步骤。
- 隐性的,作为一个让用户参考自己位置坐标的提示。
- 显性确认是用明显的反问方式去跟用户确认机器听到的话,然后从用户那边得到正确的回复。
- 隐性确认是用一种不易被察觉到的方式复述机器听到的关键字但同时又能保证对话的自然流畅性。隐形确认不需要用户肯定的答复,但是如果用户察觉到了错误的回复,有可能会再复述一遍他刚才的需求。
小贴士:当机器有很大的信心给出正确回答时,推荐使用隐性确认。否则推荐使用显性确认。
处理对话错误
- 鼓励用户回答:当进入10s的拾音状态时,系统应该判断是否为人声或者杂音。如果判断为杂音则继续拾音,当10s结束系统仍处于无反馈时,系统应自动给出提示鼓励用户回答。
- 使用主动问询式的引导:当用户没有给全意图的时候,需要机器主动地一步步引导把意图补全或者结束对话。