提示音即为设备本地播放一些预设音频文件,或者根据和云端的约定在特定状态下播放特定的音频文件,以满足一些场景的交互、信息提醒的要求。
提示音分为两类:
本地提示音的代码位于 src/wukong/assets/ 目录下:
assets/
├── scripts/
│ └── gen_media_src.py # MP3 转 C 文件生成脚本
├── media_src.h # 媒体资源总头文件
├── media_src_zh.h # 中文提示音声明
├── media_src_zh.c # 中文提示音数据
├── media_src_en.h # 英文提示音声明
├── media_src_en.c # 英文提示音数据
└── README.md # 本文档
脚本按文件名后缀将 MP3 分为 中文 和 英文 两类:
| 后缀 | 语言 | 示例 |
|---|---|---|
*_zh.mp3 |
中文 | dingdong_zh.mp3 |
*_en.mp3 |
英文 | wakeup_en.mp3 |
不以后缀 zh.mp3 或 en.mp3 结尾的 MP3 文件会被忽略。
准备 MP3 文件。将所有 MP3 文件放入同一目录(如 scripts/mp3/ 或项目中的其他 MP3 目录)。
运行生成脚本。
# 从 assets/scripts 目录运行
cd src/wukong/assets/scripts
python gen_media_src.py <mp3文件所在目录路径>
示例:若 MP3 文件在 scripts/mp3 目录下:
python gen_media_src.py ./mp3
# 或使用绝对路径
python gen_media_src.py /path/to/your/mp3_folder
生成结果。脚本会执行以下操作:
*.mp3 文件。zh/en 后缀分类。assets/ 目录生成:
media_src_zh.h/media_src_zh.c(中文)media_src_en.h/media_src_en.c(英文)media_src.h(统一包含上述头文件)dingdong_zh.mp3 → C 数组名:media_src_dingdong_zhwakeup_en.mp3 → C 数组名:media_src_wakeup_en- 会替换为 _。在 wukong_audio_player.c 中,提示音通过 wukong_audio_play_data() 播放:
#include "media_src.h"
// 播放 dingdong_zh 提示音
audio_data = (CONST CHAR_T*)media_src_dingdong_zh;
audio_size = sizeof(media_src_dingdong_zh);
wukong_audio_play_data(AI_AUDIO_CODEC_MP3, audio_data, audio_size);
在 wukong_audio_player_alert() 的 switch (type) 中按 TY_AI_TOY_ALERT_TYPE_E 选择不同提示音:
_zh.mp3 或 _en.mp3 结尾)。gen_media_src.py 重新生成 C 文件。switch (type) 中增加对应 case。示例:添加 “网络配置” 中文提示音:
case AI_TOY_ALERT_TYPE_NETWORK_CFG:
audio_data = (CONST CHAR_T*)media_src_network_config_zh;
audio_size = sizeof(media_src_network_config_zh);
break;
除本地 MP3 外,悟空 AI 支持 云端提示音:由云端 TTS 生成语音并下发给设备播放,可动态更换文案、音色,无需重新烧录固件。
在 include/tuya_device_cfg.h 中配置:
#define ENABLE_CLOUD_ALERT 1 /* 启用云端提示音,默认 0 为关闭 */
wukong_audio_player_alert(type)
│
├─ ENABLE_CLOUD_ALERT==1 且 type 支持云端
│ │
│ └─► wukong_ai_agent_cloud_alert(type)
│ │
│ ├─ 成功 → 发送命令到云端 → 云端 TTS 流 → 设备播放
│ └─ 失败 → 回退到本地 MP3
│
└─ 其他 → 直接播放本地 media_src_xxx
当 ENABLE_CLOUD_ALERT == 1 时,以下类型的提示音会 优先请求云端;云端成功时播放云端 TTS,失败或不支持时 回退到本地 MP3。
| 提示音类型 | 说明 |
|---|---|
AI_TOY_ALERT_TYPE_NETWORK_CONNECTED |
联网成功 |
AI_TOY_ALERT_TYPE_WAKEUP |
唤醒(你好我在) |
AI_TOY_ALERT_TYPE_LONG_KEY_TALK |
长按键对话 |
AI_TOY_ALERT_TYPE_KEY_TALK |
按键对话 |
AI_TOY_ALERT_TYPE_WAKEUP_TALK |
唤醒对话 |
AI_TOY_ALERT_TYPE_RANDOM_TALK |
任意对话 |
以下类型 仅使用本地,不走云端(无网或云端不支持):
AI_TOY_ALERT_TYPE_POWER_ON:开机播报AI_TOY_ALERT_TYPE_BATTERY_LOW:电量不足AI_TOY_ALERT_TYPE_PLEASE_AGAIN:请再说一遍AI_TOY_ALERT_TYPE_NOT_ACTIVE:未配网AI_TOY_ALERT_TYPE_NETWORK_CFG:配网中AI_TOY_ALERT_TYPE_NETWORK_FAIL:联网失败AI_TOY_ALERT_TYPE_NETWORK_DISCONNECT:掉网应用层可直接调用 wukong_ai_agent_cloud_alert() 请求云端提示音(需先 #include "wukong_ai_agent.h"):
#include "wukong_ai_agent.h"
/* 请求「联网成功」云端提示音 */
wukong_ai_agent_cloud_alert(AT_NETWORK_CONNECTED);
/* 请求「唤醒」云端提示音 */
wukong_ai_agent_cloud_alert(AT_WAKEUP);
如果您在开发过程中遇到问题,可以到 TuyaOS 开发者论坛 联网单品开发版块 发帖咨询。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