音声コマンド定義 (VCD) の要素および属性 v1.2

注意

コンシューマーとエンタープライズのCortana Skills Kitと、これらのプラットフォームに基づいて構築されたスキルは非推奨になりました。

認識制約を指定するために音声コマンド定義 (VCD) ファイルで使用される XML マークアップ要素と属性のリファレンス ドキュメント。

音声コマンドを使用してアプリを起動し、実行するアクションまたはコマンドを指定します。 たとえば、ユーザーは [スタート ] ボタンをタップし、"Contoso Widgets,show best sellers" と言って、Contoso Widgets アプリを起動し、"ベスト セラー" ページに移動できます。

要素と属性

XML ファイルと同様に、VCD ファイルは XML バージョンと文字エンコードの両方を指定する XML 宣言で始まる必要があります。

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

ルート要素は VoiceCommands 要素であり、その xmlns 属性は (大文字なし) に設定する http://schemas.microsoft.com/voicecommands/1.2 必要があります。 このスキーマに準拠する例については、 Cortana 音声コマンドのサンプルを参照してください。

要素 説明
VoiceCommands 必須。 VCD ファイルのルート要素。 1 から 15 個の CommandSet 要素が含まれており、それぞれが 1 つの言語の音声コマンドを表します。
CommandSet VoiceCommands 要素の必須の子要素。 アプリが必要な xml:lang 属性で指定された言語で受け入れるすべての音声コマンドのコンテナー。

xml:lang 属性の値は VoiceCommand ドキュメントで一意である必要があり、Speech コントロール パネルで使用できる言語に対応する言語名形式で指定された 1 つの特定の言語です。

メモ VCD ファイルで指定されているが、システムではサポートされていない言語は無視されます。

Name 属性は省略可能であり、任意の文字列を指定できます。ただし、CommandSet 要素の PhraseList をプログラムで参照および更新するには、Name 属性が必要です。 CommandSet 要素には、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)、 Feedback (正確には 1)、 Navigate (正確には 1)。 これらの子要素は、一覧表示されている順序で行う必要があります。

CommandSet 要素 (正確には 1) と Command 要素 (1 から 20) の両方の必須の子。 CommandSet 全体と個々のコマンドに対してユーザーが言うことができる内容の代表的な例を示します。 これらの例は、[ What can I say ]\(言える内容\) 画面からユーザーに表示されます。 この画面は、ユーザーが (Windows フォンで) [検索 ] ボタンを長押しするか、 Cortana を呼び出して "ヘルプ" または "何を言うことができますか?" と言ったり、[ 詳細を表示] をタップしたりしたときに表示されます。

メモ 例には、 AppName または CommandPrefix を含める必要があります。

ListenFor

Command 要素の必須 (1 から 20) の子要素。

このコマンドに対してアプリで認識される単語または語句が含まれています。 これには、 PhraseList (または PhraseTopic) 要素の Label 属性への参照が含まれる場合や、中かっこで囲まれた ListenFor 要素に表示されます (例: {myList}、{myTopic})。

ListenFor 要素の内容を認識して、コマンドをアクティブ化できます。

省略可能な RequireAppName 属性を指定して、 AppName 要素の値を ListenFor 要素の前に追加するか、インラインで使用できるかを示すことができます。

この属性は、次の 4 つの値をサポートしています。

  • BeforePhrase

    ユーザーは、ListenFor 句の前に AppName を指定する必要があります。

  • AfterPhrase

    ユーザーは"In|オン|Using|With" AppName after the ListenFor phrase.

  • BeforeOrAfterPhrase

    ユーザーは、ListenFor 句の前または後に AppName を指定する必要があります。

  • ExplicitlySpecified

    AppName は、ListenFor で を使用して{builtin:AppName}明示的に参照されます。 ユーザーは、ListenFor 句の前または後に AppName を指定する必要はありません。

省略可能な単語を角かっこで囲みます。 つまり、単語または単語は読み上げられますが、一致させる必要はありません。 たとえば、「 <ListenFor>[Show] {options}</ListenFor> 」のように入力します。

などの中かっこのペア内にアスタリスク文字を含めることで、 <ListenFor> Find {*} </ListenFor>ワイルドカード機能を設定できます。 この例では、ユーザーが "検索" を読み上げる限り、音声コマンドは一致し、必要に応じて他の単語または語句が続きます。 ワイルドカードが有効な ListenFor 要素の音声コマンドが一致した場合、 SpeechRecognitionResult.Text プロパティには文字列 "..." が含まれます。をワイルドカードと同じ位置に配置します。

