私はC++/CXで音声制御のUWPアプリケーションを作成しました(問題がある場合は、Hololens用)。非常にシンプルなもので、主にいくつかのサンプルによると、これは音声認識イベントハンドラです:GRXMLの音声コマンド同義語を作成する
void MyAppMain::HasSpoken(SpeechContinuousRecognitionSession ^sender, SpeechContinuousRecognitionResultGeneratedEventArgs ^args)
{
if (args->Result->Confidence == SpeechRecognitionConfidence::Medium
|| args->Result->Confidence == SpeechRecognitionConfidence::High)
{
process_voice_command(args->Result->Text);
}
}
すべてがこれまでに動作しますが、認識結果はargs->Result->Text
変数です。今では、非常に限定された音声コマンドをサポートするだけで、他のものはすべて無視する必要がありますが、その制限されたコマンドセットでは、いくつかの可変性が必要です。最後の例はthis pageです。だから私はそれに基づいて、次の文法ファイル作っ:
<grammar version="1.0" xml:lang="en-US" root="nextCommands" xmlns="http://www.w3.org/2001/06/grammar" tag-format="semantics/1.0">
<rule id="nextCommands">
<item>
<one-of>
<item>next</item>
<item>go</item>
<item>advance</item>
</one-of>
<tag>out="next";</tag>
</item>
</rule>
</grammar>
私はそれで何をしたいですが、私は「次」のどちらかというとことで、「事前に」「行く」や、認識エンジンは、単に「次」を返し、上記はargs->Result->Text
です。私が今実際にしているのは、認識された単語の集合をそれらの3つの単語に限定することですが、私が言う単語を単に「次へ」に変換せずに返します。これは、<tag>
要素を無視するか、C++/CXプログラムで別の方法でコンテンツを取得する必要があるようです。または<tag>
は、私が思うように動作しません。それを機能させるために私は何を変えるべきですか?