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

音声認識に使われるインストール済みの言語を選ぶ方法について説明します。

重要な API: SupportedTopicLanguagesSupportedGrammarLanguagesLanguage

ここでは、システムにインストールされている言語を列挙し、どの言語が既定の言語であるかを指定します。また、音声認識用に別の言語を選びます。

前提条件:

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

音声認識と認識の制約についての基本的な知識が必要です。

Windows アプリを開発するのが初めての場合は、これらのトピックに目を通して、ここで説明されているテクノロジをよく理解できるようにしてください。

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

魅力的な音声認識対応アプリの設計に役立つ便利なヒントについては、「音声機能の設計ガイドライン」をご覧ください。

既定の言語を指定する

音声認識エンジンでは、システムの音声認識の言語を既定の認識言語として使います。 この言語は、デバイスで [設定] > [システム] > [音声認識] > [音声認識の言語] の順に移動し、画面上でユーザーが設定します。

SystemSpeechLanguage 静的プロパティを調べて、既定の言語を特定します。

var language = SpeechRecognizer.SystemSpeechLanguage; 

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

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

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

 

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

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

  • SupportedGrammarLanguages: 一覧の制約または Speech Recognition Grammar Specification (SRGS) ファイルと共に使われる Language オブジェクトのコレクションです。

言語を指定する

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

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

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

注釈

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

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

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

サンプル