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

Nao V5文件查找及按钮触发WAV播放路径问题排查

解决Nao V5无法播放WAV音频文件的问题

问题背景

编写了触发按钮让Nao V5执行行走或播放WAV文件的脚本,但音频始终无法播放,推测是文件路径设置问题。以下是相关代码与运行输出:

代码片段

def sing(note):
    try:
        path = findNotePath(note)
        soundProxy = naoqi.ALProxy("ALAudioPlayer", host, port)
        fileid = soundProxy.loadFile(path)
        soundProxy.post.playFile(fileid)
    except Exception as e:
        print(e)
        print("Ton nicht abspielbar")
    print(path)

def findNotePath(note):
    path = "/home/nao/FullOctave/" + note + ".wav"
    return path

运行输出

[W] 1685708250.183120 30208 qi.path.sdklayout: No Application was created, trying to deduce paths
[I] 1685708250.189637 30208 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 1685708250.794682 30208 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.178.31:53942
[I] 1685708250.794682 30208 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.147.1:53942
[I] 1685708250.794682 30208 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.30.1:53942
[I] 1685708250.794682 30208 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:53942

排查与解决方案

1. 确认文件路径与存在性

  • 通过SSH连接Nao机器人,执行命令检查目标目录下的文件:
    ls /home/nao/FullOctave/
    
    确保对应note参数的.wav文件存在(比如调用sing("C")时,C.wav必须在该目录)。
  • 检查文件权限,确保Nao用户有读取权限:
    ls -l /home/nao/FullOctave/
    
    若权限缺失,执行以下命令添加读权限:
    chmod +r /home/nao/FullOctave/*.wav
    

2. 排查ALAudioPlayer调用逻辑

  • 当前代码每次调用sing都重新创建代理,建议在脚本初始化时一次性创建ALAudioPlayer代理,避免重复连接开销。
  • 新增文件加载状态打印,判断是否加载失败:
    def sing(note):
        try:
            path = findNotePath(note)
            soundProxy = naoqi.ALProxy("ALAudioPlayer", host, port)
            fileid = soundProxy.loadFile(path)
            print(f"文件加载ID: {fileid}")  # 新增打印,ID为-1则加载失败
            if fileid != -1:
                soundProxy.post.playFile(fileid)
            else:
                print(f"加载失败:{path}")
        except Exception as e:
            print(f"错误信息: {e}")
            print("无法播放音频")
        print(path)
    

3. 检查音频格式兼容性

Nao的ALAudioPlayer对WAV格式有要求:

  • 采样率:16kHz或44.1kHz
  • 位深:16位
  • 声道:单声道/立体声
    可使用ffmpeg转换格式:
ffmpeg -i 原文件.wav -ar 16000 -ac 1 -sample_fmt s16 转换后文件.wav

将转换后的文件上传至Nao对应目录。

4. 直接测试音频播放

跳过Python脚本,通过SSH在Nao终端直接测试音频:

alsaplayer /home/nao/FullOctave/C.wav

如果能播放,说明文件本身无问题,问题出在脚本逻辑;如果不能,则是文件或系统音频设置问题。

补充说明

当前运行日志仅显示NaoQi的会话连接信息,无音频相关错误,说明连接正常,重点排查文件路径、文件本身及代理调用逻辑。

内容的提问来源于stack exchange,提问作者Jacky Re

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:22:46