Проблемы с удаленными звуками робота NAO

Я хотел бы знать, знает ли кто-нибудь, как передавать поток робота NAO удаленному модулю в python, и если у вас может быть пример. Я хочу получить звуковые буферы NAO на моем ноутбуке непосредственно для обработки, поэтому нет записи и scp или что-то еще.

Теперь моя проблема заключается в следующем: на сайте aldebaran говорится, что для удаленного доступа к аудио (на моем ноутбуке) я должен написать модуль, который наследуется от ALSoundExtractor. Дело в том, что этот класс не был включен в SDK python, поэтому, если вы создаете удаленную программу python, вы не можете наследовать от alsoundextractor … Я застрял в этой проблеме в течение нескольких недель, и это было бы очень приятно, если кто-то может мне помочь.

поэтому идея состоит в том, чтобы запустить модуль с

class AudioClassificationModule(ALSoundExtractor): 

и имеют функцию, называемую процессом, которая вызывается автоматически. Я получаю эту ошибку:

 NameError: name 'ALSoundExtractor' is not defined 

поэтому это сводится к следующему: может ли кто-нибудь показать, как это должно быть сделано? написать модуль python, который наследуется от ALSoundExtractor, и имеет функцию «процесс», которая что-то делает с аудио? БЛАГОДАРЯ!!

документация: https://community.aldebaran-robotics.com/doc/1-14/naoqi/audio/alaudiodevice-api.html#ALAudioDeviceProxy::subscribe__ssCR

One Solution collect form web for “Проблемы с удаленными звуками робота NAO”

