1

我有我的一位同事(离开我的公司)的 python 代码。Pepper问你想要什么,你回答说你想要鸡尾酒,Pepper问你想要哪种鸡尾酒,你给它起个鸡尾酒名字,Pepper问你有没有所有的原料(只有两种原料),然后给你食谱。在我的同事离开之前,该应用程序运行良好。naoqi 版本是 2.1 版本。两周前我在 Pepper 上升级了 naoqi,当我测试代码(没有修改)时,我收到以下消息:

RuntimeError: ALSpeechRecognition::setVocabulary
NuanceContext::addContext
一个名为“modifiable_grammar_wordspotting”的语法已经存在。

这是我的函数的代码:

   def onInput_onStart(self, enableWordSpotting):
        from threading import Lock
        self.mutex.acquire()
        if(self.bIsRunning):
            self.mutex.release()
            return
        self.bIsRunning = True
        try:
            if self.asr:
                self.asr.pause(True)#need to pause the ASR system while configuring it
                self.asr.setVisualExpression(True)
                self.asr.pushContexts()
            self.hasPushed = True
            if self.asr:
                self.asr.setLanguage(language)
                self.asr.setVocabulary(self.listPhrToReco, enableWordSpotting)

            self.memory.subscribeToEvent("WordRecognized", self.getName(), "onWordRecognized")
            self.hasSubscribed = True
            self.asr.pause(False)#
            self.phrReco = "" #additional layer to recover the last recognized sentence (ow. it is only accessible from callback:on )
        except RuntimeError, e:
            self.mutex.release()
            self.onUnload()
            raise e
        self.mutex.release()

她是产生错误的特定行:

self.asr.setVocabulary(self.listPhrToReco, enableWordSpotting)

注意到在第一次执行语音识别时,我没有错误,Pepper reconize the first word (cocktail), ask me what I want, it reconify the name of the cocktail, it ask me if I have the first ingredients ,我说是的,当它要求我提供第二种成分时,就会出现错误。之后,即使我重新启动脚本,在第一个单词识别之前我也有错误。
请问有人知道问题的根源吗?

谢谢。

4

2 回答 2

1

我认为您正在尝试 setVocabukary 两次而没有停止 ASR。最后尝试将 removeAllContext 添加到您的代码中吗?

于 2017-10-09T15:21:00.453 回答
0

asr.pause(False)退订前设置

于 2018-07-05T12:38:49.460 回答