我有一位同事(他离开我的公司)的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()


Hers是产生错误的特定行:

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


注意到在语音识别的第一次执行中,我没有出错,Pepper调和了第一个单词(鸡尾酒),问我想要什么,它调和了鸡尾酒的名字,它问我是否有第一种成分,我说是的,当它要求我提供第二种成分时,就会发生错误。之后,即使我重新启动了脚本,在第一个单词识别之前也出现了错误。
请问有人知道问题的根源吗?

谢谢。

最佳答案

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

关于python - Pepper:直击升级后,代码无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46582484/

10-13 07:12