信息
您所需的主题如下所示。但此主题未包含在此库中。

Windows Phone 的语音设计准则

2013/12/5

适用于:仅限于 Windows Phone 8。

在 Windows Phone 8 中,用户可以使用语音与您的应用进行交互。有三个语音组件可以与您的应用集成:语音命令语音识别文本到语音转换 (TTS)

语音的设计合理周全且能够有效地得以实现,它使用户可以通过可靠且愉悦的方式与 Windows Phone 应用进行交互,从而完成交互或甚至替代借助触摸、点按和笔势的交互。

本主题包含以下各节。

在您开始对支持语音的应用进行编码之前,最好先设想和定义用户体验及流程。

使用语音进入您的应用

您可以将语音命令集成到应用中,以便用户可以从应用的外部深层链接到您的应用。例如,您可以添加用于访问最常使用的应用区域或执行重要任务的语音命令

应用内的语音交互

在应用的内部,用户可以借助语音识别,通过说话来提供输入或完成任务。此外,在应用内部时,您也可以使用文本到语音转换 (TTS)(也称为“语音合成”),通过麦克风向用户讲出文本。

在用户打开应用后(或许是通过使用语音命令打开的),考虑下列问题以帮助定义语音交互。

  • 用户可以使用语音启动哪些操作或应用行为,例如:在页面间导航、启动命令或输入数据(例如,注释或消息)?

  • 用户会说出哪些短语来启动每个操作或行为?

  • 用户将如何得知他们可向应用讲话的时间和内容?

  • 使用语音而不是触摸时,哪些进程或任务可能会变得更快?例如,浏览较大的选项列表或在多个菜单级别或页面中导航。

  • 在没有网络连接的情况下,可以使用应用进行语音识别吗?

  • 您的应用是否面向可能具有自定义词汇要求的特定用户群(例如,诸如医药或科学等特定商业学科,或游戏人员,或特定的地理区域)?

当您通过语音命令和/或应用内语音作出了有关语音交互体验的某些决定后,您可以:

  • 列出用户可以使用您的应用执行的操作。

  • 将每个操作映射到命令。

  • 指定用户可以讲出以激活每个命令的一个或多个短语。

  • 如果应用也可以同用户对话,写出用户和应用将进行的对话。

语音命令

若要启用语音命令,您需要定义可识别短语的列表并将它们映射到语音命令定义 (VCD) 文件中的命令。对于语音命令随附的文字到语音转换读出,您可以在语音合成器将讲出的 VCD 文件中指定字符串,以确认要执行该操作。下面是在创建应用的 VCD 文件时应该谨记的一些提示:

  • 提示用户进行输入。

  • 显示语音输入音频级别的读出器。

  • 确认与用户语音匹配的短语。

  • 告知用户识别不成功并允许用户再次尝试(如果需要,反复尝试)。

  • 帮助用户从多个识别可能性(如果存在)中进行选择。

由于 Windows Phone 中的内置识别体验使用的交互模型与手机上全局语音上下文中使用的交互模型相同,用户更有可能了解何时应开始讲话、更有可能熟悉内置的声音、知道何时处理将完成、更有可能接收错误反馈,以及当存在多个匹配可能性时帮助消除歧义。有关更多信息,请参见显示 Windows Phone 8 的提示、确认和消除歧义选择

提示和确认

让用户了解基于当前应用上下文他们可以向应用讲出的内容,并向用户提供预期输入短语的示例。除非您想要允许用户讲出任何内容(例如,在输入短消息听写时),否则努力使提示明确并尽可能使答复具体化。例如,如果您使用“您今天要做什么?”来提示用户,答复的内容可能千差万别,并且可能需要非常大的语法来匹配可能的答复。但是,如果提示说“您是要玩游戏还是听音乐?”,随后提示会特定地请求“玩游戏”或“听音乐”两个答复中的一个。相较于大型语法,只匹配两个答复所需的语法更加容易编写并且能够更精确地执行识别。

