在Unity上,我正在测试关键字识别和听写识别器,并在两个按钮上分配了以下功能。
Unity文档说短语识别系统不会从听写识别系统开始,但在关键字识别器的文章中没有提到。在这个测试中,一切都在工作,但即使我启动关键字识别器并在下次点击时处置它,在另一个按钮点击听写识别器不会启动,并显示以下错误:
Cannot start dictation recognition session while PhraseRecognitionSystem is running.
下面是第一个按钮的OnButtonClick方法的代码:
if(start != true){
m_Recognizer.Stop();
m_Recognizer.Dispose();
Debug.Log("disposed recognizer.");
start = true;
} //start on else...;
下面是启动听写识别器的代码:
m_DictationRecognizer = new DictationRecognizer();
m_DictationRecognizer.DictationResult += M_DictationRecognizer_DictationResult;
m_DictationRecognizer.DictationHypothesis += (text) =>
{
Debug.LogFormat("Dictation hypothesis: {0}", text);
m_Hypotheses.text = text;
};
//here happens mentioned exception.
m_DictationRecognizer.Start();
我需要知道如何正确处理关键字识别器对象和如何正确启动m_DictaionRecognizer和这两者可以同时运行吗?
谢谢。
2条答案
按热度按时间hk8txs481#
两个系统都没有意义。无论如何,如果你想重新启动DictationRecognizer,通过在函数中编写第二段代码来完全重新初始化它,并在“开始代码”中调用此函数以启动reconizing。
最好的选择是不要停止处理你的DictationRecognizer,并处理regognized句子到一个REGEX。
fnvucqvd2#
停止和释放m_recognizer不会停止PhraseRecognitionSystem。我不会声称我理解了其中的区别,但在m_recognizer下添加了这一行。Dispose()为我工作:
短语识别系统return();
我没有看到任何等效的识别系统关闭听写,所以应该没有必要担心,如果从听写切换回关键字识别。
为了安全起见,在转换时,我还停止、处置和取消订阅所有事件侦听器。然后重新初始化新的识别器,并重新订阅侦听器。