给小爱音箱做一个开源固件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yadam
V2EX    程序员

给小爱音箱做一个开源固件

  •  2
     
  •   yadam
    jialeicui 2024-01-24 18:47:37 +08:00 5493 次点击
    这是一个创建于 692 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近家里小孩儿喜欢问很多问题, 想着家里有一个小爱音箱 mini, 是不是能让音箱帮忙使用 ChatGPT 回答(音箱现有的回答不是很满意)

    搜了下果然有一个成熟的方案 xiaogpt, 看了下思路很棒, 不过因为需要轮训服务器这个点, 我有点儿担心把自己的账号搞挂了, 就萌生了做一个更直接方案的想法

    一开始什么思路都没有, 找 weibo 上关注很久的一个软硬件都厉害的大佬, 发私信想求助一些关键词和思路, 不过可能对方没有看私信的习惯, 一直没有回复.

    最近两周各种查资料, 终于有了一些眉目, 记录了一下过程分享出来, 希望能帮到像我这样有想法但不知道怎么开始的同学 (自个写的程序在音箱上跑起来的时候是真的开心)

    repo: https://github.com/jialeicui/open-lx01

    项目刚开始, 只做到了在音箱上跑自己程序的程度, 我认为未来应该是可以做成一个完全自主控制的音箱

    项目中可能会有不少错误的地方, 各位如果发现希望能指导一二, 也防止错误的文章误导别人, 感谢!

    32 条回复    2025-11-17 19:17:10 +08:00
    zhangpulin
        1
    zhangpulin  
       2024-01-24 19:29:23 +08:00
    666
    ashong
        2
    ashong  
       2024-01-24 19:43:20 +08:00
    SayHelloHi
        3
    SayHelloHi  
       2024-01-24 20:30:03 +08:00
    这个 有点难度

    话说 有可以配置进入后台进行配置的 AI 音箱嘛
    zzbd
        4
    zzbd  
       2024-01-24 20:39:47 +08:00
    能适配小爱音箱 pro 嘛
    binsys
        5
    binsys  
       2024-01-24 20:42:54 +08:00
    有硬件安全 boot ,除非出现硬件级 BUG ,或者官方泄露签名,否则跑不起来。
    研究下看能不能绕过安全 boot 吧。
    yadam
        6
    yadam  
    OP
       2024-01-24 21:34:52 +08:00
    查了下 pro ,用的 CPU 确实是支持 security boot 的,估计够呛 https://www.52audio.com/archives/38303.html
    yadam
        7
    yadam  
    OP
       2024-01-24 21:41:55 +08:00
    @SayHelloHi 我大概把路趟了一下, 应该问题不大, 测试用 porcupine 跑关键词唤醒有点儿问题, 但问题应该是出在我的对 ALSA 的配置上

    因为 porcupine 只支持单 channel ,音箱上的 pcm 又只支持配置成 8 channel ,我就在 ALSA 里加了一个 slave ,把另外 7 个通道都扔了,但不知道啥原因,用 arecord 也是时好时坏,好的时候 porcupine 也是能唤醒的

    唤醒搞定了之后剩下都是服务器端的活儿,这个我在行

    至于其他 AI 音箱我也不熟悉,猜测应该不会有支持后台配置的,毕竟音箱不是卖硬件挣钱,要是随便配置了,厂商没的赚。
    yadam
        8
    yadam  
    OP
       2024-01-24 22:02:48 +08:00
    忘记 at 了, #6

    @zzbd
    @binsys
    0xHubNet
        9
    0xHubNet  
       2024-01-25 00:38:51 +08:00
    小米的锁了,比较麻烦,你看下这个 https://docs.folotoy.com/docs/installation/docker
    tianxin
        10
    tianxin  
       2024-01-25 01:08:38 +08:00 via Android
    京东音箱 mini2 已经停服了,希望能有第三方固件复活
    kneo
        11
    kneo  
       2024-01-25 01:16:09 +08:00 via Android
    问个有点幼稚的问题:直接刷普通的安卓系统不行吗?
    cat9life
        12
    cat9life  
       2024-01-25 08:43:56 +08:00
    持续关注 顶
    Rorysky
        13
    Rorysky  
       2024-01-25 09:12:30 +08:00
    很有前景的项目

    因为小爱音箱出货量挺大的,要是支持自定义,介入 home assistant 就牛逼了
    yadam
        14
    yadam  
    OP
       2024-01-25 11:03:01 +08:00
    @0xHubNet #9 好项目, 看起来做的比我这个完善很多, 要是开源的就更好了
    yadam
        15
    yadam  
    OP
       2024-01-25 11:05:13 +08:00
    @tianxin #10 看了下, 有可能可以搞

    它用的是联发科的 MT8516, 搜了下是支持安全启动的, 可能难搞一些
    https://www.52audio.com/archives/2789.html

    不过看这个 issue 的样子可能是可以 disable 掉的 https://github.com/MTK-bypass/bypass_utility/issues/29

    有时间我咸鱼搞一个, 简单搜了下可能十几块钱就可以买一个, 还有 aux 口可以外接别的音箱, 挺值的
    yadam
        16
    yadam  
    OP
       2024-01-25 11:07:19 +08:00
    @kneo #11 我对安卓和嵌入式都不太懂, 猜测不行. 这个音箱留给 rootfs 的就 32M 大小, 安卓不知道能不能搞到这么小.

    就算能搞到, 感觉也得是精简很多驱动和代码? 到最后感觉就精简成了现在官方固件的样子: firmware + kernel + 一些 deamon
    yadam
        17
    yadam  
    OP
       2024-01-25 11:09:01 +08:00
    @Rorysky #13 经过楼上 @binsys 老哥的提醒, 感觉是带安全启动的都不好搞, 看起来可能这种方案只适用于低端音箱了
    JohnJackson
        18
    JohnJackson  
       2024-01-25 13:39:10 +08:00
    我想知道 OP 说的微博大佬是哪个
    yadam
        19
    yadam  
    OP
       2024-01-25 18:07:28 +08:00
    @JohnJackson #18 抱歉请忽略微博大佬吧 (提这个事情主要是想表达梳理文档的初衷, 万一发展成挂人就不是我本意了
    yadam
        20
    yadam  
    OP
       2024-01-25 18:13:05 +08:00
    @zzbd #4 看到有人给 pro 刷固件, 所以未来应该是可以搞的
    https://bbs.hassbian.com/thread-8754-1-1.html
    binsys
        21
    binsys  
       2024-01-25 19:21:44 +08:00   1
    其实现在开源硬件可各种资源很多的,像我这样的业余人员,可能只擅长软件,IOT ,对模具,声音工程,外观设计,功率音频都不熟悉的也不想花那么多成本的,可以试着对音箱硬改,举几个没细想的例子:

    自己做块小板,带 CPU 的,想办法做的小塞进音响里,音响自带麦克风的板子断开,接自己板子上,做个中间人拦截,是目标唤醒词的直接自己处理,不是的放给小爱音箱默认处理,这里可能存在 VAD 问题,一直给小爱板子送静音或者微声音的 I2S 信号可能解决 VAD 问题。

    直接替换小艾的 CPU 板子,但保留功放 codec mic in 等音频部分。

    直接替换 CPU ,淘宝买 CPU 找人焊上,利用厂商公版 SDK
    自己写固件
    yadam
        22
    yadam  
    OP
       2024-01-25 22:24:16 +08:00
    我对 "CPU 找人焊上" 以及 “利用厂商公版 SDK” 完全没有概念

    比如 CPU 找人焊是淘宝搜关键词还是有熟悉的厂家, 厂商公版 SDK 指的是买开发板么? 开发板我搜了下都还挺贵的, 感觉不如直接咸鱼买音箱的硬件划算 :)

    @binsys
    zzbd
        23
    zzbd  
       2024-01-29 11:53:30 +08:00
    @yadam 感谢回复,看来是需要动手能力的,不过可行的话闲鱼又得涨价啦
    zzbd
        24
    zzbd  
       2024-01-29 12:07:18 +08:00
    另外想问下有没有不用折腾又能跑自己程序的音箱啊,求
    yadam
        25
    yadam  
    OP
       2024-01-29 12:34:43 +08:00
    @zzbd #24 看到这么一个公司, 没深入研究 https://www.iflyos.cn/
    kekeones
        26
    kekeones  
       2024-01-31 17:56:03 +08:00
    ESP32 自己搞一个呢
    yadam
        27
    yadam  
    OP
       2024-01-31 21:54:29 +08:00
    @kekeones 自己搞应该是正途,我对硬件设计完全不懂,就算找几个现成方案攒起来大概率贵&集成度不好
    zzbd
        28
    zzbd  
       2024-02-02 16:18:12 +08:00
    @yadam LZ, 看到一个类似的项目( yihong0618/xiaogpt ),不知道好不好用,等我测试完过来写体验
    yadam
        29
    yadam  
    OP
       2024-02-02 17:25:23 +08:00
    @zzbd #28 嗯, 是的, 这个项目适用性比我的这个广, 因为不用 root 音箱. 我在描述里提到了, repo 最下方也有链接
    e5b9dad02b882816
        30
    e5b9dad02b882816  
       30 天前
    @yadam 弱问一下,京东音箱 mini2 的 sec boot 后续有进展吗
    yadam
        31
    yadam  
    OP
       29 天前
    @e5b9dad02b882816 #30 因为玲珑那个公司不做了, 没有拿到固件, 搞不定了
    e5b9dad02b882816
        32
    e5b9dad02b882816  
       29 天前   1
    @yadam 找到一些资料 https://www.abddb.com/something_about_dingdong_mini2.html ,不知道有没有用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4641 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 44ms UTC 05:39 PVG 13:39 LAX 21:39 JFK 00:39
    Do have fith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86