2017-10-05 9 views
1

私は私の同僚(私の会社を離れる)の1つのpythonコードを持っています。ペッパーは何をしたいのですか?あなたはカクテルを食べたいと答えた、ペッパーはあなたにカクテルの名前を教えてください。あなたはそれにカクテルの名前をつけて、ペッパーはすべての成分を持っていますか?レシピ。 私の同僚が去る前に、アプリケーションは正常に機能しました。 naoqiバージョンは2.1バージョンでした。 私は2週間前に交じりにnaoqiアップグレード、および、私は(変更なしで)コードをテストするとき、私は次のようなメッセージがありますが解決しました。ペッパー:コードは、naoqiのアップグレード後にうまく動作しません

RuntimeError: ALSpeechRecognition::setVocabulary
NuanceContext::addContext
A grammar named "modifiable_grammar_wordspotting" already exists.

をここに私の関数のコードです:

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() 

彼女はTEHエラーが発生した特定の行です:

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

は、音声認識の最初の実行では、私がエラーを持っていないことを気づい、ペッパーは、最初のWORをreconize d(カクテル)、私が欲しいものを私に尋ね、それはカクテルの名前を再調整する、それは私が最初の成分を持っていれば私に尋ねる、私ははいと言う、そして、スクリプトを再起動しても、最初の単語認識の前にエラーが発生します。
誰かが問題の起源を知っていますか?

ありがとうございました。

答えて

1

私はあなたがASRを停止させずに2回setVocabukaryをしようとしていると思います。最後にあなたのコードにremoveAllContextを追加しようとしていますか?

+0

ありがとうございましたJLS。私はうまくいかなかったpopcontextを持っていて、私はそれをコメントしていました。したがって、最後の文脈は削除されませんでした。 allcontextを削除すると、コードは正常に動作します。 –

関連する問題