当语音识别置信度较低时,请求用户确认。如果用户的意图并不明确,通常最好是提示用户进行说明,而不是让应用启动并非用户所指的操作。

Windows Phone 中内置的识别体验包括您可以使用提示文本和预期语音输入的示例进行自定义的屏幕,以及用于确认语音输入的屏幕。

为识别失败制订计划

计划如果识别失败,则应执行的操作。例如,如果无输入、识别质量较差或仅识别了部分短语,应用逻辑应该处理这些情况。考虑告知用户您的应用无法理解其意图,并要求用户重新尝试。向用户提供预期输入短语的另一示例,并在需要时重新启动识别以允许其他输入。如果识别尝试连续失败多次,考虑让用户键入文本或退出识别操作。Windows Phone 中内置的 UI 识别体验包括多个屏幕,它们可让用户了解识别不成功,并允许用户再次讲话以进行另一次识别尝试。

侦听或尝试更正音频输入中的问题。当语音识别器在音频输入中检测到可能会对语音识别准确度造成不利影响的问题时,它将生成 AudioProblemOccurred 事件。注册 AudioProblemOccurred 事件后,您可以使用随该事件返回的信息告知用户该问题,以便其能够采取更正措施(如果可能)。例如,如果语音输入的声音过小,您可以提示用户提高音量。不论您是否使用内置的语音识别体验,语音识别引擎都将持续生成此事件。有关更多信息,请查看处理 Windows Phone 8 的音频输入问题

Windows Phone 中的语法

语法将定义语音识别引擎可用来匹配语音输入的短语集。您可以向语音识别引擎提供 Windows Phone 随附的预定义语法或您创建的自定义语法。本节概述了您可以在 Windows Phone 中使用的语法类型并提供用于编写 SRGS 语法的提示。另请参见 Windows Phone 8 的语法,获取有关不同的语法类型以及何时在 Windows Phone 中使用它们的更多信息。

预定义的语法

Windows Phone 支持两种预定义的语法。若要匹配用户可能使用给定语言讲出的大量短语,考虑使用预定义的短消息听写语法。若要匹配在 Web 查询上下文中的输入,考虑使用预定义的 Web 搜索语法。这些可以使用的联机预定义语法可以识别最长 10 秒的语音音频并且不要求您进行任何编写,但是它们要求在运行时连接到网络,因为它们是联机的。

创建自定义的语法

如果您编写自己的语法,Windows Phone 中的列表语法格式也非常适用于识别清晰的短语。可以采用编程的方式更新这些短语并没有应用连接到网络时,将它们用于语音识别

要获取对语音识别体验的最大控制,请编写您自己的 SRGS 语法,如果您想要在单个识别中捕获多个语义含义,这非常有用。SRGS 语法也可以用于脱机语音识别。

编写 SRGS 语法的提示

保持较小的语法。相较于包含许多短语的大型语法,包含较少要进行匹配的短语的语法可以提供更好的识别准确度。通常,拥有用于应用中特定场景的多个小型语法比拥有一个用于整个应用的语法要更合适。替用户准备好要在每个应用上下文中讲出的内容并按需要启用和禁用语法,以便语音识别引擎只需搜索一小部分的短语来匹配每个识别场景中的语音输入。

设计您的语法以允许用户使用各种方式讲出命令,并对人们各种思考和表达方式变化提供支持。例如在 SRGS 语法中,您可以使用 GARBAGE 规则,如下所示:

  • 匹配语法未定义的语音输入。这将允许用户讲一些对应用并无意义的额外词语(例如,“给我”、“和”、“嗯”和“可能”等等),但是仍然可以成功识别对应用有用的词语(您已经在语法中显式定义了这些词语)。

  • 将 GARBAGE 规则作为一个项添加到替代项的列表中,以降低未在您的语法中定义的单词被错误识别的可能性。此外,如果语音识别引擎在替代项列表中将非预期的语音输入匹配到 GARBAGE 规则,您可以在识别结果中检测因匹配 GARBAGE 而返回的省略号 (…),然后提示用户再讲一次。但是,在替代项列表中使用 GARBAGE 规则也可能会增加与您语法中定义的短语相匹配的语音输入遭到错误地拒绝的可能性。

