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

Nao机器人QiChat程序无需触发语句自动播报的技术咨询

实现NAOqi机器人QiChat程序自动播报(无需触发语句)

我来帮你搞定这个问题!NAOqi的QiChat默认确实依赖触发词来激活对话,但有几种简单的方法能让它自动播报预设内容,不用等用户触发:

方法1:修改QiChat脚本,让话题加载时自动执行播报

这是最直接的方式,利用QiChat的^start()内置事件——当话题被加载激活时,这个事件会自动触发。你只需要在你的QiChat脚本里添加一个专门的自动启动话题:

# 自动启动话题,设置高优先级确保优先执行
topic: ~auto_broadcast(100)
language: zhh  # 换成你的机器人使用的语言代码,比如enu代表英文

# 话题加载时自动触发该规则
u: (^start())
  ^say("哈喽!这是无需触发词的自动播报内容!")
  # 还可以搭配其他动作,比如播放问候动画:^playAnim("animations/Stand/Gestures/Hey_1")

把这个话题包含到你的主QiChat脚本里,或者直接设置为机器人启动时默认加载的话题,这样机器人一加载你的程序就会自动播报内容。

方法2:用Python API直接触发播报(无需修改QiChat脚本)

如果你不想改动已有的QiChat脚本,也可以通过NAOqi的Python客户端直接调用文本转语音服务,或者触发QiChat里的特定规则:

from naoqi import ALProxy

# 替换成你的机器人IP和默认端口(通常是9559)
ROBOT_IP = "192.168.1.100"
PORT = 9559

# 方法A:直接调用文本转语音模块播报
tts = ALProxy("ALTextToSpeech", ROBOT_IP, PORT)
tts.say("这是通过Python API触发的自动播报内容")

# 方法B:触发QiChat脚本内的指定规则(比如脚本里有u: (auto_msg) ^say("预设播报内容"))
qi_chat = ALProxy("ALQiChatBot", ROBOT_IP, PORT)
# 先激活对应的话题
qi_chat.activateTopic("你的话题名称")
# 直接发送触发指令,绕过用户输入环节
qi_chat.sendInput("auto_msg")

方法3:设置程序开机自启动+脚本自动执行

把你的QiChat程序设置为机器人开机自启动,再结合方法1的^start()事件,就能实现机器人一开机就自动播报内容:

  • 在Choregraphe里打开你的项目,点击菜单栏的Robot > Install on Robot
  • 在安装选项里勾选Start automatically at boot time
  • 确保你的QiChat脚本里包含了^start()触发的播报规则

注意事项

  • 确保机器人的ALQiChatBot和ALTextToSpeech服务已经正常启动
  • 如果设置话题优先级,记得把自动启动的话题优先级设高(比如100),避免被其他话题覆盖
  • 测试时可以先用Choregraphe的模拟功能验证效果,再部署到实体机器人上

内容的提问来源于stack exchange,提问作者Nishkami P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:47:38