Ошибка при записи звука на роботе Pepper - PullRequest
0 голосов
/ 23 января 2019

Я хочу, чтобы мой робот Pepper записал фрагмент звука, используя startMicrophonesRecording() NAOqi v2.5 требуется четыре аргумента (путь, тип, герц и микрофоны).При попытке запустить

AD.startMicrophonesRecording("/data/home/nao/recordings/microphones/test.wav","wav",16000,(0,0,1,0))

я, однако, получаю сообщение об ошибке

RuntimeError: Arguments types did not match for startMicrophonesRecording (resolved to '(ssi(iiii))'): 
Candidate: 
  startMicrophonesRecording::(s) (1)

Кажется, что startMicrophonesRecording() хочет только один аргумент.Я могу видеть в прошлых версиях функции, в которой она использовала только путь к файлу в качестве аргумента, так что, возможно, Python просматривает предыдущую версию NAOqi для модулей?

Я попытался установить PYTHONPATH на C:\Users\<user>\<path>\pynaoqi-python2.7-2.5.5.5-win32-vs2013\lib, используя этот урок , но я все еще получаю ту же ошибку.

Есть идеи, что я могу сделать?

Python 2.7 в Windows 10.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Ваш синтаксис для выбора микрофонов выглядит неправильно. Используйте скобки [] вместо скобок ():

    rec = self.session().service("ALAudioRecorder")
    rec.startMicrophonesRecording(fname, 'wav', 16000, [0,0,1,0])
0 голосов
/ 24 января 2019

Вы пробовали с одним аргументом?

Ссылка NAOqi v2.5 , которую вы назвали, относится к ALAudioRecorder и C ++.«Старая версия» относится к Python ALAudioDevice .API NAOqi v2.5 Python для ALAudioDevice описан здесь .

Для меня эти фрагменты Python прекрасно работают:

ALAudioDevice :

import naoqi
from naoqi import ALProxy
AD = ALProxy("ALAudioDevice", "pepper.local", 9559)
AD.startMicrophonesRecording("/data/home/nao/recordings/microphones/test.wav")
AD.stopMicrophonesRecording()

ALAudioRecorder :

import naoqi
from naoqi import ALProxy
AR = ALProxy("ALAudioRecorder", "pepper.local", 9559)
AR.startMicrophonesRecording("/data/home/nao/recordings/microphones/test.wav","wav",16000,(0,0,1,0))
AR.stopMicrophonesRecording()
...