谨慎地使用 GARBAGE 规则并进行测试以确保语法达到您想要的效果。有关更多信息,请参见规则引用元素

尝试使用 sapi:subset 元素帮助匹配语音输入。sapi:subset 元素是对 SRGS 规范的 Microsoft 扩展,它能够帮助将用户的语音输入与启用的语法相匹配。可以通过语音识别引擎匹配您使用 sapi:subset 定义的短语,即使语音输入中只提供了部分的短语。您可以使用四种方法中的一种方法,定义可用于匹配的短语的子集。

尽量避免在语法中定义只包含一个音节的短语。尽管您应该避免定义大于其所需长度的短语,但对于包含两个或更多音节的短语,识别要更为准确。

定义了替代短语的列表后,请避免使用听起来相似的短语,因为语音识别器可能会混淆它们。例如,将听起来相似的短语(如,“你好”、“拟好”和“您好”)包括在替代项的列表中可能会导致较差的识别准确度。

预加载大型的语法以避免在加载大型语法时出现明显的滞后。

自定义的发音

考虑为专业词汇提供自定义的发音。如果您的应用包含罕见或虚构的单词或具有特殊发音的单词,通过定义自定义的发音,您也许能够提高这些单词的识别度。尽管语音识别引擎旨在为没有在其字典中定义的单词快速生成发音,但您也可以通过定义自定义的发音,提高语音识别文本到语音转换 (TTS) 的准确度。对于不常使用的单词,您可以在 SRGS 语法中创建自定义的发音内联。有关更多信息,请参见标记元素。对于常用的单词,您可能会想要创建单独的发音词典文档。有关更多信息,请参见关于词典和音标

测试语音识别准确度

在您的应用中,最好是在应用的目标用户群中,测试任何您提供的、用于支持语音识别的自定义 GUI 的识别准确度和有效性。在目标用户中测试您应用的识别准确度,是确定您应用中语音设计和实现的有效性的最佳方式。例如,如果用户获得的识别结果较差,那么他们所说的内容是否是您的实现不会侦听的内容?一种解决方法是修改语法以支持用户要说出的内容,而另一种解决方法是更改您的应用以让用户在语音交互之前了解他们能够讲的内容。测试结果能够帮助您发现改进应用的语法或语音识别流程的方法,以增强应用的有效性。

文本到语音转换

文本到语音转换 (TTS)(也称为语音合成)将从您提供的文本或语音合成标记语言 (SSML) XML 标记生成语音输出。下面是用于在应用中实现文本到语音转换 (TTS) 的一些建议。

  • 设计提示应该礼貌且具有鼓励性。

  • 考虑是否要使用文本到语音转换 (TTS) 向用户读出大量的文本。例如,用户可能愿意在 TTS 读出文本消息时进行等待,但是可能会在倾听一长列难于记忆的搜索结果时,感到不耐烦或混乱。

  • 允许用户选择停止文本到语音转换 (TTS) 读出,尤其是对于较长的读出。

  • 考虑允许用户选择男声和女声的文本到语音转换 (TTS)。对于每个支持的区域设置,Windows Phone 上的所有语言都拥有男声和女声两种语音。

  • 在您使用应用之前,请倾听文本到语音 (TTS) 读出。语音合成器尝试以智能且自然地方式读出短语,但是,有时可能会在智能性和自然性方面出现问题。

    • 智能性最重要,它反映出母语使用者能否理解由文本到语音转换 (TTS) 说出的单词或短语。有时会因罕见的语言模式交织在一起而导致智能性问题,其中部件编号或标点也是一个诱因。

    • 自然性是必须的,当读出和母语使用者说出短语时的韵律或节奏不同时,将产生自然性问题。将 SSML 而不是将纯文本用作合成器的输入可以解决这两种问题。有关 SSML 的更多信息,请参见使用 SSML 控制合成的语音语音合成标记语言参考

显示: