音声認識エンジンの言語を指定する

音声認識に使用するインストールされている言語を選択する方法について説明します。

Important API: SupportedTopicLanguages, SupportedGrammarLanguages, Language

ここでは、システムにインストールされている言語を列挙し、既定の言語を特定し、認識用に別の言語を選択します。

前提条件:

このトピックは、音声認識に基づいています。

音声認識と認識の制約に関する基本的な理解が必要です。

Windows アプリの開発を初めて使用する場合は、ここで説明するテクノロジを理解するために、以下のトピックを参照してください。

ユーザー エクスペリエンスのガイドライン:

便利で魅力的な音声対応アプリの設計に関する役立つヒントについては、 音声設計ガイドライン を参照してください。

既定の言語を特定する

音声認識エンジンは、既定の認識言語としてシステム音声言語を使用します。 この言語は、デバイス設定 > システム > Speech > Speech Language 画面でユーザーによって設定されます。

SystemSpeechLanguage 静的プロパティを確認して、既定の言語を識別します。

var language = SpeechRecognizer.SystemSpeechLanguage; 

インストールされている言語を確認する

インストールされている言語は、デバイスによって異なる場合があります。 特定の制約に依存している場合は、言語の存在を確認する必要があります。

手記 新しい言語パックがインストールされた後、再起動が必要です。 指定した言語がサポートされていない場合、またはインストールが完了していない場合は、エラー コード SPERR_NOT_FOUND (0x8004503a) の例外が発生します。

 

SpeechRecognizer クラスの 2 つの静的プロパティのいずれかを調べて、デバイスでサポートされている言語を確認します。

  • SupportedTopicLanguages — 定義済みのディクテーションおよび Web 検索文法で使用される Language オブジェクトのコレクション。

  • SupportedGrammarLanguages — リスト制約または音声認識文法仕様 (SRGS) ファイルで使用されるLanguage オブジェクトのコレクション。

言語を指定する

言語を指定するには、Language オブジェクトを SpeechRecognizer コンストラクターに渡します。

ここでは、認識言語として "en-US" を指定します。

var language = new Windows.Globalization.Language("en-US"); 
var recognizer = new SpeechRecognizer(language); 

注釈

トピック制約を構成するには、SpeechRecognitionTopicConstraintConstraints コレクションに追加します。 SpeechRecognizerCompileConstraintsAsync を呼び出します。 認識エンジンがサポートされているトピック言語で初期化されていない場合、SpeechRecognitionResultStatusTopicLanguageNotSupported が返されます。

リスト制約は、SpeechRecognitionListConstraintConstraints コレクションに追加し、次に SpeechRecognizer に対して CompileConstraintsAsync を呼び出すことによって構成されます。 カスタム リストの言語を直接指定することはできません。 代わりに、リストは認識エンジンの言語を使用して処理されます。

SRGS 文法は、SpeechRecognitionGrammarFileConstraint クラスで表されるオープン標準の XML 形式です。 カスタム リストとは異なり、SRGS マークアップで文法の言語を指定できます。 CompileConstraintsAsync は、認識エンジンが SRGS マークアップと同じ言語に初期化されていない場合、SpeechRecognitionResultStatusTopicLanguageNotSupported で失敗します。

サンプル