SU-03T 变量控制音乐播放指南:实现切歌与播放列表管理

发布时间:2026/6/27 16:01:14
SU-03T 变量控制音乐播放指南:实现切歌与播放列表管理 前言在使用 SU-03T 离线语音模组开发语音控制音乐播放功能时一个常见的需求是通过语音命令实现上一首、下一首等切歌功能。很多开发者初次接触时会疑惑——能否不借助外部 MP3 模块直接在 SU-03T 内部实现这个功能答案是可以。通过 SU-03T 平台的变量控制功能我们可以实现音乐播放列表的管理和切换功能。本文将详细讲解实现方法。一、应用场景分析1.1 典型需求用户真实反馈的需求场景“SU-03T这个模块可以不借助MP3模块实现切歌上一首下一首吗”“我想的是我这个指令里面有很多首歌命令下一首他就实现第一首再命令下一首就实现库里面的第二首”核心需求拆解预设多首音频文件如音乐、语音提示等通过语音命令切换不同的音频记住当前播放位置支持顺序切换无需外部 MP3 模块或复杂硬件1.2 解决方案概述SU-03T 平台提供了变量功能可以存储和传递数值状态。通过结合变量存储记录当前播放的曲目编号命令词控制触发切歌动作变量引用根据变量值选择对应的回复语即可实现完整的播放列表控制功能。二、实现原理2.1 变量功能简介SU-03T 平台中的变量可以存储整数值0-65535通过命令词修改变量值在回复语中引用变量值跨命令保持状态2.2 逻辑流程图┌─────────────┐ │ 上电初始化 │ → 变量 track_num 1 └─────────────┘ │ ▼ ┌─────────────┐ 下一首 ┌─────────────┐ │ 等待语音命令 │ ─────────────→│ track_num │ └─────────────┘ └─────────────┘ │ │ │ 播放第一首 ▼ │ ┌─────────────┐ └───────────────────────→│ track_num1 │ └─────────────┘ │ ▼ ┌───────────────┐ │ 播放对应音频 │ │ 根据track_num │ └───────────────┘三、平台配置步骤3.1 创建变量进入智能公元平台选择离线语音 → SU-03T在左侧导航栏找到变量管理点击添加变量创建如下变量变量名类型初始值说明track_num整数1当前曲目编号total_tracks整数5总曲目数量可选3.2 配置命令词命令词1播放第一首配置项值命令词播放第一首控制详情设置变量track_num 1回复语“正在播放第一首歌曲”音频/个性化上传第一首音频文件命令词2下一首配置项值命令词下一首控制详情设置变量track_num track_num 1条件判断如果track_num total_tracks则track_num 1循环回复语“正在播放第{track_num}首歌曲”命令词3上一首配置项值命令词上一首控制详情设置变量track_num track_num - 1条件判断如果track_num 1则track_num total_tracks循环回复语“正在播放第{track_num}首歌曲”3.3 配置变量引用播放由于 SU-03T 平台回复语系统不支持直接根据变量值选择不同音频需要采用多命令词的方式方案A多命令词实现推荐为每个曲目创建独立的命令词命令词变量操作音频文件播放第一首track_num1audio1.mp3播放第二首track_num2audio2.mp3播放第三首track_num3audio3.mp3………然后下一首命令通过跳转功能调用对应的命令词下一首 track_num track_num 1 如果 track_num 总数则 track_num 1 跳转到播放第{track_num}首方案B串口控制外部播放如果需要灵活控制更多音频可以使用 SU-03T 的串口输出功能配合 MCU 或外部模块SU-03T 通过串口发送曲目编号外部 MCU 接收后控制音频播放SU-03T 串口输出格式示例 CMD_PLAY_TRACK:1\n CMD_PLAY_TRACK:2\n四、完整配置示例4.1 五首歌曲播放列表配置假设有5首歌曲配置如下初始化配置在事件触发或开机播报中设置变量 track_num 1命令词配置表命令词变量操作跳转目标音频下一首track_num1, 若5则1播放第N首-上一首track_num-1, 若1则5播放第N首-播放第一首track_num1-song1.mp3播放第二首track_num2-song2.mp3播放第三首track_num3-song3.mp3播放第四首track_num4-song4.mp3播放第五首track_num5-song5.mp34.2 添加随机播放功能如果需要随机播放功能可以添加命令词变量操作说明随机播放track_num 随机数(1-5)跳转到播放第N首五、高级应用技巧5.1 播放模式切换可以添加循环模式、单曲循环等状态变量// 变量定义play_mode0// 0:顺序播放 1:循环播放 2:随机播放is_repeat0// 0:不重复 1:单曲重复5.2 音量记忆记录用户设置的音量命令词变量操作说明音量大一点volume volume 10限制最大100音量小一点volume volume - 10限制最小0恢复默认音量volume 50恢复默认5.3 播放进度记忆需外部配合如果需要断点续播需要MCU 记录播放进度SU-03T 发送播放/暂停指令时传递进度信息六、常见问题解答Q1为什么不直接用 MP3 模块A使用 SU-03T 内置音频功能的优点硬件更简单减少外部模块成本更低功耗更小系统集成度更高Q2可以支持多少首音频A受限于 SU-03T 的 Flash 存储空间2MB一般可存储 5-10 首短音频或提示音如需更多音频建议使用外部存储或串口控制方案Q3如何实现无缝切换A设置音频的退出回复为立即执行在下一首命令中先停止当前播放或使用串口通知外部 MCU 处理切换逻辑Q4变量断电后会保存吗ASU-03T 的普通变量断电后不保存如需记忆功能需要通过串口将状态保存到外部 MCU七、完整代码示例7.1 变量初始化平台配置变量名: track_num 类型: 整数 初始值: 1 变量名: total_tracks 类型: 整数 初始值: 57.2 命令词JSON配置示例{commands:[{name:下一首,words:[下一首,播放下一首,切歌],actions:[{type:variable_set,variable:track_num,operation:add,value:1,condition:track_num total_tracks},{type:variable_set,variable:track_num,operation:set,value:1,condition:track_num total_tracks},{type:jump,target:播放第{track_num}首}]}]}八、总结通过 SU-03T 的变量功能我们可以完全依靠模组内部实现音乐播放的切歌控制无需额外的 MP3 模块。关键点是合理使用变量记录当前状态曲目编号、播放模式等善用跳转功能通过条件跳转实现复杂逻辑考虑存储限制2MB Flash 限制了音频数量和时长必要时结合串口复杂播放控制可配合 MCU 实现希望本指南能帮助您快速实现 SU-03T 音乐播放控制功能参考资源SU-03T 官方文档SU-03T 变量控制教程智能公元平台