在上篇Docker系列的文章中我们让家里的小朋友都用上了GPT大模型,今天我们来介绍个轻松愉悦的项目:打破小爱音箱的壁垒,实现小爱音箱播放群晖里的音乐。
玩群晖的都知道,想要播放群晖中的音乐必须要经过【Audio Station】套件,而小爱音箱中也只能播放内置的音乐,或者需要单独的音乐会员。
如果你同时拥有群晖和小爱音箱,那么你肯定思考过,群晖中的音乐能否直接通过小爱音箱播放?
今天这个项目就可以实现!
不单单是音乐,音频也可以通过小爱音箱播放,给家里的小孩放点英语磨耳朵也是非常不错的。
项目地址
https://github.com/hanxi/xiaomusic
功能
- 播放本地音乐。通过该功能可以让小爱音箱播放本地的音乐,打破音箱的壁垒。
- 搜索下载网络音乐。支持哔哩哔哩下载歌曲, youtobe 下载歌曲并保存到本地。
- 网络歌单功能。可以配置一个 json 格式的歌单,支持电台和歌曲。
- 支持口令。“播放歌曲”,“播放歌曲+歌名“,比如:播放歌曲周杰伦晴天。
- 提供接口。可以自己开发前端,或者使用其他程序调用。
配置文件
我们使用docker容器的方式使用群晖进行安装,所以首先我们准备好docker-compose文件。
🔻 根据自身情况修改以下docker-compose文件。
version: '3'
services:
xiaomusic:
image: hanxi/xiaomusic
container_name: xiaomusic
restart: unless-stopped
ports:
- 8090:8090
volumes:
- /volume1/music:/app/music
environment:
MI_USER: 'xxxx'
MI_PASS: 'xxxx'
MI_DID: 00000
MI_HARDWARE: 'L05C'
XIAOMUSIC_SEARCH: 'bilisearch:'
XIAOMUSIC_HOSTNAME: '192.168.2.99'🔻 /volume1/music,修改为本地音乐文件存放路经。(后面下载的音频文件也会在这里)

🔻 MI_USER在米家APP中获取,MI_PASS为对应的密码(和上一篇小爱接入GPT的一致),MI_DID可以不用管,后面可以选择。

🔻 MI_HARDWARE可以参考下面的表格,也可以直接在音箱底部找到对应的型号。
| 型号 | 名称 |
|---|---|
| L06A | 小爱音箱 |
| L07A | Redmi小爱音箱 Play |
| S12/S12A/MDZ-25-DA | 小米AI音箱 |
| LX5A | 小爱音箱 万能遥控版 |
| LX05 | 小爱音箱Play(2019款) |
| L16A | Xiaomi Sound |
| L17A | Xiaomi Sound Pro |
| LX06 | 小爱音箱Pro |
| LX01 | 小爱音箱mini |
| L05B | 小爱音箱Play |
| L05C | 小米小爱音箱Play 增强版 |
| LX04 X10A X08A | 已经支持的触屏版 |
XIAOMUSIC_SEARCH表示启用哔哩哔哩搜索。'bilisearch:' 表示歌曲从哔哩哔哩下载;'ytsearch:' 表示歌曲从 youtube 下载。
XIAOMUSIC_HOSTNAME为宿主机的IP地址。(在哪个设备上运行就设置为哪个设备的IP)
最后把修改好的文件保存命名为:docker-compose.yml。
安装
🔻 在【File Station】新建文件夹,并把docker-compose文件上传到群晖中。

🔻 打开群晖【Container Manager】,新增项目,选择刚刚创建好的docker-compose文件。

🔻 等待拉取镜像并启动,最后查看容器日志,如果没有报错就代表成功。

使用
🔻 在浏览器输入【群晖IP:8090】进入管理界面,点击齿轮进入设置。

🔻 选择一个音箱,保存并返回首页。

🔻 播放本地音乐。

🔻 播放链接音乐。

后记
如果群晖的8090端口被占用,则需要修改为其他端口。但是这里的修改和其他容器不同,并不能直接修改宿主机中的8090,而要增加一个环境变量XIAOMUSIC_PORT,并按照下图修改。

如果你的小爱音箱不能播放本地歌曲,那么请检查日志里的播放链接(如:http://192.168.2.99:8090/music/%E5%A4%9C%E6%9B%B2.wav)能否直接在浏览器中播放。

发散一下,你可以通过这个项目直接绕开群晖的控制,直接在公网播放群晖中的音乐,不需要单独去修改群晖中nginx的配置文件(防止出现问题)。