(转)设计一个语音交互界面(Voice User Interface)

此文为Medium上的一篇文章,搬运过来供自己和大家学习下。原文链接

https://medium.com/@xuuuwj/%E8%AE%BE%E8%AE%A1%E4%B8%80%E4%B8%AA%E8%AF%AD%E9%9F%B3%E4%BA%A4%E4%BA%92%E7%95%8C%E9%9D%A2-voice-user-interface-1-6364d4529a28

去年11月第一次接触VUI Design以来,已有三个多月,期间凭着网上的资料(主要是google designguideline\dueros.com\设计师手记\论文)以及自己的UX知识,我尝试设计了三个项目:一个买书的skill、一款智能音箱语音交互游戏、一个关于中国电信100M宽带业务的微信咨询机器人,前两个项目做到原型为止,最后一个已经在微信公众号后台实现。但这三个项目的重点都被放在conversation design上,并不能算完整意义上的VUI。

本月刚刚读完 Cathy Pearl的《语音用户界面设计》(《Designing Voice User Interface》) 和《Voice User Interface Design》(By Michael H. Cohen, James P. Giangola, Jennifer Balogh),书中完整地讨论了VUI设计的基本原则、重要的技术模块以及用户测试等问题,帮助勾画出了一张比较完整的VUI Design全景图。

在接下来的文章中,我会尝试用一个happy path串连起由0到1设计一个语音交互界面的过程,希望能定义好每个小框架中的设计问题,然后把它们变作一种肌肉记忆。

By the way, 因为说话这件事情太本能了,所以我觉得设计VUI困难的一点在于怎样从用户思维中跳出来,让自己重新回到设计师的角色上:)

VUI是合适的选择吗?

语音界面的优势主要体现在三个方面:一是速度,包括输入更方便、入口更浅、学习负担更小等;二是共时,比如允许多任务同时进行;三是探索性,更能激发用户的好奇心,提升用户体验。不过同时,也不要忘记语音交流是非常受场景、技术及用户习惯限制的一件事。

可以参考Google-fit-quiz里的问题,来验证VUI究竟是不是你的最佳选择。



设计VUI时我们在设计什么?

在回答之前,我们需要先了解:1.用户进行语音交互的方式有哪些,2.VUI系统内部是如何运作的。

1.用户进行语音交互的方式有哪些

The Nielson Norman Group将语音交互总结为以下屏幕优先、纯语音和语音优先三种模式:

Screen-first Interaction(屏幕优先): Here, we start with an application designed primarily for screen, and voice controls are added afterwards to enhance the experience.(设计一个以屏幕显示为主的App, 为了提升用户体验,会加一些语音元素)

 Voice-only Interaction(只有语音交互): Here there is no screen at all, and input and output is based on sound, such as a smart speaker.(VUI设备没有屏幕,输入和输出都要声音,比如智能扬声器)

Voice-first Interaction(语音优先): This is where an app designed primarily for voice is enhanced through the addition of a screen to output information.(以语音为主要交互方式的App,输出信息在屏幕上显示,通过这种方式提升App体验)

屏幕优先的情况下,最典型的代表就是手机语音助手,用户不仅可以通过语音,还可以通过键入、手势来进行操作,系统回复的内容也包含了语音、文本、图片、列表、链接等等。


纯语音交互的代表之一是智能音箱,用户通过“唤醒”词,比如“ Alexa”,来开启VUI交互;另一个代表是电话客服,也就是交互式语音应答(Interactive Voice Response, IVR),它可以通过电话线路理解人们的请求并指引用户完成相应的任务,比如预定机票、查询话费等。


2.对话系统是如何运作的

可以把对话系统看作人机翻译机,接收人类的自然语言并把它翻译成计算机能懂的结构化语言,以便进行信息匹配与加工,最终再以自然语言的形式反馈给说话者,完成一次“沟通”。“沟通”的本质是通过对最优解的一步步预测,以生成一个匹配概率尽可能高的反馈,需要计算能力、算法与数据的背后支持。

具体情况如下图所示:


当用户对系统讲话(utterance),系统会首先通过语音识别(ASR)①接收并解析语音,识别器可以提供多个可能的结果,即N-best list,从中为接收到的语音匹配最相似的词串文本(recognition hypothesis),然后反馈给下一个自然语言理解(NLU)②模块。

理解自然语言,即系统通过对词法、句法、语义的分析,识别(identify)用户的意图(intent)或者用户言语所涉及的领域(domain)、实体(entities),生成一个结构化的语义表示*,包括语言类型(陈述需求,询问属性,否定,选择疑问,等等)和条件信息(有什么条件、值是多少)。比如,“帮我查深圳的天气”这句话对应的语义表示为“inform(occasion=天气,location=深圳)”,其中“inform”代表“陈述需求”,括号里面的内容我们称之为slot-value pair。关于计算机是如何理解自然语言的,可以点击这里详细了解。

