前些天发现了一个巨牛的人工智能学习 站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
人工智能编程入门博客
通讯协议
常用指令表
控制指令
控制指令 | 对应的功能 |
---|---|
0x01 | 下一曲 |
0x02 | 上一曲 |
0x04 | 音量+ |
0x05 | 音量- |
0x06 | 指定音量 |
0x08 | 单曲循环指定曲目播放 |
0x0A | 进入睡眠 |
0x0B | 唤醒睡眠 |
0x0C | 芯片复位 任何状态有效 |
0x0D | 播放 |
0x0E | 暂停 |
0x0F | 指定文件夹文件名播放 |
0x16 | 停止 |
0x17 | 指定文件夹循环播放 |
0x18 | 指定根目录随机播放 |
0x19 | 对当前播放的曲目设置为循环播放 |
0x21 | 组合播放 |
0x22 | 指定音量同时指定文件播放 |
状态查询
查询指令 | 对应的功能 参数(16位) |
---|---|
0x3F | 查询在线的设备 详见3.5.1 |
0x40 | 返回错误,请求重发 |
0x41 | 应答 |
0x42 | 查询当前状态 详见3.4.10 |
0x43 | 查询当前音量 |
0x44 | 查询当前 EQ 保留 |
0x47 | 查询 UDISK 文件总数 U 盘内部的总文件数[MP3/WAV 文件] |
0x48 | 查询 TF 文件总数 TF 卡内部的总文件数[MP3/WAV 文件] |
0x49 | 查询 FLASH 的总文件数 FLASH 内部总文件数[MP3/WAV 文件] |
0x4B | 查询 UDISK 的当前曲目 物理顺序 |
0x4C | 查询 TF 的当前曲目 物理顺序 |
0x4D | 查询 FLASH 的当前曲目 物理顺序 |
0x4E | 查询指定文件夹的曲目总数 |
0x4F | 查询当前设备的总文件夹数 |
0x47 | 查询 UDISK 文件总数 U 盘内部的总文件数[MP3/WAV 文件] |
语音合成方式
- 不同时间播放不同音,间隔一定时间,500msli>
- 不断查询状态,没有音播放时,播放下一个音
- 收到播放结束标志时,播放下一个音
- 组合播 功能
使用组合播 功能实现连续播放语音,可以实现 时, 温度,在一定程度上可以替代一些昂贵的TTS方案。
TTS方案我们之前介绍过下面的 文。
让机器能够说话,语音播 功能的实现
组合播放功能指令
如果发送 7E FF 15 21 01 02 02 03 01 04 01 05 01 06 01 07 02 08 03 04 03 02 EF
这一帧数据,我们分析一下
CMD= 0x21 — 组合播 指令码
Len = 0x15 = 21 个字节 —FF 15 21 01 02 02 03 01 04 01 05 01 06 01 07 02 08 03 04 03 02
[其中一段语音,由两个参数组成,即“文件夹编 ”和“文件名编 ”]
注意:观察一下这帧数据,可以发现这帧数据跟介绍的协议不一样,里面没有命令反馈和校验位。
资源文件命名规则
- TF卡根目录文件夹以两位数字命名,最多支持99个文件夹,命名方式类似”01″,”11″等等;
- 文件夹内的歌曲以”数字+歌曲名.mp3“的格式命名,比如音频素材的文件名为:“001 Yesterday Once More”,”001 零”等等;
- 文件夹下曲目的最多255首,即一个字节数字代表的范围0x01~0xFF。
如果我们播放的内容为: “欢迎光临,现在时间是 21 年 2 月 8 日”,可以发送如下指令(23字节):
7E FF 15 21 02 21 02 16 02 03 02 02 02 10 02 03 02 11 02 09 02 12 EF
其他
还可以设置上一首、下一首、音量加减、随机播放、循环播放等工作模式,这些就由各位根据需要自己开发吧。
专注于嵌入式知识分享,让你学习路上不迷路,更多技术干货,请关注【嵌入式从0到1】。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!