>

NAO 프로그래밍에 익숙하지 않고 ALAudioDevice API와 관련하여 문제가 있습니다. 내 문제는 다음과 같습니다. 전면 마이크에서 원시 데이터를 기록 해야하는 파이썬 모듈을 작성했습니다. ALAudioDevice API의 문서에 따르면 "subscribe (...)"메소드가 "process"함수를 자동으로 호출한다고합니다. 그리고 입력으로 마이크의 원시 데이터를 정기적으로 사용합니다. 이 프로세스를 실행하는 코드를 작성했습니다 (아래 참조). 에러 플래그. 그러나 구독이 "프로세스"기능을 무시하고 모듈에 오디오가 전혀 표시되지 않습니다. 누군가 같은 문제가 있었습니까?

import qi
class AudioModule(object):
    def __init__(self):
        super(AudioModule, self).__init__()
        self.moduleName = "AudioModule"
        try :
            self.ALAudioDevice = ALProxy("ALAudioDevice")
        except Exception, e:
            self.logger.error("Error when creating proxy on ALAudioDevice:")
            self.logger.error(e)
    def begin_stream(self):
        self.ALAudioDevice.setClientPreferences(self.moduleName, 16000, 3, 0)
        self.ALAudioDevice.subscribe(self.moduleName)
    def end_stream(self):
        self.ALAudioDevice.unsubscribe(self.moduleName)
    def processRemote( self, nbOfChannels, samplesByChannel, altimestamp, buffer ):
        nbOfChannels = nbOfChannels
        mylogger = qi.Logger("data")
        mylogger.info("It works !" + str(nbOfChannels))
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self, False)
        self.audio = AudioModule()
    def onLoad(self):
        self.serviceId = self.session().registerService("AudioModule", self.audio)
        pass
    def onUnload(self):
        if self.serviceId != -1:
            self.session().unregisterService(self.serviceId)
            self.serviceId = -1
        pass
    def onInput_onStart(self):
        self.audio.begin_stream()
        self.onInput_onStop()
        pass
    def onInput_onStop(self):
        self.audio.end_stream()
        self.onUnload
        self.onStopped()
        pass

  • 답변 # 1

    안무 상자에서 오디오를 구독하고있는 것 같습니다. 제대로 작동하는지 잘 모르겠습니다.

    그러나이 구성에서 Python 코드는 ALAudioDevice 서비스와 동일한 프로세스에서 실행됩니다. 따라서 "processRemote"대신 콜백의 이름을 "process"로 지정해야합니다.

    그렇지 않으면 별도의 Python 스크립트에서이를 수행 할 수 있습니다.

관련 자료

  • 이전 mysql - 데이터 유형이 텍스트 인 atable 열에 qoutes를 삽입 할 수 있습니까
  • 다음 python 3.x - aiohttp를 사용하여 쿠키 가져 오기