Я новичок в программировании NAO, и у меня возникли некоторые проблемы с API ALAudioDevice.Моя проблема заключается в следующем: я написал модуль Python, который должен записывать необработанные данные с переднего микрофона.Документация по API ALAudioDevice гласит, что метод «подписаться (...)» автоматически и регулярно вызывает функцию «процесс» с необработанными данными с микрофонов в качестве входных данных.Я написал код для выполнения этого процесса (см. Ниже), и он работает без поднятия флага ошибки.Однако подписка обходит функцию «процесс», и модуль вообще не получает никакого звука.У кого-нибудь была такая же проблема?
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