自己DIY一个mp3播放器

前些天发现了一个巨牛的人工智能学习 站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。
人工智能编程入门博客


通讯协议

常用指令表

控制指令

控制指令 对应的功能
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进行处理,非常感谢!

上一篇 2021年1月6日
下一篇 2021年1月6日

相关推荐