вот «маленький» образец

 # -*- coding: utf-8 -*- ########################################################### # Retrieve robot audio buffer # Syntaxe: # python scriptname --pip <ip> --pport <port> # # --pip <ip>: specify the ip of your robot (without specification it will use the NAO_IP defined some line below # # Author: Alexandre Mazel ########################################################### NAO_IP = "10.0.252.126" # Romeo on table #~ NAO_IP = "10.0.253.99" # Nao Alex Blue from optparse import OptionParser import naoqi import numpy as np import time import sys class SoundReceiverModule(naoqi.ALModule): """ Use this object to get call back from the ALMemory of the naoqi world. Your callback needs to be a method with two parameter (variable name, value). """ def __init__( self, strModuleName, strNaoIp ): try: naoqi.ALModule.__init__(self, strModuleName ); self.BIND_PYTHON( self.getName(),"callback" ); self.strNaoIp = strNaoIp; self.outfile = None; self.aOutfile = [None]*(4-1); # ASSUME max nbr channels = 4 except BaseException, err: print( "ERR: abcdk.naoqitools.SoundReceiverModule: loading error: %s" % str(err) ); # __init__ - end def __del__( self ): print( "INF: abcdk.SoundReceiverModule.__del__: cleaning everything" ); self.stop(); def start( self ): audio = naoqi.ALProxy( "ALAudioDevice", self.strNaoIp, 9559 ); nNbrChannelFlag = 0; # ALL_Channels: 0, AL::LEFTCHANNEL: 1, AL::RIGHTCHANNEL: 2; AL::FRONTCHANNEL: 3 or AL::REARCHANNEL: 4. nDeinterleave = 0; nSampleRate = 48000; audio.setClientPreferences( self.getName(), nSampleRate, nNbrChannelFlag, nDeinterleave ); # setting same as default generate a bug !?! audio.subscribe( self.getName() ); print( "INF: SoundReceiver: started!" ); # self.processRemote( 4, 128, [18,0], "A"*128*4*2 ); # for local test # on romeo, here's the current order: # 0: right; 1: rear; 2: left; 3: front, def stop( self ): print( "INF: SoundReceiver: stopping..." ); audio = naoqi.ALProxy( "ALAudioDevice", self.strNaoIp, 9559 ); audio.unsubscribe( self.getName() ); print( "INF: SoundReceiver: stopped!" ); if( self.outfile != None ): self.outfile.close(); def processRemote( self, nbOfChannels, nbrOfSamplesByChannel, aTimeStamp, buffer ): """ This is THE method that receives all the sound buffers from the "ALAudioDevice" module """ #~ print( "process!" ); #~ print( "processRemote: %s, %s, %s, lendata: %s, data0: %s (0x%x), data1: %s (0x%x)" % (nbOfChannels, nbrOfSamplesByChannel, aTimeStamp, len(buffer), buffer[0],ord(buffer[0]),buffer[1],ord(buffer[1])) ); #~ print( "raw data: " ), #~ for i in range( 8 ): #~ print( "%s (0x%x), " % (buffer[i],ord(buffer[i])) ), #~ print( "" ); aSoundDataInterlaced = np.fromstring( str(buffer), dtype=np.int16 ); #~ print( "len data: %s " % len( aSoundDataInterlaced ) ); #~ print( "data interlaced: " ), #~ for i in range( 8 ): #~ print( "%d, " % (aSoundDataInterlaced[i]) ), #~ print( "" ); aSoundData = np.reshape( aSoundDataInterlaced, (nbOfChannels, nbrOfSamplesByChannel), 'F' ); #~ print( "len data: %s " % len( aSoundData ) ); #~ print( "len data 0: %s " % len( aSoundData[0] ) ); if( False ): # compute average aAvgValue = np.mean( aSoundData, axis = 1 ); print( "avg: %s" % aAvgValue ); if( False ): # compute fft nBlockSize = nbrOfSamplesByChannel; signal = aSoundData[0] * np.hanning( nBlockSize ); aFft = ( np.fft.rfft(signal) / nBlockSize ); print aFft; if( False ): # compute peak aPeakValue = np.max( aSoundData ); if( aPeakValue > 16000 ): print( "Peak: %s" % aPeakValue ); if( True ): bSaveAll = True; # save to file if( self.outfile == None ): strFilenameOut = "/out.raw"; print( "INF: Writing sound to '%s'" % strFilenameOut ); self.outfile = open( strFilenameOut, "wb" ); if( bSaveAll ): for nNumChannel in range( 1, nbOfChannels ): strFilenameOutChan = strFilenameOut.replace(".raw", "_%d.raw"%nNumChannel); self.aOutfile[nNumChannel-1] = open( strFilenameOutChan, "wb" ); print( "INF: Writing other channel sound to '%s'" % strFilenameOutChan ); #~ aSoundDataInterlaced.tofile( self.outfile ); # wrote the 4 channels aSoundData[0].tofile( self.outfile ); # wrote only one channel #~ print( "aTimeStamp: %s" % aTimeStamp ); #~ print( "data wrotten: " ), #~ for i in range( 8 ): #~ print( "%d, " % (aSoundData[0][i]) ), #~ print( "" ); #~ self.stop(); # make naoqi crashes if( bSaveAll ): for nNumChannel in range( 1, nbOfChannels ): aSoundData[nNumChannel].tofile( self.aOutfile[nNumChannel-1] ); # processRemote - end def version( self ): return "0.6"; # SoundReceiver - end def main(): """ Main entry point """ parser = OptionParser() parser.add_option("--pip", help="Parent broker port. The IP address or your robot", dest="pip") parser.add_option("--pport", help="Parent broker port. The port NAOqi is listening to", dest="pport", type="int") parser.set_defaults( pip=NAO_IP, pport=9559) (opts, args_) = parser.parse_args() pip = opts.pip pport = opts.pport # We need this broker to be able to construct # NAOqi modules and subscribe to other modules # The broker must stay alive until the program exists myBroker = naoqi.ALBroker("myBroker", "0.0.0.0", # listen to anyone 0, # find a free port and use it pip, # parent broker IP pport) # parent broker port # Warning: SoundReceiver must be a global variable # The name given to the constructor must be the name of the # variable global SoundReceiver SoundReceiver = SoundReceiverModule("SoundReceiver", pip) SoundReceiver.start() try: while True: time.sleep(1) except KeyboardInterrupt: print print "Interrupted by user, shutting down" myBroker.shutdown() sys.exit(0) if __name__ == "__main__": main() 
  • Гистограмма графика в Python
  • Python - удаление определенных частот между диапазоном
  • замена signal.alarm в Windows
  • Генератор случайных выборок Python (удобный с огромными размерами населения)
  • Как перезапустить процесс колбы, обновив страницу
  • Где я должен поместить секретный ключ в Flask?
  • Как зашифровать текст с помощью пароля в python?
  • Передача аргументов внутри Scrapy spider через лямбда-обратные вызовы
  • Python - лучший язык программирования в мире.