2

System.Speech在 Unity 2018.2 中使用在玩家说话时执行一些单词检查。一切都很好,单词识别正在工作,但我无法停止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