# 语音技能设计规范

本文档根据我们的经验和调研,与你分享如何打造逻辑严谨,流畅性佳的自定义技能,让用户获得更好的语音交互体验。

# 技能场景定义

设计一个技能首先需要有清晰的定义和明确的独立应用场景,避免用一个技能完成多个功能或面向多个场景。

# 定义技能

定义技能时,你应该思考下面几个问题:

  1. 这个技能能做什么?为什么用户需要这个技能?

  2. 用户在使用这个技能之前,当时,之后,会干什么?

  3. 在这个技能中,有什么是用户不使用这个技能或使用别的技能得不到的?

  4. 有什么信息是用户希望得到的?

  5. 用户通过说/做什么能唤醒这个技能?

  6. 哪一个功能点能直接支持这个技能?

  7. 技能提供的信息是否需要从别的网页或应用中调用?

# 技能语料设计

确认好上面的问题之后,开发者就可以开始编辑语料库了。

语料指用户发出指令后技能做出回应的话术,尽可能多地考虑用户和技能之间的对话的发展。好的语料应该:

# 简洁直白,亲切友好

  1. 使用简洁、口语化、利于理解的语言,不要过于机械化。

正确示范

  • 用户:帮我订今晚去北京的机票。
  • 技能:今晚飞北京已经没有票了,要不要改坐高铁呢?

错误示范

  • 用户:帮我订今晚去北京的机票。
  • 技能:今晚去往北京的机票已无剩余,无法购买,可否改乘高铁?
  1. 技能是用户体贴的朋友,语料可以兼备幽默、风趣、委婉、温柔、俏皮的多重风格转换,增加生动活泼力。

正确示范

  • 用户:你最喜欢的人是谁
  • 技能:欲把相思说似谁,当然是你呀~

错误示范

  • 用户:你最喜欢的人是谁?
  • 技能:没什么喜欢的
  1. 尽可能避免使用歉意词。

正确示范

  • 用户:打电话给爸爸
  • 技能:通讯录中没有找到“爸爸”呢。

错误示范

  • 用户:打电话给爸爸。
  • 技能:对不起,通讯录中没有找到“爸爸”。
  1. 别让回应太复杂,避免重复的短语。

正确示范

  • 用户:帮我找一下手机。
  • 技能:好的,请说一下你的电话号码哦。

错误示范

  • 用户:帮我找一下手机。
  • 技能:感谢使用找手机技能,本技能可以通过拨打你的电话找到你的手机。现在说出你的手机号码,帮你拨打哦。
  1. 尽可能只回复重点,无需给出过多无关消息。

正确示范

  • 用户:今天要带伞吗?
  • 技能:今天北京雷阵雨,需要带伞哦。

错误示范

  • 用户:今天要带伞吗?
  • 技能:今天北京雷阵雨,气温15~21度,空气湿度80%,记得要带伞哦。
  1. 避免过多无意义的语音交互。

正确示范

  • 用户:给我讲个笑话吧。
  • 技能:(随机讲笑话)

错误示范

  • 用户:给我讲个笑话吧。
  • 技能:你是要听笑话对吗?
  1. 避免要求用户用特定的方式表达意图。

正确示范

  • 用户:明晚八点有个饭局。
  • 技能:需要我帮你设置一个明晚八点的提醒吗?

错误示范

  • 用户:明晚八点有个饭局。
  • 技能:如果你想设置提醒,请对我说:提醒我明晚八点有个饭局。

# 丰富多变,应变能力强

  1. 在保持简洁的情况下,可以给出多种不同的回应方式,避免用户多次进入技能得到的都是一样的回复,使技能更人性化。

举例

  • 用户:红烧肉怎么做?
  • 技能回复1:鱼香肉丝是道不错的美味呦,做法是这样的:...
  • 技能回复2:做菜我最拿手哦,红烧肉的步骤是:...
  • 技能回复3:帮你找到啦:...
  1. 同时也尽可能穷举用户可能使用的口语话表达方式,并对此给出回应。

举例

  • 用户表达1:今天北京天气怎样?
  • 用户表达2:今天北京天气好吗?
  • 用户表达3:今天北京天气冷吗?
  • 技能:北京今天小雨,最高温度21,最低温度15,记得带伞哦~

# 以服务用户的核心意图为前提

设计语料时,应优先回复用户的核心意图,注重效率,尽可能提高回复与核心意图的相关度。当无法满足用户需求时,应表达清楚技能的当前状态,以免用户感到困惑。

正确示范

  • 用户:我想看新浪财经频道。
  • (没有新浪财经频道的信源,但找到爱奇艺财经频道)
  • 技能:没有找到新浪财经频道,可以看看爱奇艺财经频道。

错误示范

  • 用户:我想看新浪财经频道。
  • (没有新浪财经频道的信源,但找到爱奇艺财经频道)
  • 技能:为你找到爱奇艺财经频道。

# 清晰地给出选择

在为用户提供选择的时候,要组织好语言,明确这是一个从几个选择里挑一个的问题,而不是“是与否”、“要或不要”的问题。

正确示范

  • 用户:帮我定杯拿铁。
  • 技能:你是想要中杯还是大杯呢?
  • 用户:大杯。

错误示范

  • 用户:帮我定杯拿铁。
  • 技能:你是要中杯或者大杯吗?
  • 用户:是的。

# 回应要为用户的 “耳朵” 服务

以应用技能的设备没有屏幕,或者用户不会 “看” 信息为前提,让技能的回复能通过 “听” 就能很容易地理解。

正确示范

  • 用户:火箭队和魔术现在比赛情况怎样?
  • 技能:火箭队目前得分66,魔术队目前得分54,比赛进行到第三场。

