You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pepper机器人用NAOqi/qi录音频存本地遇SignalLink无订阅问题求助

Pepper机器人音频录制存储本地的问题排查与实现修正

现有代码的核心问题定位

  • 路径认知偏差:ALAudioRecorder、ALAudioDevice都是运行在Pepper机器人端的后台常驻服务,调用接口时传入的文件路径,默认指向Pepper机器人内部Linux文件系统,并非运行脚本的本地机器路径。此前代码执行后生成的wav文件,实际已经保存在Pepper的/tmp/pepper/目录下,不会自动同步到本地。
  • 第二版代码的调用错误:
  • 服务绑定错误:代码中sound变量被绑定到ALAudioDevice服务,该服务仅支持音频设备参数配置,没有音频录制的相关方法,实际录制需要绑定ALAudioRecorder服务。
  • 未定义变量调用:代码末尾执行的tts.stopMicrophonesRecording()中,tts变量全程未初始化,本该抛出未定义错误,只是因为前面的服务逻辑没有触发实际录制,才没有弹出明确报错。
  • 终端输出的3条警告为qi框架的非致命提示:未创建qi Application实例、信号解绑时无对应订阅记录的提示,完全不影响功能运行,不需要额外排查处理。

完整实现录制+本地存储的操作步骤

  • 第一步:在机器人端完成录制,确保文件生成在机器人内部存储
    适配所有Pepper系统版本的可靠录制代码:
import naoqi
from naoqi import ALProxy
from time import sleep

ROBOT_IP = '192.168.0.169'
ROBOT_PORT = 9559

# 绑定正确的音频录制服务
recorder = ALProxy("ALAudioRecorder", ROBOT_IP, ROBOT_PORT)
# 录制参数:机器人内部存储路径、wav格式、16kHz采样率、启用中央麦克风通道
recorder.startMicrophonesRecording(
    "/tmp/pepper/test.wav",
    "wav",
    16000,
    [0, 0, 1, 0]
)
sleep(3)
recorder.stopMicrophonesRecording()
  • 第二步:通过scp协议将机器人内部的录制文件拉取到本地机器
    录制完成后,直接在本地终端执行scp命令即可完成文件传输(Pepper默认登录用户名为nao,默认密码为nao):
scp nao@192.168.0.169:/tmp/pepper/test.wav ./本地目标存储路径/

注意:需提前确保本地机器与Pepper处于同一局域网,无网络访问限制。

  • 可选优化方案:如果需要跳过机器人内部文件中转环节,可在本地脚本中直接订阅ALAudioDevice输出的原始音频流,边接收边写入本地文件,实现录制内容直接落地本地。

内容的提问来源于stack exchange,提问作者Zaid Afaneh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 02:45:08