引言
"让小爱音箱「听见你的声音」,解锁无限可能。"
这是「每日一个开源项目」系列的第 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 端的通信协议自己实现。
arduino
小爱音箱(刷机后) 你的电脑/服务器
┌─────────────────────┐ ┌──────────────────────┐
│ Rust Client(转发器) │ WebSocket │ Server(任意语言) │
│ - 麦克风音频流 │ ◄──────► │ - 语音识别/VAD/唤醒词 │
│ - 扬声器播放 │ │ - 大模型/Agent 对话逻辑 │
│ - 系统事件 │ │ - 自定义业务逻辑 │
└─────────────────────┘ └──────────────────────┘
四个官方演示
项目在 examples/ 目录提供了四个可以直接跑起来的演示,各自对应一种接入方式:
1. 接入小智 AI(Python,examples/xiaozhi)
把音箱接入 小智 AI,支持连续对话、中途打断、中英文自定义唤醒词。底层用的是 py-xiaozhi 项目的语音处理能力,配合 VAD(语音活动检测)和 KWS(关键词唤醒)模型。
bash
docker run -it --rm -p 4399:4399 \
-v $(pwd)/config.py:/app/config.py \
idootop/open-xiaoai-xiaozhi:latest
配置文件里可以自定义唤醒词:
python
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:
typescript
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 端
shell
# 在音箱上创建工作目录
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
如果想要开机自启:
shell
curl -L -o /data/init.sh https://gitee.com/idootop/artifacts/releases/download/open-xiaoai-client/boot.sh
reboot
Step 3:在电脑上运行 Server 端演示
选择上面四个演示中的任意一个,按各自的 README 配置运行即可。
想自己编译 Client 端?
shell
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 直接写入音箱:
shell
dd if=target/armv7-unknown-linux-gnueabihf/release/client \
| ssh -o HostKeyAlgorithms=+ssh-rsa root@你的小爱音箱IP地址 \
"dd of=/data/open-xiaoai/client"
安全边界:这是一个"抛砖引玉"的演示
项目文档里有一段非常坦诚的风险说明,值得完整引用其精神:这只是一个基础演示程序,没有做多设备连接管理、身份认证、通信数据加密、音频压缩传输。默认提供的"执行任意脚本"能力演示虽然要求你本人指定可信的 Server 地址,但如果在公网上运行,必须格外谨慎------音箱会把麦克风采集到的音频流原始转发出去,一旦 Server 端地址被恶意篡改,等同于把家庭环境的声音开放给了未知第三方。
项目的免责声明也明确了边界:仅供学术研究或个人测试,不得用于商业服务;项目与小米集团无任何隶属或合作关系,未获官方授权,所有商标、固件、云服务的权利归小米集团所有。
项目地址与资源
- 🌟 GitHub : idootop/open-xiaoai(已归档)
- 📺 演示视频 : 小爱音箱接入小智 AI · 自定义唤醒词 · 接入 MiGPT
- 🔗 前作项目 : mi-gpt、migpt-next
- 🔗 相关生态 : xiaogpt、xiaomusic
- 📖 刷机技术参考 : open-lx01、xiaoai-patch
总结
Open-XiaoAI 虽然已经停止维护,但它留下的工程思路仍然值得学习:当硬件厂商把设备的能力锁死在固定逻辑里时,"刷机接管底层硬件接口 + 把所有智能决策转移到自己可控的服务器"是一条可行且相对克制的改造路径。
三点值得注意:
Client 端"只转发不决策"的职责划分很克制。 很多硬件改造项目会试图把所有逻辑都塞进设备本身,结果受限于算力和开发效率举步维艰。Open-XiaoAI 把 Client 端做得尽可能薄------只负责音频转发和指令响应,所有 AI 能力都放在算力和生态都更强的 Server 端,这是嵌入式改造里一个值得复用的架构模式。
四个演示代表四种接入哲学,而不是在卖同一个方案。 小智 AI 走的是开源语音助手生态,MiGPT 直接接 OpenAI 兼容接口,Gemini Live 用谷歌的实时多模态 API------项目没有把自己绑死在某一个 AI 服务商,而是展示了"转发层做好了,上层随便换"的灵活性。
诚实的风险披露,是硬件改造类开源项目应有的态度。 项目反复强调"仅供学习参考""不要在公网运行""注意安全",没有把这类有一定风险的操作包装成"开箱即用的产品"。这种克制对想要动手实践的人来说,比花哨的营销文案更有价值。
如果你手头正好有一台 LX06 或 OH2P 小爱音箱,想体验"自己完全掌控家里的智能音箱"是什么感觉,Open-XiaoAI 的代码和文档仍然是一份完整可读的参考,即便项目本身不再更新。
探索 PrimeSkills ------ 精选 AI agent 和技能工具,每一个都经过真实工作流验证。没有炒作,只有真正好用的工具。
访问我的个人主页,获取更多见解和有趣的产品。