Unity 2018.2 内で使用System.Speech
して、プレーヤーが話している間にいくつかの単語チェックを実行しています。すべて問題ありません。単語認識は機能していますが、停止できませんSpeechRecognitionEngine
。
を初期化する方法は次のSpeechRecognitionEngine
とおりです。
void InitSpeechEngine()
{
_speechEngine = new SpeechRecognitionEngine();
Choices fillers = new Choices();
fillers.Add(FillerWords.ToArray());
GrammarBuilder gb = new GrammarBuilder();
gb.Append(fillers);
gb.Culture = new System.Globalization.CultureInfo("en-US");
_grammar = new Grammar(gb);
_speechEngine.LoadGrammarAsync(_grammar);
_speechEngine.SetInputToDefaultAudioDevice();
_speechEngine.SpeechRecognized += FillerRecognized;
}
開始方法:
public void StartSpeech()
{
_speechStarted = true;
_speechEngine.RecognizeAsync(RecognizeMode.Multiple);
}
そして、私がそれを止めようとする方法:
public void StopSpeech()
{
_speechStarted = false;
_speechEngine.RecognizeAsyncCancel();
}
したがって、これは機能していません。エラーメッセージは次のとおりです。
InvalidOperationException: 認識エンジンが認識を行っている間は、この操作を実行できません。
私がやりたいのは、プレーヤーの発話で特定の単語を監視し、プレーヤーがその単語を言ったときにカウンターをインクリメントすることです。そのため、継続的な認識が必要であり、話すことを強要しないようにする必要があるため、プロセスはプレーヤーから完全に見えないようにする必要があります。今のところ動作するように動作していますが、SpeecehRecognitionEngine を停止できません...
そして、このエラーが原因で、エディターでゲームを再起動しようとすると、Unity エディターがクラッシュすると思います。
認識を停止するにはどうすればよいですか?