引言

“让小爱音箱「听见你的声音」,解锁无限可能。”

这是「每日一个开源项目」系列的第 233 篇。今天的项目是 Open-XiaoAI —— 一个直接接管小米小爱音箱硬件能力的开源项目,2,611 颗 Star,MIT 许可证,作者 idootop(Del Wang)。

提醒:本项目已经停止维护,不再提供更新与支持。文章仍然值得一读,因为它展示了一种"硬件厂商没给的能力,自己动手补上"的完整工程方法,这个思路对任何想魔改消费电子设备的人都有参考价值。

小爱音箱作为千万级销量的智能音箱,功能被厂商锁死在"指令-响应"的固定逻辑里——听得见分贝却听不懂情感,能执行命令却不会主动思考。Open-XiaoAI 的做法很直接:刷机 + SSH,直接接管音箱的麦克风输入和扬声器输出,把原本应该交给小米云端的语音识别和对话逻辑,转发到你自己的电脑或服务器上,让任意大模型来处理。

你会学到什么

  • Open-XiaoAI 的 Client-Server 架构:音箱上只跑一个"转发器"
  • 为什么业务逻辑要放在 Server 端而不是音箱本身
  • 四个官方演示:接入小智 AI、自定义唤醒词、接入 MiGPT、接入 Gemini Live
  • 刷机、SSH、交叉编译部署的完整流程
  • 这类硬件改造项目的安全边界和风险

前提知识

  • 有一台小爱音箱 Pro(LX06)或 Xiaomi 智能音箱 Pro(OH2P)—— 仅限这两款机型
  • 基础的 Linux/SSH 操作经验
  • 了解 Rust 和 Python/Node.js 任一语言会更容易上手

项目背景

概述

这不是作者第一次改造小爱音箱。上一个项目 MiGPT 已经实现过把 ChatGPT 接入小爱音箱,但那套方案仍然依赖小米原生的语音识别管线。Open-XiaoAI 这次更进一步——直接接管音箱的"耳朵"和"嘴巴",彻底绕开小米云端,把音频输入输出的控制权完全交给自己。

作者 / 团队

  • 作者: idootop(Del Wang)
  • 主要语言: Rust(Client 端补丁)+ Python / Node.js(Server 端示例)
  • 许可证: MIT License
  • 创建时间: 2025-04-07
  • 当前状态: ⚠️ 已归档停止维护

项目数据

  • ⭐ GitHub Stars: 2,611+
  • 🍴 Forks: 447+
  • 📄 许可证: MIT
  • 📅 创建时间: 2025-04-07
  • 🎯 适配机型: 仅限 小爱音箱 Pro(LX06)、Xiaomi 智能音箱 Pro(OH2P)

核心架构:Client 转发,Server 决策

Open-XiaoAI 由两部分组成,职责划分非常清晰:

Client 端(跑在音箱上,Rust 编写)

Client 端是一个刷进音箱固件的补丁程序,只做转发和被动响应,不实现任何业务逻辑:

  • 建立与 Server 端的双向实时通信(WebSocket 协议)
  • 把麦克风采集到的音频流转发给 Server 端
  • 把音箱上发生的事件(语音识别结果、播放状态等)转发给 Server 端
  • 响应 Server 端发来的指令(执行脚本、播放音频流、系统升级等)

为什么业务逻辑不放在音箱里?项目文档给出了很诚实的解释:小爱音箱的内存算力和存储空间极其有限,语音识别这类任务根本跑不动;而且用 Rust 写复杂业务逻辑,开发效率远不如 Python/Node.js,后者的 AI 生态也更丰富。

Server 端(跑在你的电脑/服务器上,语言任选)

真正的"大脑"全部在 Server 端——你可以用 Python、Node.js,接入任何大模型或 Agent 框架,决定音箱该怎么回应。Rust Client 通过语言 binding 和 Python/Node.js 双向互调,复用同一套网络通信模块;如果你想用别的语言写 Server,也可以参考 Rust 端的通信协议自己实现。

小爱音箱(刷机后)                    你的电脑/服务器
┌─────────────────────┐          ┌──────────────────────┐
│  Rust Client(转发器) │  WebSocket  │  Server(任意语言)     │
│  - 麦克风音频流         │ ◄──────► │  - 语音识别/VAD/唤醒词   │
│  - 扬声器播放           │          │  - 大模型/Agent 对话逻辑  │
│  - 系统事件             │          │  - 自定义业务逻辑        │
└─────────────────────┘          └──────────────────────┘

四个官方演示

项目在 examples/ 目录提供了四个可以直接跑起来的演示,各自对应一种接入方式:

1. 接入小智 AI(Python,examples/xiaozhi)

把音箱接入 小智 AI,支持连续对话、中途打断、中英文自定义唤醒词。底层用的是 py-xiaozhi 项目的语音处理能力,配合 VAD(语音活动检测)和 KWS(关键词唤醒)模型。

docker run -it --rm -p 4399:4399 \
  -v $(pwd)/config.py:/app/config.py \
  idootop/open-xiaoai-xiaozhi:latest

配置文件里可以自定义唤醒词:

