我正在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编辑器崩溃。
我应该如何停止识别?