unity3d 即使释放了PhraseRecognitionSystem,听写识别会话也不会启动

dbf7pr2w  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(260)

在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和这两者可以同时运行吗?
谢谢。

hk8txs48

hk8txs481#

两个系统都没有意义。无论如何,如果你想重新启动DictationRecognizer,通过在函数中编写第二段代码来完全重新初始化它,并在“开始代码”中调用此函数以启动reconizing。
最好的选择是不要停止处理你的DictationRecognizer,并处理regognized句子到一个REGEX。

if( Regex.IsMatch(DictationResult.text, "mykeyword", RegexOptions.IgnoreCase) )
{
   //do something
}
fnvucqvd

fnvucqvd2#

停止和释放m_recognizer不会停止PhraseRecognitionSystem。我不会声称我理解了其中的区别,但在m_recognizer下添加了这一行。Dispose()为我工作:
短语识别系统return();
我没有看到任何等效的识别系统关闭听写,所以应该没有必要担心,如果从听写切换回关键字识别。
为了安全起见,在转换时,我还停止、处置和取消订阅所有事件侦听器。然后重新初始化新的识别器,并重新订阅侦听器。

相关问题