语音命令定义 (VCD) 元素和属性 v1.2

注意

消费者和企业Cortana Skills Kit以及基于这些平台构建的技能已弃用。

语音命令定义中使用的 XML 标记元素和属性的参考文档 (VCD) 文件以指定识别约束。

使用语音命令启动应用并指定要执行的操作或命令。 例如,用户可以点击“ 开始 ”按钮并说出“Contoso 小组件,显示畅销书”,以启动 Contoso 小组件应用并导航到“畅销书”页面。

元素和属性

与任何 XML 文件一样,VCD 文件应以 XML 声明开头,该声明同时指定 XML 版本和字符编码。

<?xml version="1.0" encoding="utf-8"?>

根元素是 VoiceCommands 元素,其 xmlns 属性必须设置为 http://schemas.microsoft.com/voicecommands/1.2 () 没有大写字符。 有关符合此架构的示例,请参阅 Cortana Voice Command 示例

元素 说明
VoiceCommands 必需。 VCD 文件的根元素。 包含 1 到 15 个 CommandSet 元素,每个元素表示单种语言的语音命令。
CommandSet VoiceCommands 元素的必需子元素。 应用将使用所需 xml:lang 属性指定的语言接受的所有语音命令的容器。

xml:lang 属性的值在 VoiceCommand 文档中必须是唯一的,它是在语言名称窗体中指定的单个特定语言,对应于语音控制面板中可用的语言。

注意 将忽略 VCD 文件中指定但系统不支持的语言。

Name 属性是可选的,可以是任意字符串;但是,需要 Name 属性才能以编程方式引用和更新 CommandSet 元素的 PhraseListCommandSet 元素包含以下子元素:CommandPrefix (0 或 1) 或 AppName (0 或 1) ,示例 (正好 1 ) ,Command (1 到 100 ) ,PhraseList 元素 (0 到 10 ) ,PhraseTopic 元素 (0 到 10) 。 这些子元素必须按列出的顺序出现。

互斥 CommandPrefix

CommandSet 元素的可选子元素。 如果存在,必须是 CommandSet 元素的第一个子元素。

指定应用的用户友好名称,用户可以在发出语音命令时说出该名称。 这对于名称较长或难以发音的应用非常有用。

避免使用与其他启用语音的体验冲突的前缀。

应用名称

CommandSet 元素的可选子元素。 如果存在,必须是 CommandSet 元素的第一个子元素。

替换 CommandPrefix 并支持 ListenFor 元素的 RequireAppName 属性和{builtin:AppName}短语。

指定应用的用户友好名称,用户可以在发出语音命令时说出该名称。 这对于名称较长或难以发音的应用非常有用。

避免使用与其他启用语音的体验冲突的前缀。

默认情况下,在语音命令中支持 将 AppName 作为后缀。

命令

CommandSet 元素的必需子元素。

采用 Name 属性。 定义用户可以通过说话启动的应用操作,以及用户可以说什么来启动操作。 每个 Command 元素都可以与应用中的特定页面相关联。 包含以下必需的子元素: 示例 (正好 1 ) ,ListenFor (1 到 20) , 反馈 (正好 1) , 导航 (正好 1) 。 这些子元素必须按列出的顺序出现。

示例 CommandSet 元素的必需子元素 (正好 1 ) ,Command 元素 (1 到 20) 。 提供一个具有代表性的示例,说明用户可以对 CommandSet 作为一个整体和单个命令说什么。 用户可以从“ 我能说什么” 屏幕中看到这些示例。 当用户在 Windows 手机上按下并按住“ 搜索 ”按钮 () 或调用 Cortana 并说“帮助”或“我可以说什么?”或点击“ 查看更多”时,将显示此屏幕。

注意 示例应包括 AppNameCommandPrefix

ListenFor

需要 (1 到 20) Command 元素的子元素。

包含应用将为此命令识别的单词或短语。 这可能包括或引用 PhraseList (或 PhraseTopic) 元素的 Label 属性,该属性显示在用大括号括起来的 ListenFor 元素中,例如:{myList}或 {myTopic}。

可以识别任何 ListenFor 元素的内容以激活命令。

可以指定可选的 RequireAppName 属性,以指示 AppName 元素的值是可以预先添加、追加还是与 ListenFor 元素一起使用。

此属性支持四个值:

  • BeforePhrase

    用户必须在 ListenFor 短语之前说出 AppName

  • AfterPhrase

    用户必须说“In|On|使用 |在 ListenFor 短语之后使用“AppName”。

  • BeforeOrAfterPhrase

    用户必须在 ListenFor 短语之前或之后说出 AppName

  • ExplicitlySpecified

    AppName{builtin:AppName}ListenFor 中使用 显式引用。 用户不需要在 ListenFor 短语之前或之后说出 AppName

在可选字词周围使用括号。 也就是说,一个或多个单词可以说出来,但不需要匹配。 例如 <ListenFor>[Show] {options}</ListenFor>