APP_CONFIG = {
    "wakeup": {
        "keywords": ["豆包豆包", "你好小智", "hi siri"],
    },
    "xiaozhi": {
        "OTA_URL": "https://api.tenclass.net/xiaozhi/ota/",
        "WEBSOCKET_URL": "wss://api.tenclass.net/xiaozhi/v1/",
    },
}

2. 自定义唤醒词(独立演示)

展示如何把"小爱同学"替换成任意自定义唤醒词——这意味着你的音箱可以不再叫"小爱同学",而是叫任何你喜欢的名字。

3. 接入 MiGPT 完美版(Node.js,examples/migpt)

相比原版 MiGPT 项目,这个版本能完美打断音箱的回复,响应延迟更低。配置极简,直接填 OpenAI 兼容的 API:

export const kOpenXiaoAIConfig = {
  openai: {
    model: "gpt-4.1-mini",
    baseURL: "https://api.openai.com/v1",
    apiKey: "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  },
  prompt: {
    system: "你是一个智能助手,请根据用户的问题给出回答。",
  },
};

4. 接入 Gemini Live API

展示如何把音箱接入 Google 的 Gemini Live 多模态实时对话 API,实现更自然的语音交互体验。

此外还有一个 立体声组合演示,支持把两个不同型号的音箱组成立体声播放。


快速上手:从刷机到跑通演示

[!IMPORTANT]
本教程仅适用于小爱音箱 Pro(LX06)和 Xiaomi 智能音箱 Pro(OH2P),其他型号请勿尝试。

完整流程分三步:

Step 1:刷机 + SSH

按照 刷机教程 给音箱刷入补丁固件,开启并 SSH 连接到音箱。这一步涉及硬件层面的改造,有一定风险,不熟悉的用户需要谨慎。

Step 2:在音箱上安装 Client 端

# 在音箱上创建工作目录
mkdir /data/open-xiaoai

# 设置 Server 端地址(替换成你自己电脑的局域网 IP)
echo 'ws://192.168.31.227:4399' > /data/open-xiaoai/server.txt

# 下载并运行 Client 端
curl -sSfL https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/init.sh | sh

如果想要开机自启:

curl -L -o /data/init.sh https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/boot.sh
reboot

Step 3:在电脑上运行 Server 端演示

选择上面四个演示中的任意一个,按各自的 README 配置运行即可。

想自己编译 Client 端?

git clone https://github.com/idootop/open-xiaoai.git
cd packages/client-rust

# 交叉编译成 ARMv7(需要先装好 cross)
cross build --release --target armv7-unknown-linux-gnueabihf

编译产物通过 dd + ssh 直接写入音箱:

dd if=target/armv7-unknown-linux-gnueabihf/release/client \
| ssh -o HostKeyAlgorithms=+ssh-rsa root@你的小爱音箱IP地址 \
  "dd of=/data/open-xiaoai/client"

安全边界:这是一个"抛砖引玉"的演示

项目文档里有一段非常坦诚的风险说明,值得完整引用其精神:这只是一个基础演示程序,没有做多设备连接管理、身份认证、通信数据加密、音频压缩传输。默认提供的"执行任意脚本"能力演示虽然要求你本人指定可信的 Server 地址,但如果在公网上运行,必须格外谨慎——音箱会把麦克风采集到的音频流原始转发出去,一旦 Server 端地址被恶意篡改,等同于把家庭环境的声音开放给了未知第三方。

项目的免责声明也明确了边界:仅供学术研究或个人测试,不得用于商业服务;项目与小米集团无任何隶属或合作关系,未获官方授权,所有商标、固件、云服务的权利归小米集团所有。


项目地址与资源


总结

Open-XiaoAI 虽然已经停止维护,但它留下的工程思路仍然值得学习:当硬件厂商把设备的能力锁死在固定逻辑里时,"刷机接管底层硬件接口 + 把所有智能决策转移到自己可控的服务器"是一条可行且相对克制的改造路径。

三点值得注意:

Client 端"只转发不决策"的职责划分很克制。 很多硬件改造项目会试图把所有逻辑都塞进设备本身,结果受限于算力和开发效率举步维艰。Open-XiaoAI 把 Client 端做得尽可能薄——只负责音频转发和指令响应,所有 AI 能力都放在算力和生态都更强的 Server 端,这是嵌入式改造里一个值得复用的架构模式。

四个演示代表四种接入哲学,而不是在卖同一个方案。 小智 AI 走的是开源语音助手生态,MiGPT 直接接 OpenAI 兼容接口,Gemini Live 用谷歌的实时多模态 API——项目没有把自己绑死在某一个 AI 服务商,而是展示了"转发层做好了,上层随便换"的灵活性。

诚实的风险披露,是硬件改造类开源项目应有的态度。 项目反复强调"仅供学习参考"“不要在公网运行”“注意安全”,没有把这类有一定风险的操作包装成"开箱即用的产品"。这种克制对想要动手实践的人来说,比花哨的营销文案更有价值。

如果你手头正好有一台 LX06 或 OH2P 小爱音箱,想体验"自己完全掌控家里的智能音箱"是什么感觉,Open-XiaoAI 的代码和文档仍然是一份完整可读的参考,即便项目本身不再更新。


探索 PrimeSkills —— 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。

访问我的个人主页,获取更多见解和有趣的产品。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