語音命令定義 (VCD) 元素和屬性 v1.2

注意

消費者和企業 Cortana Skills Kit,以及這些平臺上建置的技能已被取代。

用於語音命令定義 (VCD) 檔案中用來指定辨識條件約束之 XML 標記元素和屬性的參考檔。

使用語音命令啟動應用程式,並指定要執行的動作或命令。 例如,使用者可以點選 [ 開始 ] 按鈕並說出 「Contoso Widgets,顯示最佳銷售人員」,以啟動 Contoso Widgets 應用程式,並流覽至「最佳銷售人員」頁面。

元素和屬性

如同任何 XML 檔案,VCD 檔案應該以指定 XML 版本和字元編碼的 XML 宣告開頭。

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

根元素是 VoiceCommands 元素,而且其 xmlns 屬性必須設定為 http://schemas.microsoft.com/voicecommands/1.2 (沒有大寫字元) 。 如需符合此架構的範例,請參閱 Cortana 語音命令範例

元素 Description
VoiceCommands 必要。 VCD 檔案的根元素。 包含介於 1 到 15 個 CommandSet 元素之間,每個元素都代表單一語言的語音命令。
CommandSet VoiceCommands 元素的必要子專案。 應用程式會以必要 xml:lang 屬性所指定語言接受之所有語音命令的容器。

xml:lang 屬性的值在 VoiceCommand 檔中必須是唯一的,而且它是單一特定語言,以語言名稱形式指定,對應至語音控制面板中可用的語言。

注意 系統會忽略 VCD 檔案中指定的語言,但系統不支援。

Name 屬性是選擇性的,可以是任何任意字串;不過,需要 Name 屬性,才能以程式設計方式參考及更新 CommandSet 元素的 PhraseListCommandSet 元素包含下列子元素:CommandPrefix (0 或 1) 或 AppName (0 或 1) 、Example (1) 、Command (1 到 100) 、PhraseList 元素 (0 到 10) ,以及 PhraseTopic 元素 (0 到 10) 。 這些子元素必須依照列出的順序發生。

互斥 CommandPrefix

CommandSet 元素的選擇性子專案。 如果存在,必須是 CommandSet 元素的第一個子專案。

指定使用者可在提供語音命令時說話之應用程式的用戶易記名稱。 這適用於名稱很長或難以讀出的應用程式。

避免使用與其他啟用語音功能體驗衝突的前置詞。

AppName

CommandSet 元素的選擇性子專案。 如果存在,必須是 CommandSet 元素的第一個子專案。

取代 CommandPrefix 並支援 ListenFor 元素的 RequireAppName 屬性和{builtin:AppName}片語。

指定使用者可在提供語音命令時說話之應用程式的用戶易記名稱。 這適用於名稱很長或難以讀出的應用程式。

避免使用與其他啟用語音功能體驗衝突的前置詞。

根據預設, AppName 支援為語音命令中的後綴。

命令

CommandSet 元素的必要子專案。

取得 Name 屬性。 定義使用者可以透過說話來起始的應用程式動作,以及使用者可以說出哪些動作來起始動作。 每個 Command 元素都可以與應用程式中的特定頁面相關聯。 包含下列必要子元素: 範例 (剛好 1) 、 ListenFor (1 到 20) 、 意見 反應 (剛好 1) ,而 Navigate (完全 1) 。 這些子元素必須依照列出的順序發生。

範例 CommandSet 元素 (1 個) ,而 Command 元素 (1 到 20) 。 提供一個代表的範例,說明使用者可以針對 整個 CommandSet 和個別命令說出的內容。 用戶可以從 [ 我說 什麼] 畫面看到這些範例。 當使用者按下並按住 Windows 手機上的 [搜尋] 按鈕 (時,會顯示此畫面) 或叫用 Cortana,並說出「說明」或「我可以說什麼?」,或點選 [查看更多]。

注意 範例應包含 AppNameCommandPrefix

ListenFor

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

