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

注意

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

请参阅 语音命令定义 (VCD) 元素和属性 v1.2 中的最新版本。

VCD 文件中用于指定识别约束的 XML 标记元素和属性的参考文档。

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

元素和属性

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

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

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

元素说明
VoiceCommands 必需。 VCD 文件的根元素。 包含 1 到 15 个 CommandSet 元素,其中每个元素表示单个语言的语音命令。
CommandSet VoiceCommands 元素的必需子元素。 应用将使用所需 xml:lang 属性指定的语言接受的所有语音命令的容器。 xml:lang 属性的值在 VoiceCommand 文档中必须是唯一的,它是在语言名称窗体中指定的单个特定语言,对应于语音控制面板中可用的语言。 Name 属性是可选的,可以是任意字符串;但是,需要 Name 属性才能以编程方式引用和更新 CommandSet 元素的 PhraseListCommandSet 元素包含以下子元素:CommandPrefix (0 或 1) 、Example (正好 1) 、Command (1 到 100) 、PhraseList 元素 (0 到 10) ,PhraseTopic 元素 (0 到 10) 。 这些子元素必须按列出的顺序出现。
CommandPrefix CommandSet 元素的可选子元素。 如果存在,必须是 CommandSet 元素的第一个子元素。 指定用户在发出语音命令时可以说话的应用的用户友好名称。 这对于名称较长或难以发音的应用非常有用。 避免使用与其他支持语音的体验冲突的前缀。
命令

CommandSet 元素的必需子元素。

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

示例 CommandSet 元素和 Command 元素的必需子元素。 提供一个代表性示例,说明用户可以对 整个 CommandSet 和单个命令说出什么。 在手机上查看“ 我能说什么 ”屏幕时,用户可以看到这些示例。 当用户长按 “搜索 ”按钮并说“帮助”或“我可以说什么?”或点击“ 查看更多”时,将显示此屏幕。 示例不应包括应用程序的名称或前缀,因为此操作会自动处理。
ListenFor

必需 (Command 元素的 1 到 10 个) 子元素。

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

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

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

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

反馈 Command 元素的必需子元素。 指定在识别命令时将显示并读回给用户的文本。 如果 Feedback 元素包含对 PhraseList (或 PhraseTopic) 元素的 Label 属性的引用,则包含 Command 元素中的每个 ListenFor 元素还必须引用 PhraseList (或 PhraseTopic) 元素的同一 Label 属性。
导航Command 元素的必需子元素。 Target 属性是可选的,通常用于指定应用在启动时应导航到的页面。 如果使用“NavigationTarget”键SpeechRecognitionSemanticInterpretation.Properties 字典中省略 Target 属性) ,则可以获取 Target 属性 (或空字符串的值。
PhraseList

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

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

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

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

CommandSet 元素的可选子元素。 指定大型词汇识别的主题。 本主题可以为方案指定单个 (0 或 1) 场景 属性以及多个 (0 到 20 个) Subject 子元素,这些元素可用于提高实现的识别的相关性。 PhraseTopic 需要 Label 属性,其值可能显示在 ListenForFeedback 元素内(用大括号括起来),并用于引用 PhraseTopic

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

Subject 子元素指定特定于父 PhraseTopicScenario 属性的主题,以使用 PhraseTopic 进一步优化语音命令中语音识别结果的相关性。 主题将按提供的顺序进行评估,如果适用,以后指定的主题将限制先前指定的主题。 有效的内部文本值为“Date/Time”、“Addresses”、“City/State”、“Person Names”、“Movies”、“Music”和“Phone Number”。 例如: <Subject>Phone Number</Subject>

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

重要

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

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

另请参阅

Windows.ApplicationModel.VoiceCommands

VCD 元素和属性 v1.2

Cortana 交互

示例

Cortana 语音命令示例