可以通过在一对大括号内包括星号字符来设置通配符功能,例如 <ListenFor> Find {*} </ListenFor>。 在此示例中,只要用户说“Find”,语音命令就会匹配,可以选择后跟任何其他单词或短语。 如果匹配已启用通配符的 ListenFor 元素的语音命令, SpeechRecognitionResult.Text 属性将包含字符串“...”与通配符位于同一位置。

反馈 Command 元素的必需子元素。 指定在识别命令时显示并读回用户的文本。 如果 Feedback 元素包含对 PhraseList (或 PhraseTopic) 元素的 Label 属性的引用,则包含 Command 元素的每个 ListenFor 元素还必须引用 PhraseList (或 PhraseTopic) 元素的同一 Label 属性。
互斥 导航Command 元素的必需子元素,除非 Command 元素具有 VoiceCommandService 子元素。 Target 属性是可选的,通常用于指定应用在启动时应导航到的页面。 如果使用“NavigationTarget”键SpeechRecognitionSemanticInterpretation.Properties 字典中省略 Target 属性) ,则可以获取目标属性的值 (或空字符串。
VoiceCommandService Command 元素的必需子元素,除非 Command 元素具有 Navigate 子元素。 此元素指定通过应用服务处理语音命令, (查看 Windows.ApplicationModel.AppService) 并在 Cortana 画布上显示反馈。 Target 属性是必需的,并且必须与应用包清单AppService 元素的 Name 属性的值匹配。
PhraseList

CommandSet 元素的可选子元素。 一个 CommandSet 元素可以包含不超过 2,000 个 Item 元素,而 2,000 个 Item 元素是 CommandSet 中所有 PhraseList 元素的总组合限制。 每个 指定可识别的单词或短语,以启动引用 PhraseList 的命令。 可以从应用程序中以编程方式更新 Items 内容。 PhraseList 需要 Label 属性,其值可能会出现在 ListenForFeedback 元素内(由大括号括起来),并用于引用 PhraseList。

PhraseList 具有可选的 消除歧义 属性 (默认 true) ,该属性指定当同时识别列表中的多个项时, 此 PhraseList 是否会产生用户消除歧义。 如果为 false,则此 PhraseList 也将在 Feedback 元素中不可用,并且不会为应用程序生成参数。 这对于表示相同事情的替代方式的短语很有用,但不需要任何特定操作。

在应用中,若要找出列表中的短语,可以使用与 PhraseList标签相同的值键访问 SpeechRecognitionSemanticInterpretation.Properties 字典。

PhraseList 元素的可选子元素。 可以识别以启动命令的多个字词或短语之一。 CommandSet 在其所有子 PhraseList 元素中不能包含超过 2,000 个 Item 元素。
PhraseTopic

CommandSet 元素的可选子元素。 指定用于大型词汇识别的主题。 本主题可以为方案指定单个 (0 或 1) 方案 属性和多个 (0 到 20,) 主题 子元素,这些元素可用于改进已实现的识别的相关性。 PhraseTopic 需要 Label 属性,其值可能会出现在 ListenForFeedback 元素中(由大括号括起来),并用于引用 PhraseTopic

Scenario 属性 (默认的“听写”) 指定此 PhraseTopic 的所需方案,该方案可以使用 PhraseTopic 优化语音命令的基础语音识别,以生成更适合命令所需上下文的结果。 有效值为“自然语言”、“搜索”、“短消息”、“听写”、“命令”和“表单填充”。

Subject 子元素指定特定于父 PhraseTopicScenario 属性的主题,以使用 PhraseTopic 进一步优化语音命令中语音识别结果的相关性。 将按提供的顺序评估使用者,并在适当时,稍后指定的主题将约束先前指定的主题。 有效的内部文本值为“日期/时间”、“地址”、“城市/州”、“人员姓名”、“电影”、“音乐”和“电话号码”。 例如: <Subject>Phone Number</Subject>

在应用中,若要找出由 PhraseTopic 引用表示的 ListenFor 元素子集中讲的内容,可以使用与 PhraseTopic的 Label 值相同的键访问 SpeechRecognitionSemanticInterpretation.Properties 字典。

重要

无法嵌套下面列出的特殊字符。 例如,不能使用 和 [{myPhraseList}][[start] new game]语句。

特殊字符 说明
{} 包含用于引用的 PhraseListPhraseTopicLabel 属性的值,例如:{myList}或 {myTopic}。 在 ListenForFeedback 元素中使用。 Feedback 元素中的 PhraseListPhraseTopic 引用必须与同一命令中的 ListenFor 元素中的相应引用匹配。
[]指定封闭的单词或短语是可选的。 可以说出封闭的单词或短语,但不需要识别即可启动命令。 例如,如果 ListenFor 元素的内容为“[start] [begin] [begin] new game”,则用户可以说出“开始新游戏”或“新游戏”或“开始新游戏” (甚至“开始新游戏”) 来启动命令。 每个括号元素都是独立的可选元素,但必须按正确的顺序进行朗读才能识别它们。 因此,在“新游戏”示例中,“开始开始新游戏”将正常工作,但“开始开始新游戏”将不起作用,因为它们的声明顺序。

另请参阅

Windows.ApplicationModel.VoiceCommands

Cortana 交互

示例
Cortana 语音命令示例