爱意满满的作品展示区。
hanxiV2EX

小爱音箱播放自定义音乐

  •  6
     
  •   hanxiV2EX ·
    hanxi · Oct 14, 2023 via Android · 33668 views
    This topic created in 1118 days ago, the information mentioned may be changed or developed.
    https://github.com/hanxi/xiaomusic

    刚提交初版,勉强能用,很多接口是用的 xiaogpt 项目。

    根据提示语执行接口,播放音乐支持本地音乐,本地没找到就会搜索下载到本地再播放。
    Supplement 1  ·  Jan 30, 2024
    版本更新

    1. 新增播放本地的 flac 格式文件;
    2. 新增控制面,方便手机上操控。

    Supplement 2  ·  May 20, 2024
    版本更新,支持在网页控制台里方便的设置必要参数。

    Supplement 3  ·  Jun 13, 2024
    新增播放列表功能
    Supplement 4  ·  Jun 26, 2024
    #版本更新

    v0.1.62 版本新增自定义网络歌单功能,可以添加电台和歌曲,不用下载歌曲到本地也能播放音乐,可以分享歌单和使用别人的歌单,具体详情见 https://github.com/hanxi/xiaomusic/issues/78

    Supplement 5  ·  Sep 19, 2024
    版本更新:

    - 新增了更好看的主题
    - 新增了微信小程序: XIAO 晓音
    Supplement 6  ·  Feb 28, 2025
    最新发布的 Xiaomi 智能音箱 Pro 型号也是支持的。欢迎试用。。。
    123 replies  •  2025-02-22 13:09:58 +08:00
    1  2  
    ❮ ❯
    laylou
    laylou
    Oct 14, 2023
    1
    如何安装?这些命令是在那些地方执行?
    在 Mac 上执行还是找一个在线的端口,在小米上面执行
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 14, 2023 via Android
    2
    @laylou 可以局域网找台 linux 机子运行,还没做好 docker 镜像。
    laylou
    laylou
    Oct 14, 2023
    3
    算是劫持了小米的流量到 linux 机子上吗?
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 14, 2023 via Android
    4
    @laylou 原理是这个,不是劫持流量,是轮训对话记录,用外网的 vps 跑也行,可能速度会慢吧。

    https://github.com/yihong0618/gitblog/issues/258
    tyhunter
    tyhunter
    Oct 15, 2023❤️2
    5
    666 要是能封装成 Docker 挂在 NAS 跑就好了
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 15, 2023 via Android
    6
    @tyhunter 安排
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 15, 2023
    7
    @tyhunter
    @laylou 已做好 docker 镜像,欢迎体验。
    laylou
    laylou
    Oct 15, 2023
    8
    @hanxiV2EX 在 nas 上的 docker 里安装吗?然后轮训对话记录?小米音箱本身要做修改吗?
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 15, 2023 via Android
    9
    ShineyWang
    ShineyWang
    Oct 15, 2023 via Android
    10
    一直有这样的需求
    想要用小爱直接播放我的 Nas 里面的音乐,可能是 webdav 或者 smb 的路径
    这样能做吗?
    zouzou0208
    zouzou0208
    Oct 15, 2023
    11
    @ShineyWang 理论上都可以的。。。
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 15, 2023 via Android
    12
    @ShineyWang 现在只能是本地路径,你可以把路径挂载进去试试,有问题可以提 issue 吧。
    icySoda
    icySoda
    Oct 16, 2023 via iPhone
    13
    请假一下,为什么要用轮询的方式呢?我看小爱音箱官方是支持开发第三方技能的,是有什么限制吗?
    icySoda
    icySoda
    Oct 16, 2023 via iPhone
    14
    s/请假/请教
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 16, 2023 via Android
    15
    @icySoda 不是很清楚,估计需要申请开发者账号,做成服务号上架吧。
    join
    join
    Oct 16, 2023 via iPhone
    16
    小爱音箱可以破解吗?我实在不相信国产的可联网设备。
    join
    join
    Oct 16, 2023
    17
    @hanxiV2EX 不好意思, 没仔细看你说的原理。现在我大致明白了。这些看着还挺好玩的。
    我的笔记本就是 linux 的,但用做局域网“电脑”好像不太合适,需要 24 小时运行。楼主你用的是啥设备?软路由?
    另外小爱音箱买哪个比较好?
    join
    join
    Oct 16, 2023
    18
    我还有个担心就是,我如果说英语不知道它能不能识别出来并发给 GPT ?
    hanxiV2EX
    hanxiV2EX
    OP
    Oct 17, 2023
    19
    @join 一般的 NAS 都带了 docker 功能,适合运行这个东西。有软路由的话也可以跑在软路由上。英语不知道能不能识别,如果小爱同学可以识别英语的话,xiaogpt 那个工具就可以做到,原理只是拉起小爱同学的对话记录,对话记录米家 app 上也能看到的。
    JarvenI
    JarvenI
    Nov 8, 2023
    20
    我试了一下,用的小爱音箱 pro ,播放音乐会在几分钟的延迟后播放,然后音乐播放时间只能播放 1 分钟左右,不是你这个项目的问题,是 api 的问题,我用 miservice 的那个 cli 命令播放音乐也是这样。
    hanxiV2EX
    hanxiV2EX
    OP
    Nov 8, 2023 via Android
    21
    @JarvenI 是不是音乐文件太大了?
    JarvenI
    JarvenI
    Nov 8, 2023
    22
    @hanxiV2EX 两分钟多点的一个文件,试了两个 mp3 文件都是这样,最小的一个是 8M 的,算大吗?
    hanxiV2EX
    hanxiV2EX
    OP
    Nov 8, 2023 via Android
    23
    @JarvenI 那不大,mp3 的文件服务器在局域网吗?
    JarvenI
    JarvenI
    Nov 8, 2023
    24
    @hanxiV2EX 对的,链接就是 192.168 开头的。
    hanxiV2EX
    hanxiV2EX
    OP
    Nov 9, 2023 via Android
    25
    @JarvenI 可以去 miservice 提个 issue 问问,那边人比较多,比较活跃。
    JarvenI
    JarvenI
    Nov 9, 2023
    26
    @hanxiV2EX 多谢
    deerpine
    deerpine
    Jan 30, 2024 via Android
    27
    学习了
    milala
    milala
    Jan 30, 2024
    28
    只能播放本地音乐吗
    弄几个和在线的音乐
    hanxiV2EX
    hanxiV2EX
    OP
    Jan 30, 2024 via Android
    29
    @milala 本地音乐不存在时会自动搜索下载再播放的,我试过播放故事都行。国内使用需要配置好代理才能下载歌曲,XIAOMUSIC_PROXY 用于配置代理,默认为空,yt-dlp 工具下载歌曲会用到。
    a8500830
    a8500830
    Jan 31, 2024
    30
    小爱都有了,小度也不远了吧
    hanxiV2EX
    hanxiV2EX
    OP
    Jan 31, 2024 via Android
    31
    @a8500830 我没有小度,如果有人帮忙写好操控接口的话我可以接入。
    xuanyuanaosheng
    xuanyuanaosheng
    Jan 31, 2024
    32
    嗯不错
    xianzheng
    xianzheng
    Jan 31, 2024
    33
    下载源是哪里,可以指定吗?
    hanxiV2EX
    hanxiV2EX
    OP
    Jan 31, 2024 via Android
    34
    @xianzheng 目前是用的 YouTube ,可以加个配置选择 BiliBiliSearch
    qweqqwe
    qweqqwe
    Jan 31, 2024
    35
    可以同时两个音箱一起播放吗?
    hanxiV2EX
    hanxiV2EX
    OP
    Jan 31, 2024 via Android
    36
    @qweqqwe 目前是不可以的,改改应该是可以实现的。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 1, 2024
    37
    @xianzheng 我测试了用 BiliBiliSearch ,但是有 bug ,等这个 bug 解决之后我再考虑支持换下载源吧。
    https://github.com/yt-dlp/yt-dlp/issues/5083
    huangmingyou
    huangmingyou
    Feb 2, 2024
    38
    学习了一圈,有几个疑问,获取对话记录是通过官方 api 还是别的方式,docker 播放的音频是通过音频线还是流媒体发给音箱,获取设备 did 是不是需要劫持流量抓包?
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 2, 2024 via Android
    39
    @huangmingyou 获取对话记录是用的 http 接口,应该是爬的手机上请求对话记录的接口。docker 播放是提供 http url 地址给小爱播放。

    原理看这个文章就行

    https://github.com/yihong0618/gitblog/issues/258

    主要是这个库搞定的

    https://github.com/yihong0618/MiService
    kenvix
    kenvix
    Feb 2, 2024
    40
    @join #16 🤣不相信国产的可联网设备你买它干嘛?为什么不买 HomePod 和 Nest Audio ?
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 2, 2024 via Android
    41
    @join xiaogpt 那个项目是支持发消息给 gpt 的。
    huangmingyou
    huangmingyou
    Feb 2, 2024❤️1
    42
    我用 docker 部署起来了,看起来是通过小米官方的 API 实现交互的。
    huangmingyou
    huangmingyou
    Feb 2, 2024
    43
    播放 music 的 ui 点了按钮,执行了,但是界面上没有反馈
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 2, 2024 via Android
    44
    @huangmingyou 是缺少了点击反馈效果,后期优化一下。
    yautou
    yautou
    Feb 2, 2024❤️1
    45
    好项目,支持👍
    huangmingyou
    huangmingyou
    Feb 2, 2024
    46
    我用语音说“播放歌曲三年二班”, 直接播放云音乐的试听版本了呢?
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 2, 2024
    47
    @huangmingyou 可以看看日志,估计是小米账号没登陆成功。另外 ui 我优化了一下,你可以更新看看效果。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 2, 2024
    48
    @xianzheng 最新版本已经支持了更换歌曲下载源,XIAOMUSIC_SEARCH 参数配置为 "bilisearch:" 搜索下载歌曲,但是 yt-dlp 项目有个 bug 还没解决,目前还下载不了。https://github.com/yt-dlp/yt-dlp/issues/5083 等这个 bug 解决了就能用 BiliBiliSearch 了
    huangmingyou
    huangmingyou
    Feb 3, 2024
    49
    @hanxiV2EX 已经更新到最新的 docker 版本, docker logs -f xiaomusic 的时候,能看到网页上操作的日志,但是没有看到去取语音历史的日志。还是说有别的日志文件? 我 docer exec -it xiaomusic /bin/bash 到容器里面,用 micli.py list 可以正确列出设备列表。说明账号是对的。 现在是网页可以正常播放。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 3, 2024 via Android
    50
    @huangmingyou 获取历史记录的代码是这个 https://github.com/hanxi/xiaomusic/blob/main/xiaomusic/xiaomusic.py#L169

    你可以加打印调试看看是哪里有问题,也可能是这个问题吧。
    https://github.com/yihong0618/MiService/issues/2

    用网页控制是不走语音历史记录的。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 3, 2024 via Android
    51
    @huangmingyou 这些打印可以打开注释,然后用 --verbose 参数打开调试日志看看。

    https://github.com/hanxi/xiaomusic/blob/main/xiaomusic/xiaomusic.py#L88
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 3, 2024
    52
    @xianzheng 下载源搞定哔哩哔哩了,国内可以不用代理了。

    version: '3'

    services:
    xiaomusic:
    image: hanxi/xiaomusic
    container_name: xiaomusic
    restart: unless-stopped
    ports:
    - 8090:8090
    volumes:
    - ./music:/app/music
    environment:
    MI_USER: '小米账号'
    MI_PASS: '小米密码'
    MI_DID: 00000
    MI_HARDWARE: 'L07A'
    XIAOMUSIC_SEARCH: 'bilisearch:'
    XIAOMUSIC_HOSTNAME: '192.168.2.5'
    wongtk
    wongtk
    Feb 3, 2024 via iPhone❤️1
    53
    这个可以通过本地和搜索下载跳过试听了呀
    huangmingyou
    huangmingyou
    Feb 4, 2024
    54
    @hanxiV2EX docker 在哪里加这个 verbose,我对 python 不熟悉。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 4, 2024 via Android
    55
    @huangmingyou docker run -it -e MI_USER=<your-xiaomi-account> -e MI_PASS=<your-xiaomi-password> -e MI_DID=<your-xiaomi-speaker-mid> -e MI_HARDWARE='L07A' -e XIAOMUSIC_HOSTNAME=192.168.2.5 -e XIAOMUSIC_SEARCH='bilisearch:' -p 8090:8090 -v ./music:/app/music hanxi/xiaomusic:main --entrypoint '.venv/bin/python3 xiaomusic.py --verbose'

    你试试这样能不能行,docker 用前台模式启动,用 main 分支的镜像,然后修改 entrypoint 传参数进去。
    huangmingyou
    huangmingyou
    Feb 4, 2024
    56
    @hanxiV2EX 我调试了,拉列表的时候,disconnect,我用 curl 测试,发现 http 协议可以,https 协议卡住。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 4, 2024 via Android
    57
    huangmingyou
    huangmingyou
    Feb 4, 2024
    58
    @hanxiV2EX 不是,就是纯粹的 https 不能连,我在 docker 里面,用 curl https://www.baidu.com 就卡住,用 curl http:www.baidu.com 就正常。我测试用 ubuntu:22.04 的 docker 是可以 curl https 的。
    huangmingyou
    huangmingyou
    Feb 4, 2024
    59
    host 是可以 curl https 的,另外 docker 里面我看是有 ca-certificates 包的。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 5, 2024 via Android
    60
    @huangmingyou 那你这个应该是系统问题了,我的系统也是 ubuntu 2204 的
    huangmingyou
    huangmingyou
    Feb 5, 2024
    61
    用 hanxi/xiaomusic:latest 创建的容器里面 curl https://www.baidu.com 会卡住,在 ubuntu:22.04 创建的容器里面正常。
    huangmingyou
    huangmingyou
    Feb 5, 2024
    62
    容器 curl 回卡住,wgett 没问题,这可能是一个 bug . 我重新注册了账号,终于正常工作了。
    huangmingyou
    huangmingyou
    Feb 5, 2024
    63
    能否增加一个播放古诗词的功能。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 5, 2024 via Android
    64
    @huangmingyou 应该是已经支持的,你对小爱同学说'播放歌曲诗歌朗诵李白静夜思'试试?虽然有点奇怪,应该能搜到差不多对应的音频的。
    zgl263885
    zgl263885
    Feb 6, 2024 via iPhone
    65
    真的很棒!
    justincnn
    justincnn
    Feb 7, 2024
    66
    有可能用 apple music 的资源么?
    cucucun666
    cucucun666
    Feb 13, 2024
    67
    小爱音箱 L05C 设备无法正常播放音乐,已测试 micli 5-4 明天天气 0 能正常提示天气情况,可以正常发声。
    hanxiV2EX
    hanxiV2EX
    OP
    Feb 13, 2024 via Android
    68
    @cucucun666 试试用命令模式 --use_command 参数
    busy0769
    busy0769
    Mar 12, 2024
    69
    大佬,请教一下,如果家里有多个小爱音箱的话,要怎么使用您的项目?是给每个音箱建立一个 docker 吗?
    另外,可否加个选项,只搜索本地文件夹的音乐?
    hanxiV2EX
    hanxiV2EX
    OP
    Mar 12, 2024 via Android
    70
    @busy0769 目前只能是一个音箱一个 docker ,只搜索本地文件夹的话可以考虑加。
    wq2020wdm
    wq2020wdm
    Mar 30, 2024 via Android
    71
    我成功播放了本地音乐,但口令播放本地有点问题,想请教下:1. 因为我是自建了音乐库,所以是文件夹嵌套的,比如/Music/华语音乐/周杰伦/周杰伦-七里香/周杰伦-七里香.flac ,这样的嵌套是否支持搜索? 2. 我只映射了七里香专辑后,七里香歌曲的命名是 1.0.2 七里香.flac ,我口令是播放歌曲七里香,还是默认下载了,下载好了,后面再说播放歌曲七里香是直接本地了,请问下,这个歌曲命名有规范吗?
    wq2020wdm
    wq2020wdm
    Mar 30, 2024 via Android
    72
    试验了一下,文件夹嵌套没问题,但是搜索好像有点问题,歌曲叫周杰伦-七里香.flac ,我试验了播放歌曲七里香,还有播放歌曲周杰伦七里香,都会开始下载,这样,是只能重命名歌曲了吗
    hanxiV2EX
    hanxiV2EX
    OP
    Mar 30, 2024 via Android
    73
    @wq2020wdm 搜索目前用的是完全匹配,没有做模糊搜索。
    wq2020wdm
    wq2020wdm
    Mar 30, 2024
    74
    @hanxiV2EX 那请问下后续有没有可能支持模糊搜索哪?
    hanxiV2EX
    hanxiV2EX
    OP
    Mar 31, 2024 via Android
    75
    @wq2020wdm 还没想好怎么弄比较合适
    superhxl
    superhxl
    Apr 1, 2024
    76
    在树莓派 4B 上,安装好了。目前有两个问题:
    1 )搜索似乎有问题,下载下来的不是我要的歌,包括示例“播放歌曲周杰伦晴天”。用过 ytsearch 和 bilisearch ,都不行;
    2 )我访问不了操控面板,提示“拒绝访问”。
    superhxl
    superhxl
    Apr 1, 2024
    77
    @superhxl 补充:树莓派刷 openwrt ,在 openwrt docker 中安装的。
    hanxiV2EX
    hanxiV2EX
    OP
    Apr 1, 2024 via Android
    78
    @superhxl 拒绝访问是不是端口没映射出来?有没有日志排查一下?
    skschema
    skschema
    May 6, 2024
    79
    背景信息:使用群晖 docker 部署了 xiaomusic,小爱音箱外观型号是 MDZ - 25 - DA ,使用 micli mina 查寻型号为 S12 ,设置搜索为 bilibili 。

    当前正常:目前使用网页端操作可以下载、播放音乐,点击关机按钮可停止播放。大致类似 @wq2020wdm

    问题:
    1.使用网页端播放的音乐,使用语音指令暂停后不久会自动播放其它音乐,直到使用网页端关机按钮停止。
    2.已经使用网页端下载好某文件名音乐,使用语音指令“播放歌曲 XXXX”仍然播放试听。(多次测试和重启)是不是 xiaogpt 也需要单独部署?

    希望:1.语音指令或网页端能播放指定文件夹或指定列表的歌曲。
    hanxiV2EX
    hanxiV2EX
    OP
    May 6, 2024 via Android
    80
    @skschema 语音只有关机和停止播放,没有暂停。播放指定文件夹或者播放指定列表还没实现。网页端支持了模糊搜索本地音乐,你可以试试看。
    hanxiV2EX
    hanxiV2EX
    OP
    May 6, 2024 via Android
    81
    @skschema 语音播放不了的问题可能是 MI_HARDWARE 参数设置错了吧,你检查一下。拉取对话记录用的,填错会取不到对话记录。
    skschema
    skschema
    May 6, 2024
    82
    @hanxiV2EX 谢谢,获取到正确的型号,目前可以用语音指令了。

    奇怪的是,重新使用 micli mina 获取的内容和上次不一样,之前获取到所有账号下的设备内容,这次只获取到音箱信息。而且设备型号也和上次不一样,本次获取为 S12A 。
    hangbale
    hangbale
    Jun 13, 2024
    83
    可以加入播放 webdav 音乐的功能吗,家里小主机上部了个 alist ,歌都放网盘
    harryWebb
    harryWebb
    Jun 13, 2024
    84
    小爱音箱要是能搜 spotify 的音乐就够了,现在只能 qq 音乐和网易云太操蛋了,各种屏蔽音乐,本地的音乐一般人不会去挂着存
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 13, 2024 via Android
    85
    @hangbale 你可以试试把 alist 的 webdav 挂载到本机系统试试
    momo65535
    momo65535
    Jun 14, 2024
    86
    天猫精灵有没有解法呢?
    Qiss
    Qiss
    Jun 14, 2024
    87
    有天猫精灵的版本么?
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 14, 2024 via Android
    88
    @fanersai
    @Qiss 目前没有,需要天猫精灵有接口才行,没有设备研究。。。
    cirzear
    cirzear
    Jun 14, 2024
    89
    牛的,先马克,有时间玩玩
    sakisaki
    sakisaki
    Jun 15, 2024 via Android
    90
    求助,有个需求:定时播放自定义语音。例如 8:00 自动播放语音提醒“请不要忘记吃早餐。”。这个功能买哪个智能音箱可以实现?
    cue
    cue
    Jun 15, 2024
    91
    请问下是否支持小爱闹钟?
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 15, 2024❤️1
    92
    @sakisaki 好像小爱同学原生支持这样设定闹钟的,闹钟到了会按自己设定的提示语说的。
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 15, 2024
    93
    @cue 这个不影响小爱闹钟,只是小爱闹钟不能用这里的音乐。
    sakisaki
    sakisaki
    Jun 15, 2024 via Android
    94
    @hanxiV2EX 额,看来客服误导了我。客服说不支持我的需求。
    sakisaki
    sakisaki
    Jun 15, 2024 via Android
    95
    @hanxiV2EX 谢谢你的解答
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 15, 2024 via Android❤️1
    96
    @sakisaki 我一般是这样说的:小爱同学八点提醒我请不要忘记吃早餐,到时间了它会复述一遍提醒语的。
    isAK47
    isAK47
    Jun 25, 2024
    97
    咨询一个问题,宿主机本身是路由器,空间不大,是否可以设置下载空间的容量上限,超过容量就自动清理?
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 26, 2024 via Android
    98
    @isAK47 可以写个脚本定时清理,不过最新版本支持了网络歌单功能,可以不用下载歌曲到本地,只要维护好歌单就行。
    isAK47
    isAK47
    Jun 26, 2024
    99
    @hanxiV2EX 歌单功能不错,不过不能覆盖部分场景,比如我家这个小孩子用的比较多。定时清理脚本是在容器内执行吗?顺便问下目前语音找内容还不能模糊匹配是吧
    hanxiV2EX
    hanxiV2EX
    OP
    Jun 26, 2024 via Android
    100
    @isAK47 还不支持模糊匹配,有支持的计划了,定时清理在外面和里面都行的,目录只要映射好就行。
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2187 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 115ms · UTC 13:50 · PVG 21:50 · LAX 05:50 · JFK 08:50
    ♥ Do have faith in what you're doing.