フィードバック Command 要素の必須の子要素。 コマンドが認識されたときにユーザーに表示および読み取り戻すテキストを指定します。 Feedback 要素に PhraseList (または PhraseTopic) 要素の Label 属性への参照が含まれている場合、含む Command 要素内のすべての ListenFor 要素も、PhraseList (または PhraseTopic) 要素の同じ Label 属性を参照する必要があります。
相互に排他的 NavigateCommand 要素に VoiceCommandService 子要素がない限り、Command 要素の必須の子要素。 Target 属性は省略可能であり、通常、アプリの起動時に移動するページを指定するために使用されます。 "NavigationTarget" キーを使用して、SpeechRecognitionSemanticInterpretation.Properties ディクショナリから Target 属性 (または Target 属性を省略した場合は空の文字列) の値を取得できます。
VoiceCommandService Command 要素に Navigate 子要素がない限り、Command 要素の必須の子要素。 この要素は、音声コマンドがアプリ サービス ( Windows.ApplicationModel.AppService を参照) を介して処理され、 Cortana キャンバスにフィードバックが表示されることを指定します。 Target 属性は必須であり、アプリ パッケージ マニフェストAppService 要素の Name 属性の値と一致する必要があります。
PhraseList

CommandSet 要素の省略可能な子。 1 つの CommandSet 要素には 2,000 個以下の Item 要素を含めることができます。また、2,000 個の Item 要素は、CommandSet 内のすべての PhraseList 要素の合計制限です。 各項目はPhraseList を参照するコマンドを開始するために認識できる単語または語句を指定します。 Items コンテンツは、アプリケーション内からプログラムによって更新される場合があります。 PhraseList には Label 属性が必要です。この値は、ListenFor 要素または Feedback 要素内で中かっこで囲まれており、PhraseList を参照するために使用されます。

PhraseList には省略可能な Disaiguate 属性 (既定値は true) があり、リストの複数の項目が同時に認識されたときに、この PhraseList がユーザーのあいまいさを解消するかどうかを指定します。 false の場合、この PhraseListFeedback 要素内からも使用できず、アプリケーションのパラメーターは生成されません。 これは、同じことを言う別の方法ですが、特定のアクションを必要としないフレーズに役立ちます。

アプリで、リストのどの語句が読み上げられたかを調べるには、PhraseListLabel と同じ値を持つキーを使用して SpeechRecognitionSemanticInterpretation.Properties ディクショナリにアクセスできます。

Item PhraseList 要素の省略可能な子。 コマンドを開始するために認識できる複数の単語または語句の 1 つ。 CommandSet には、すべての子 PhraseList 要素に対して 2,000 個以下の Item 要素を含めることができます。
PhraseTopic

CommandSet 要素の省略可能な子。 大規模なボキャブラリ認識のトピックを指定します。 このトピックでは、シナリオに対して 1 つの (0 または 1) Scenario 属性と複数の (0 から 20) Subject 子要素を指定できます。これは、達成された認識の関連性を向上させるために使用できます。 PhraseTopic には Label 属性が必要です。この値は、ListenFor 要素または Feedback 要素内で中かっこで囲んで表示され、PhraseTopic を参照するために使用されます。

Scenario 属性 (既定の "Dictation") は、この PhraseTopic に対して必要なシナリオを指定します。PhraseTopic を使用して音声コマンドの基になる音声認識を最適化し、コマンドの目的のコンテキストに適した結果を生成できます。 有効な値は、"自然言語"、"検索"、"短いメッセージ"、"ディクテーション"、"コマンド"、および "フォームの入力" です。

Subject 子要素は、親 PhraseTopic の Scenario 属性に固有のサブジェクトを指定し、PhraseTopic を使用して音声コマンド内の音声認識結果の関連性をさらに絞り込みます。 サブジェクトは、指定された順序で評価され、必要に応じて、後で指定されたサブジェクトは、以前に指定されたものを制約します。 有効な内部テキスト値は、"Date/Time"、"Addresses"、"City/State"、"Person Names"、"Movies"、"Music"、および "Phone Number" です。 例: <Subject>Phone Number</Subject>

アプリで、PhraseTopic 参照で表される ListenFor 要素のサブセットで読み上げられたコンテンツを確認するには、PhraseTopicLabel と同じ値を持つキーを使用して SpeechRecognitionSemanticInterpretation.Properties ディクショナリにアクセスできます。

重要

以下に示す特殊文字を入れ子にすることはできません。 たとえば、 や [{myPhraseList}] などの[[start] new game]ステートメントは使用できません。

特殊文字 説明
{} 参照する PhraseList または PhraseTopicLabel 属性の値を格納します (例: {myList}、{myTopic})。 ListenFor 要素または Feedback 要素内で使用されます。 Feedback 要素の PhraseList または PhraseTopic 参照は、同じコマンドの ListenFor 要素内の対応する参照と一致する必要があります。
[]囲まれた単語または語句が省略可能であることを指定します。 囲まれた単語または語句は読み上げられますが、コマンドを開始するために認識する必要はありません。 たとえば、 ListenFor 要素の内容が "[start] [begin] new game" の場合、ユーザーは "新しいゲームの開始" または "新しいゲームの開始" または "新しいゲームの開始" (または "新しいゲームの開始" ) を話してコマンドを開始できます。 角かっこで囲まれた各要素は個別に省略可能ですが、認識するには正しい順序で読み上げる必要があります。 そのため、"新しいゲーム" の例では、"新しいゲームの開始" は機能しますが、"新しいゲームの開始" は、宣言された順序のため機能しません。

こちらもご覧ください

Windows.ApplicationModel.VoiceCommands

Cortana の操作

サンプル
Cortana 音声コマンドのサンプル