包含您的應用程式會辨識此命令的字組或片語。 這可能包括或為 PhraseList (或 PhraseTopic) 元素的 Label 屬性的參考,該屬性會出現在以大括弧括住的 ListenFor 元素中,例如:{myList}或 {myTopic}。

您可以辨識任何 ListenFor 元素的內容,以啟動命令。

您可以指定選擇性 RequireAppName 屬性,以指出 AppName 元素的值是否可以預先加上、附加或使用內嵌的 ListenFor 元素。

此屬性支援四個值:

  • BeforePhrase

    用戶必須在 ListenFor 片語之前說出 AppName

  • AfterPhrase

    用戶必須說「In|開啟|Using|在 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 屬性。
互斥 NavigateCommand 元素的必要子元素,除非 Command 元素具有 VoiceCommandService 子元素。 Target 屬性是選擇性屬性,通常用來指定應用程式在啟動時應該巡覽的頁面。 如果您使用 “NavigationTarget” 索引鍵,從 SpeechRecognitionSemanticInterpretation.Properties 字典省略 Target 属性) ,則可以取得 Target 屬性的值 (或空字符串。
VoiceCommandService Command 元素的必要 子專案,除非 Command 元素具有 Navigate 子專案。 這個專案會指定語音命令是透過App Service處理, (查看 Windows.ApplicationModel.AppService) ,並在 Cortana 畫布上顯示意見反應。 Target 屬性是必要屬性,而且必須符合應用程式套件指令清單AppService 元素的 Name 屬性值。
PhraseList

CommandSet 元素的選擇性子系。 一個 CommandSet 元素不能包含超過 2,000 個 Item 元素,而 2,000 個項目元素是 CommandSet 中所有 PhraseList 元素的合併總計限制。 每個 項目 都會指定可辨識的字組或片語,以起始參考 PhraseList 的命令。 您可以從應用程式內以程式設計方式更新 Items 內容。 PhraseList 需要 Label 屬性,其值可能會以大括弧括住,並包含在 ListenForFeedback 元素內,並用來參考 PhraseList。

PhraseList 具有選擇性 的 Disambiguate 屬性 (預設為 true) ,指定當同時辨識清單中的多個專案時,此 PhraseList 是否會產生使用者混淆。 當為 false 時,此 PhraseList 也無法從 Feedback 元素內使用,而且不會為您的應用程式產生參數。 這適用於說出相同動作的替代方式,但不需要任何特定動作的片語。

在應用程式中,若要找出清單中說出的片語,您可以使用與 PhraseList標籤相同的值來存取 SpeechRecognitionSemanticInterpretation.Properties 字典。

項目 PhraseList 元素的選擇性子系。 可以辨識以起始命令的多個單字或片語之一。 CommandSet 在其所有子 PhraseList 元素中不能包含超過 2,000 個專案
PhraseTopic

CommandSet 專案的選擇性子系。 指定大型詞彙辨識的主題。 本主題可能會針對案例指定單一 (0 或 1) Scenario 屬性,以及數個 (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 字典。

重要

您無法將下面所列的特殊字元巢狀化。 例如,和 之類的[[start] new game][{myPhraseList}]語句是不可能的。

特殊字元 Description
{} 包含要參考之 PhraseListPhraseTopicLabel 屬性值,例如:{myList}或 {myTopic}。 用於 ListenForFeedback 元素。 Feedback 元素中的 PhraseListPhraseTopic 參考必須符合相同命令中 ListenFor 元素中的對應參考。
[]指定括住的單字或片語是選擇性的。 可以說出括住的單字或詞組,但不需要辨識才能起始命令。 例如,如果 ListenFor 元素的內容為 “[start] [begin] new game”,則使用者可以說出「開始新遊戲」或「新遊戲」或「開始新遊戲」 (或甚至「開始新遊戲」) 來起始命令。 每個方括弧元素都是獨立的選擇性專案,但必須以正確的順序來讀出它們。 因此,在「新遊戲」範例中,「開始新遊戲」會正常運作,但「開始新遊戲」無法運作,因為宣告它們的順序。

另請參閱

Windows.ApplicationModel.VoiceCommands

Cortana 互動

範例
Cortana 語音命令範例