2

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 エディターがクラッシュすると思います。

認識を停止するにはどうすればよいですか?

4

0 に答える 0