语义表示生成之后被转交给对话管理器(DM)③,由对话管理器来决定答复给用户什么以及怎样答复。

对话管理器是对话系统中很关键的一个模块,连结着一个或多个知识库(Knowledge Base, KB)④。通常包括:a.对话状态跟踪(dialogue state tracking),比如追踪执行用户意图所需的信息是否完整;b.对话策略(dialogue policy),即根据当前的状态决策下一步应该采取的最优动作,比如,是直接调用知识库(knowledge base)内容提供结果、询问特定限制条件、澄清或确认需求、还是开启相关的某个软件呢。

不同的对话系统,goal-driven system(比如任务型、问答型)和open-domain system(比如闲聊型),对话管理器的任务、知识库内容也不同。


任务型对话的场景相对复杂,通常会与用户进行多伦对话,需要参数化请求并通过slots filling的形式持续跟踪对话,直到识别出用户意图、特征词、slot-value pairs,即系系统要执行的动作的类型和操作参数。

问答型则不需要考虑复杂的对话逻辑,通常一轮对话就可以解决,重点在于语义解析与实体匹配。

闲聊型包括检索模式和生成模式,检索式是利用网络中已有的大量对话语料来构建索引,从索引中查找可能的候选回复,而生成式则直接从大量的人人的对话中学习对话模型,然后利用对话模型“创作”回复。

对话管理器会根据当前的对话状态生成一个预期回复(intended response),然后进入自然语言生成(NLG)⑤-文本转语音(TTS)⑥环节,把结构化的预期回复改造成自然语言,最终呈现给用户。

VUI体验包含三个层面:声音形象、交互方式、对话内容。

1.声音形象

常见的说法是“系统形象(system persona)”,相当于产品的前端,即系统通过的①语音特征,语气、语调、音色、节奏等。你可以选择使用合成(synthesized)声音,也可以选择录制的(recorded)声音;


②话术,编写问候语、特殊应答、提示语等时的用词、长短句这些,来展现与品牌相符的性格特质,比如亲切or正式,主动or顺从。

一个好的system persona能够很自然地成为你编写对话时的参考条件:“在这种情况下,这个persona会说什么或做什么?”

2.交互方式

VUI的交互方式与对话内容很难彻底分开讨论,但做这种尝试,有助于跳出用户视角,走进“黑盒子”中。

我倾向于将“交互方式”看作《Voice User Interface Design》中所言的“High-level design”,而将“对话内容”看作“Detailed design”。

“High-level design”关心的是怎样推动对话流畅地进行,让用户知晓系统的状态、任务进度等以便操作,比如系统在聆听、在期待收到指令、已离线等,可以理解为GUI中的弹窗、动效、视觉反馈等。

同时也为系统设计更好的规则,以便它做出更好的决策,比如在什么情况下需要向用户确认请求,可以理解为GUI设计中看不见的菱形判断框。


这些问题主要涉及到以下:

①对话模式设计

A.命令-控制式(command and control),即用户想要说话时必须先唤醒系统,方式可以是使用唤醒词、手势触摸或者按键。一轮对话完毕,用户须再次唤醒系统以开启下一轮对话。

B.对话式,即在一段封闭的对话期间,比如完成某项特定的任务时,用户不必每一回合都唤醒系统,而是自然地进行话轮转换,在轮到用户说话时系统自动开启麦克风。

C.混合式,即命控式与对话式的结合,系统向用户提供明显的状态切换标识,比如使用声音标志(earcon)以表示某个状态的开始与结束。

②对话策略(dialog strategy)设计

包括:

A.对话框架设计,即对话组织策略

《Designing Voice User Interface》一书把对话框架分为:a.定向对话(directed dialog),即系统主导对话,向用户询问非常具体的问题,以期望获得同样具体的答案;b.菜单层级结构(menu hierarchy),即系统向用户提供一系列选择,一旦用户完成了菜单a的选择,系统会继续提供菜单b,直到完成用户的请求;c.混合推动(mixed-initiative),即定向对话与菜单层级相混合,系统询问用户问题,也允许用户通过提供额外的信息来引导对话。


B.对话修补策略

技术并不完美,识别器可能还没有准备好接受呼叫者的话语,或者没有接收到说话者的语音,也可能响应时间太长 。用户也常常会突然扭转话题,或者提供太多信息。因此在正向推动对话之外,系统也必须配备处理这些情况的策略,以减少前功尽弃的概率。

a.错误恢复

可能出现的错误有以下四种:

·未检测到语音

·检测到语音,但没有识别

·正确识别语音,但无法处理

·部分语音识别错误

·延迟

一般有两种方法来处理这些情况,明确地说出来,最好能增加更多的细节让用户明白现在的状况,比如“抱歉,我没听懂,请说出您所在的城市和区域名称”,或者什么也不做。如何选择要取决于VUI系统的交互模式与用户场景。

Cathy Pearl 给出的参考因素

b.万能指令

