前言
前一段时间,有位做声学处理的同学问我,在NAO机器人上做声学实验,怎么获取机器人的麦克风数据。好吧,渣渣的我给她说了一下。现在分享出来。
环境
win10安装python2.7 32位:
https://www.python.org/ftp/python/2.7.14/python-2.7.14.msi
下载pythonnaoqi SDK包:
https://community.ald.softbankrobotics.com/en/resources/software/language/en-gb
当然需要账号密码登录啦。
保存麦克风数据
官方API网址:
http://doc.aldebaran.com/2-1/naoqi/audio/alaudiorecorder-api.html#alaudiorecorder-api
ALAudioRecorder
Nao机器人录音模块;
可以录音成“wav” / “OGG”格式;
Performances and Limitations
- four channels 48000Hz in OGG.
- four channels 48000Hz in WAV.
- one channels (front, rear, left or right), 16000Hz, in OGG.
- one channels (front, rear, left or right), 16000Hz, in WAV.
#录音一段时间,再播放录音
import argparse
from naoqi import ALProxy
import time
tts = audio = record = aup = None
def main(robot_IP, robot_PORT=9559):
global tts, audio, record, aup
# ----------> Connect to robot <----------
tts = ALProxy("ALTextToSpeech", robot_IP, robot_PORT)
audio = ALProxy("ALAudioDevice", robot_IP, robot_PORT)
record = ALProxy("ALAudioRecorder", robot_IP, robot_PORT)
aup = ALProxy("ALAudioPlayer", robot_IP, robot_PORT)
# ----------> recording <----------
print 'start recording...'
record_path = '/home/nao/record.wav'
record.startMicrophonesRecording(record_path, 'wav', 16000, (0,0,1,0))
time.sleep(10)
record.stopMicrophonesRecording()
print 'record over'
# ----------> playing the recorded file <----------
fileID = aup.playFile(record_path, 0.7, 0)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--ip", type=str, default="192.168.2.100", help="Robot ip address")#IP"192.168.2.100"改成当前NAO的IP地址
parser.add_argument("--port", type=int, default=9559, help="Robot port number")
args = parser.parse_args()
# ----------> 执行main函数 <----------
main(args.ip, args.port)
将录音拷贝出来
如果是Linux,当然ssh一下就行了,若是Windows,那就使用winscp吧。
打开winscp,然后输入NAO当前IP,输入用户名和密码(nao,nao),然后将/home/nao/record.wav拷贝出来。