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
相关产品推荐
相关产品推荐