比如“帮助”、“停止”、“请重复一遍”、“退出”等等。设计时不仅要考虑用户可能的需要,也要考虑用户会怎样表达这些需要。

③条件阈值(threshold)设计

每个应用程序都会定义系统能承受的最大错误,对话系统也不例外,尤其是上文对交互流程的描述也向我们清晰地展示了,从用户、到技术模块、再到数据资源,VUI的运行充满了不确定性。

《Designing Voice User Interface》 一书建议我们考虑设置三种阈值:单个对话状态中的最大连续错误数(特定于状态的错误计数),全局计算的最大错误数,以及最大错误确认数。

3.对话内容

「保证用户无论说什么都能得到一个最优响应」是VUI的终极目标。

牢记这一点便很容易理解Detailed design需要做什么,即深入到单条对话中,详细设计对话流程、辅助提示、以及异常情况处理方案。包括:

①对话设计

设计对话流程很像写剧本,即什么样的角色在什么情况下应该说什么话,不同之处在于对话系统的情节和部分角色是写定的。


各大平台上,Google、Amazon、Microsoft,都有对话设计的相关指导,可以通过这篇汇总文章来进一步了解。

②提示列表(prompt lists)

回想一下,人与人之间的沟通也要建立在共同知识的基础上,与机器对话也是一样。让用户了解系统能做什么、不能做什么、怎么做是对的等等,才能够实现高效率的对话。

这一点可以通过设计提示列表(prompt lists)来辅助实现,提示类型包括:

A.初始提示,

B.错误提示,

C.帮助提示,

D.特殊应答等等

提示的形式有多种,语音、文本、图像,甚至声音,都可以。

比如图中Google assistant采用带有文字的按钮来告诉我它能识别屏幕上的内容,而我只需点击或者说出指令即可;右边的两张图里,Google通过[视觉元素变换+“进入对话”“离开对话”的文字提示+音效(earcon)]来隐喻游戏的开始与结束。

比如图中Google assistant采用带有文字的按钮来告诉我它能识别屏幕上的内容,而我只需点击或者说出指令即可;右边的两张图里,Google通过[视觉元素变换+“进入对话”“离开对话”的文字提示+音效(earcon)]来隐喻游戏的开始与结束。

Google在designguideline for Google assistant里总结了他们运用在提示语(prompt)中的不同元素(types of conversational components),是一份非常好的参考。

我在我的上一篇VUI文章中贴出过一次这份列表

我如何设计一个完美的语音交互界面?

设计过程其实与一般产品并无大异,需要考虑:

1). 用户研究结果。包括用例、使用场景 、用户语言模式与心理模式等。可以参考博主@Lu的设计手记《语音理财案例分析》

2). 业务场景与目标。主要是据此确定功能列表、功能优先级、交互方式等。推荐百度AI社区的《酒店语音助手实例教程》

特殊的是,人工智能产品的形态多种多样,设计师必须对于产品所依附的硬件设备、产品背后的数据与技术支持有所了解,以确定产品边界、发现设计机会、持续优化用户体验。因此也需要考虑:

3). 技术与硬件基础。

比如设备联网程度,ASR引擎是否允许你设置N-best列表、自定义语音终止超时的时长,系统的负载量等。

4). 数据资源。

比如当前资源是否能满足该功能,哪些数据会影响系统响应时间等。


如何评估语音交互界面?

人们往往通过语音识别准确度来评估应用程序的运行效果,这也许是最糟糕的度量方式。一个应用程序能达到90%的识别准确度,同时自动实现85%的业务呼叫;另一个应用程序达到97%的识别准确度,且自动实现40%的业务呼叫,前者就一定比后者更差或更好吗?

——《如何构建语音识别应用》( Bruce Balentine, David Morgen)

评估涉及到三个问题:

1.如何定义成功

需要与开发人员、客户共同完成,以方便确定哪些状态是可以衡量的,哪些不可以。尽可能将成功状态具体化、数字化。

以下使一些成功标准的示例:

·60%想要预定酒店的用户最终完成了预定。

·85%的用户在1个月内至少完成了20天的每日健康记录。

·播放歌曲的错误率低于15%。

——《语音用户界面设计》Cathy Pearl

2.可以通过什么来衡量

A.任务完成率

B.用户(在何处)(因为什么)流失率

C.使用时长

D.语音打断情况

E.高频异常情况

……

*如果不思考原因,以上所有衡量结果都不可用

3.如何获得衡量数据

A.在早期建立记录日志

B.转录用户呼叫记录

……

参考资料:

《语音用户界面设计》Cathy Pearl

《Voice User Interface Design》Michael H. Cohen, James P. Giangola, Jennifer Balogh

百度AI社区

Google Design Guideline

Cortana Dev Center

Nielsen Norman Group

https://voiceprinciples.com/

《周耀明:自然语言对话引擎》

机器之心

你可能感兴趣的:((转)设计一个语音交互界面(Voice User Interface))