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