音声認識に使用するインストールされている言語を選択する方法について説明します。
重要な API: サポートされているトピック言語、 サポートされている文法言語、 言語
ここでは、システムにインストールされている言語を列挙し、既定の言語を特定し、認識用に別の言語を選択します。
前提条件:
このトピックは、音声認識に基づいています。
音声認識と認識の制約に関する基本的な理解が必要です。
Windows アプリの開発を初めて使用する場合は、これらのトピックを参照して、ここで説明するテクノロジを理解してください。
ユーザー エクスペリエンスのガイドライン:
便利で魅力的な音声対応アプリの設計に関する役立つヒントについては、 音声設計ガイドライン を参照してください。
既定の言語を特定する
音声認識エンジンは、既定の認識言語としてシステム音声言語を使用します。 この言語は、デバイス設定 > システム > Speech > Speech Language 画面でユーザーによって設定されます。
SystemSpeechLanguage 静的プロパティを確認して、既定の言語を識別します。
var language = SpeechRecognizer.SystemSpeechLanguage;
インストールされている言語を確認する
インストールされている言語は、デバイスによって異なる場合があります。 特定の制約に依存している場合は、言語の存在を確認する必要があります。
手記 新しい言語パックがインストールされた後、再起動が必要です。 指定した言語がサポートされていない場合、またはインストールが完了していない場合は、エラー コード SPERR_NOT_FOUND (0x8004503a) の例外が発生します。
SpeechRecognizer クラスの 2 つの静的プロパティのいずれかをチェックして、デバイスでサポートされている言語を確認します。
SupportedTopicLanguages - 定義済みのディクテーションと Web 検索文法で使用される Language オブジェクトのコレクション。
SupportedGrammarLanguages - リスト制約または音声認識文法仕様 (SRGS) ファイルで使用される 言語 オブジェクトのコレクション。
言語を指定する
言語を指定するには、SpeechRecognizer コンストラクターで Language オブジェクトを渡します。
ここでは、認識言語として "en-US" を指定します。
var language = new Windows.Globalization.Language("en-US");
var recognizer = new SpeechRecognizer(language);
注釈
トピック制約を構成するには、SpeechRecognitionTopicConstraint を SpeechRecognizer の Constraints コレクションに追加し、CompileConstraintsAsync を呼び出します。 認識エンジンがサポートされているトピック言語で初期化されていない場合、SpeechRecognitionResultStatus として TopicLanguageNotSupported が返されます。
リスト制約を構成するには、SpeechRecognitionListConstraint を SpeechRecognizer の Constraints コレクションに追加し、CompileConstraintsAsync を呼び出します。 カスタム リストの言語を直接指定することはできません。 代わりに、リストは認識エンジンの言語を使用して処理されます。
SRGS 文法は、 SpeechRecognitionGrammarFileConstraint クラスによって表されるオープン標準の XML 形式です。 カスタム リストとは異なり、SRGS マークアップで文法の言語を指定できます。 認識エンジンが SRGS マークアップと同じ言語に初期化されていない場合、
関連資料
- 音声での対話
サンプル
Windows developer