让小爱音箱播放NAS里存的音乐

XiaoMusic 是由开发者 Hanxi 创建的一个开源项目,旨在让用户可以通过小爱音箱播放本地或网络音乐资源,从而突破原生只能播放小米生态内容的限制。

https://github.com/hanxi/xiaomusic

该项目的核心思路是通过调用小米账号授权接口,将本地音乐、网络音乐或者播放列表资源,推送给小爱音箱进行播放,实现“我说一句,小爱同学就能播我自己的歌”。

项目提供了 Python 包和 Docker 镜像两种部署方式,既方便开发者直接调试,也适合部署在 NAS 或服务器上进行长期运行。

功能亮点

• 通过提供一个可自部署的服务,来将本地目录下的 mp3、flac、ape 等格式的音乐转化为可以通过小爱音箱播放的资源链接。
• 在控制能力上,XiaoMusic 支持常见的语音指令并提供了对小爱音箱语音识别记录的读取和识别功能,从而实现对语音行为的自定义解析。
• 项目还支持多个本地目录的同时配置,可以配合 Navidrome、Jellyfin 等音乐服务器进行目录共享;也支持将常见的 m3u 播放列表格式转换为 JSON 文件,从而通过 XiaoMusic 识别并播放。
• 用户体验方面还引入了播放记录功能、设备选择功能、歌词下载、自定义 UI 等内容,尤其是对于多设备场景(如多个小爱音箱)的用户提供了额外的灵活性。

语音口令

• 【播放歌曲】,播放本地的歌曲
• 【播放歌曲+歌名】,比如:播放歌曲周杰伦晴天
• 【上一首】、【下一首】、【单曲循环】、【全部循环】、【随机播放】
• 【关机】,【停止播放】,两个效果是一样的。
• 【刷新列表】,当复制了歌曲进 music 目录后,可以用这个口令刷新歌单。
• 【播放列表+列表名】,比如:播放列表其他。
• 【加入收藏】,把当前播放的歌曲加入收藏歌单。
• 【取消收藏】,把当前播放的歌曲从收藏歌单里移除。
• 【播放列表收藏】,这个用于播放收藏歌单。
• 【播放本地歌曲+歌名】,这个口令和播放歌曲的区别是本地找不到也不会去下载。
• 【播放列表第几个+列表名】
• 【搜索播放+关键词】,会搜索关键词作为临时搜索列表播放,比如说【搜索播放林俊杰】,会播放所有林俊杰的歌。
• 【本地搜索播放+关键词】,跟搜索播放的区别是本地找不到也不会去下载。

docker部署

services:
  xiaomusic:
    image: docker.hanxi.cc/hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
      - 58090:8090
    environment:
      XIAOMUSIC_PUBLIC_PORT: 58090
    volumes:
      - /xiaomusic_music:/app/music
      - /xiaomusic_conf:/app/conf

• 其中 conf 目录为配置文件存放目录,music 目录为音乐存放目录,建议分开配置为不同的目录。
• /xiaomusic_music 和 /xiaomusic_conf 是 docker 所在的主机的目录,可以修改为其他目录。如果报错找不到 /xiaomusic_music 目录,可以先执行 mkdir -p /xiaomusic_{music,conf} 命令新建目录。
• /app/music 和 /app/conf 是 docker 容器里的目录,不要去修改。
• XIAOMUSIC_PUBLIC_PORT 是用来配置 NAS 本地端口的。8090 是容器端口,不要去修改。
• 后台访问地址为: http://NAS_IP:58090