错误示范

  • 用户:火箭队和魔术现在比赛情况怎样?
  • 技能:火箭(65-17-1)66,魔术(25-57-0)54,第三场,剩余时间 5:24。

# 兜底语料

有时候用户可能会提出超出信源库的问题或需求,此时需要设计友好的兜底语料,在用户没有得到满足的时候依然保持良好的使用体验。

正确示范

  • 用户:红烧肉怎么做?
  • 技能回复1:我突然想不起来了,问我别的菜呗。
  • 技能回复2:脑袋空空,咱们换个菜吧。

错误示范

  • 用户:红烧肉怎么做?
  • 技能:我没听清,能再说一遍吗?

# 考虑用户关闭数据获取的情况

为保证用户的隐私安全,技能应允许用户不授权或关闭获取数据,并考虑用户关闭了数据获取的情况下技能能如何应对。

正确示范

  • 用户:今天天气怎样?
  • 技能:请问你现在在哪个城市?
  • 用户:我在北京。
  • 技能:今天北京天气晴朗,气温为15~21度。

错误示范

  • 用户:今天天气怎样?
  • 技能:你还没授权定位数据,无法使用天气查询哦。

# 多轮对话设计

基础的语料设计可能不能满足用户与技能的实际互动需求。用户可能会说得太少,也可能说得太多,还可能词不达意,说很多开发者预料不到的东西。运用以下技巧,开发者可以扩展语料库,用多轮对话的形式更好地捕获用户在对话中给出的重要信息。

# 首先列出最短的对话路径

最短的对话路径通常是用户一次性提供所有有用信息的对话。

# 将备选路径和决策树列举出来

如果用户所说的没有将所有必需的信息给出,可以在流程中确定备选路径。

# 概括出系统逻辑

识别系统决策,如这是一个新用户还是一个老用户。检查用户遵循的流程可能可以改善用户体验。

# 对话中加入引导语

不要假设用户知道接下来该做什么或将要发生什么。多轮对话中可以加入友好的引导语,让用户清晰地知道接下来该怎样与技能进行交流。如:

  1. 提示用户何时需要提供更多信息。

  2. 一次只要求一个信息。

  3. 给用户提供选择,但尽量不要给出三个以上的选项。

  4. 向用户确认他的选择和重要信息。

  5. 传达多个信息时应通过“第一步”、“然后”、“最后”等序列词便于用户理解。

# 汇总选择

进行多论对话后,应向用户确认各轮回答的信息并反馈给用户。

正确示范

  • 用户:帮我订今天去北京的机票。
  • 技能:好的,请说出发地点。
  • 用户:广州
  • 技能:好的请说起飞时间段。
  • 用户:中午十二点之后。
  • 技能:好的,你需要订X月X日,中午十二点后,从广州飞往北京的航班对吗?
  • 用户:是的。
  • 技能:好的,为你找到...

错误示范

  • 用户:帮我订今天去北京的机票.
  • 技能:好的,请说出发地点。
  • 用户:广州。
  • 技能:好的,请说起飞时间段。
  • 用户:中午十二点之后。
  • 技能:好的,为你找到....

# 处理潜在需求

多为用户考虑场景中潜在的需求,并尽可能周全地满足。例如:当介绍复杂的规则时,可以为用户考虑没听清或没听懂的情况,提供再听一遍的选项。也可以为已经了解规则的用户提供跳过的选项。

# 精细化拆分

某个场景下的各种交互情况均需进行考虑,作精细化拆分,针对各种情况,需要提供针对性更强的回答,要求符合语境及交互感。

正确示范

  • 用户:成语接龙
  • 技能:已为你打开成语接龙,你可以选择你先开始或者我先开始,不想玩了请对我说“退出”。
  • 用户:你先开始。
  • 技能:好的,那我先来咯~ 和风细雨。
  • 用户:雨过天晴。
  • 技能:真棒,回答正确,再接再厉。下一个,雨过天晴。
  • 用户:熠熠生辉。
  • 技能:你的回答不正确哦,再试一次吧~
  • 用户:提示一下吧
  • 技能:好的,雨过天晴可以接晴天霹雳。
  • 用户:换一个吧
  • 技能:如果你想重开一局,可以对我说“重来”。

错误示范

  • 用户:打开成语接龙
  • 技能:和风细雨
  • 用户:雨过天晴
  • 技能:晴天霹雳
  • 用户:熠熠生辉
  • 技能:你的回答不对哦,再试一次~
  • 用户:提示一下吧
  • 技能:我好像没听懂...
  • 用户:换一个吧
  • 技能:我好像没听懂...

# 无响应时主动反馈

当用户连续多次没有命中意图时,在告知没有理解并且作出更清晰的引导同时,需要明确告知用户应该怎样退出技能或主动为用户退出当前技能。

尽可能用“鼓励”的方式引导用户更正“错误”,主动询问用户意图,引导用户完成目标,而不是轻易终结对话。

正确示范

  • 用户:我想查天气。
  • 技能:请问要查哪个城市的天气呢?
  • 用户:天气热要多喝水。
  • 技能:这个没听清呢,请你说出要查天气的城市名哦。

错误示范

  • 用户:我想查天气。
  • 技能:请问要查哪个城市的天气呢?
  • 用户:天气热要多喝水。
  • 技能:这个没听懂,自动为你退出技能。

# 发布技能

# 确保服务稳定可靠

应该严格保证技能的后端服务稳定可靠,快速响应用户请求,达到用户良好的使用预期。

# 技能信息有标识度

通过定义独立且有差异化的技能功能,选用不易混淆的名称来命名你的技能,给用户一个清晰的印象,让你的技能脱颖而出。

# 技能描述简洁易懂

尽可能完善技能的描述信息,具体要求可参照技能审核规范