2025-07-18 13:14:28 +08:00

459 lines
12 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: open-xiaoai
description: 让小爱音箱「听见你的声音」,解锁无限可能的开源项目
---
# open-xiaoai
<div class="project-header">
<div class="project-logo">
<img src="https://avatars.githubusercontent.com/u/35302658?s=48&v=4" alt="open-xiaoai Logo">
</div>
<div class="project-badges">
<span class="badge platform">跨平台</span>
<span class="badge language">Rust/Python/Node.js</span>
<span class="badge status">实验性</span>
</div>
</div>
<div class="project-banner">
<img src="./images/logo.png" alt="Open-XiaoAI 项目封面">
</div>
## 项目简介
Open-XiaoAI 是一个让小爱音箱"听见你的声音"的开源项目将小爱音箱与小智AI生态系统无缝集成。该项目直接接管小爱音箱的"耳朵"和"嘴巴"通过多模态大模型和AI Agent技术将小爱音箱的潜力完全释放解锁无限可能。
2017年当全球首款千万级销量的智能音箱诞生时我们以为触摸到了未来。但很快发现这些设备被困在「指令-响应」的牢笼里:
- 它听得见分贝,却听不懂情感
- 它能执行命令,却不会主动思考
- 它有千万用户,却只有一套思维
我们曾幻想中的"贾维斯"级人工智能,在现实场景中沦为"闹钟+音乐播放器"。
**真正的智能不应被预设的代码逻辑所束缚,而应像生命体般在交互中进化。**
在上一个 [MiGPT](https://github.com/idootop/mi-gpt) 项目的基础上Open-XiaoAI再次进化为小智生态系统提供了与小爱音箱交互的新方式。
## 核心功能
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">🎤</div>
<h3>语音输入接管</h3>
<p>直接捕获小爱音箱的麦克风输入,绕过原有语音识别限制</p>
</div>
<div class="feature-card">
<div class="feature-icon">🔊</div>
<h3>声音输出控制</h3>
<p>完全接管小爱音箱的扬声器可以播放自定义音频和TTS内容</p>
</div>
<div class="feature-card">
<div class="feature-icon">🧠</div>
<h3>AI模型整合</h3>
<p>支持接入小智AI、ChatGPT等多种大模型实现自然对话体验</p>
</div>
<div class="feature-card">
<div class="feature-icon">🌐</div>
<h3>跨平台支持</h3>
<p>Client端使用Rust开发Server端支持Python和Node.js实现</p>
</div>
<div class="feature-card">
<div class="feature-icon">🛠️</div>
<h3>可扩展架构</h3>
<p>模块化设计,方便开发者添加自定义功能和集成其他服务</p>
</div>
<div class="feature-card">
<div class="feature-icon">🎮</div>
<h3>开发者友好</h3>
<p>详细的文档和教程,帮助开发者快速上手并定制自己的功能</p>
</div>
</div>
## 演示视频
<div class="demo-videos">
<div class="video-item">
<a href="https://www.bilibili.com/video/BV1NBXWYSEvX" target="_blank" class="video-link">
<div class="video-thumbnail">
<img src="https://raw.githubusercontent.com/idootop/open-xiaoai/main/docs/images/xiaozhi.jpg" alt="小爱音箱接入小智AI">
</div>
<div class="video-title">
<span class="video-icon">▶️</span>
<span>小爱音箱接入小智AI演示</span>
</div>
</a>
</div>
<div class="video-item">
<a href="https://www.bilibili.com/video/BV1N1421y7qn" target="_blank" class="video-link">
<div class="video-thumbnail">
<img src="https://github.com/idootop/open-xiaoai/raw/main/docs/images/migpt.jpg" alt="小爱音箱接入MiGPT">
</div>
<div class="video-title">
<span class="video-icon">▶️</span>
<span>小爱音箱接入MiGPT演示</span>
</div>
</a>
</div>
</div>
## 快速开始
<div class="important-notice">
<div class="notice-icon">⚠️</div>
<div class="notice-content">
<strong>重要提示</strong>
<p>本教程仅适用于 <strong>小爱音箱 ProLX06</strong><strong>Xiaomi 智能音箱 ProOH2P</strong> 这两款机型,<strong>其他型号</strong>的小爱音箱请勿直接使用!</p>
</div>
</div>
Open-XiaoAI项目由Client端和Server端两部分组成您可以按照以下步骤快速开始
### 安装步骤
<div class="steps">
<div class="step">
<div class="step-number">1</div>
<div class="step-content">
<h4>小爱音箱固件更新</h4>
<p>刷机更新小爱音箱补丁固件开启并SSH连接到小爱音箱</p>
<a href="https://github.com/idootop/open-xiaoai/blob/main/docs/flash.md" target="_blank" class="step-link">查看详细教程</a>
</div>
</div>
<div class="step">
<div class="step-number">2</div>
<div class="step-content">
<h4>客户端部署</h4>
<p>在电脑上编译Client端补丁程序然后复制到小爱音箱上运行</p>
<a href="https://github.com/idootop/open-xiaoai/blob/main/packages/client-rust/README.md" target="_blank" class="step-link">查看详细教程</a>
</div>
</div>
<div class="step">
<div class="step-number">3</div>
<div class="step-content">
<h4>服务端部署</h4>
<p>在电脑上运行Server端演示程序体验小爱音箱的全新能力</p>
<ul class="step-options">
<li><a href="https://github.com/idootop/open-xiaoai/blob/main/packages/server-python/README.md" target="_blank">Python Server - 小爱音箱接入小智AI</a></li>
<li><a href="https://github.com/idootop/open-xiaoai/blob/main/packages/server-node/README.md" target="_blank">Node.js Server - 小爱音箱接入MiGPT-Next</a></li>
</ul>
</div>
</div>
</div>
## 工作原理
Open-XiaoAI通过以下方式工作
1. **固件补丁**: 修改小爱音箱的固件允许SSH访问和底层系统控制
2. **音频流劫持**: 客户端程序直接捕获麦克风输入和控制扬声器输出
3. **网络通信**: 客户端与服务端之间建立WebSocket连接进行实时通信
4. **AI处理**: 服务端接收语音输入交由AI模型处理后返回响应
5. **自定义功能**: 开发者可以在服务端实现各种自定义功能和集成
## 相关项目
如果您不想刷机或者不是小爱音箱Pro以下项目可能对您有用
- [MiGPT](https://github.com/idootop/mi-gpt) - 将ChatGPT接入小爱音箱的原始项目
- [MiGPT-Next](https://github.com/idootop/migpt-next) - MiGPT的下一代版本
- [XiaoGPT](https://github.com/yihong0618/xiaogpt) - 另一个小爱音箱ChatGPT接入方案
- [XiaoMusic](https://github.com/hanxi/xiaomusic) - 小爱音箱音乐播放增强
## 技术参考
如果您想了解更多技术细节,以下链接可能对您有帮助:
- [xiaoai-patch](https://github.com/duhow/xiaoai-patch) - 小爱音箱固件补丁
- [open-lx01](https://github.com/jialeicui/open-lx01) - 小爱音箱LX01开源项目
- [小爱FM研究](https://javabin.cn/2021/xiaoai_fm.html) - 小爱音箱FM功能研究
- [小米设备安全研究](https://github.com/yihong0618/gitblog/issues/258) - 小米IoT设备安全分析
- [小爱音箱探索](https://xuanxuanblingbling.github.io/iot/2022/09/16/mi/) - 小爱音箱技术探索
## 免责声明
<div class="disclaimer">
<h4>适用范围</h4>
<p>本项目为非盈利开源项目,仅限于技术原理研究、安全漏洞验证及非营利性个人使用。严禁用于商业服务、网络攻击、数据窃取、系统破坏等违反《网络安全法》及使用者所在地司法管辖区的法律规定的场景。</p>
<h4>非官方声明</h4>
<p>本项目由第三方开发者独立开发,与小米集团及其关联方(下称"权利方")无任何隶属/合作关系,未获其官方授权/认可或技术支持。项目中涉及的商标、固件、云服务的所有权利归属小米集团。若权利方主张权益,使用者应立即主动停止使用并删除本项目。</p>
<p>继续使用本项目,即表示您已完整阅读并同意<a href="https://github.com/idootop/open-xiaoai/blob/main/agreement.md" target="_blank">用户协议</a>,否则请立即终止使用并彻底删除本项目。</p>
</div>
## 许可证
本项目使用 [MIT](https://github.com/idootop/open-xiaoai/blob/main/LICENSE) 许可证 © 2024-PRESENT Del Wang
<style>
.project-header {
display: flex;
align-items: center;
margin-bottom: 2rem;
}
.project-logo {
width: 100px;
height: 100px;
margin-right: 1.5rem;
}
.project-logo img {
width: 100%;
height: 100%;
object-fit: contain;
}
.project-badges {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.badge {
display: inline-block;
padding: 0.25rem 0.75rem;
border-radius: 1rem;
font-size: 0.85rem;
font-weight: 500;
}
.badge.platform {
background-color: var(--vp-c-brand-soft);
color: var(--vp-c-brand-dark);
}
.badge.language {
background-color: rgba(59, 130, 246, 0.2);
color: rgb(59, 130, 246);
}
.badge.status {
background-color: rgba(139, 92, 246, 0.2);
color: rgb(139, 92, 246);
}
.project-banner {
width: 100%;
margin: 2rem 0;
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--vp-c-divider);
}
.project-banner img {
width: 100%;
height: auto;
display: block;
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1.5rem;
margin: 2rem 0;
}
.feature-card {
background-color: var(--vp-c-bg-soft);
border-radius: 8px;
padding: 1.5rem;
transition: transform 0.3s ease, box-shadow 0.3s ease;
border: 1px solid var(--vp-c-divider);
height: 100%;
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.feature-icon {
font-size: 2rem;
margin-bottom: 1rem;
}
.feature-card h3 {
color: var(--vp-c-brand);
margin-top: 0;
margin-bottom: 0.5rem;
}
.demo-videos {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 1.5rem;
margin: 2rem 0;
}
.video-item {
background-color: var(--vp-c-bg-soft);
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--vp-c-divider);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.video-item:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.video-link {
text-decoration: none;
color: inherit;
display: block;
}
.video-thumbnail {
width: 100%;
height: 180px;
overflow: hidden;
}
.video-thumbnail img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.3s ease;
}
.video-item:hover .video-thumbnail img {
transform: scale(1.05);
}
.video-title {
padding: 1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.video-icon {
color: var(--vp-c-brand);
}
.important-notice {
background-color: rgba(234, 179, 8, 0.1);
border-left: 4px solid rgba(234, 179, 8, 0.8);
border-radius: 0 8px 8px 0;
padding: 1rem 1.5rem;
margin: 2rem 0;
display: flex;
gap: 1rem;
}
.notice-icon {
font-size: 1.5rem;
}
.notice-content strong {
display: block;
margin-bottom: 0.5rem;
}
.steps {
margin: 2rem 0;
}
.step {
display: flex;
margin-bottom: 1.5rem;
gap: 1rem;
}
.step-number {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
background-color: var(--vp-c-brand);
color: white;
border-radius: 50%;
font-weight: bold;
flex-shrink: 0;
}
.step-content {
flex: 1;
}
.step-content h4 {
margin-top: 0;
margin-bottom: 0.5rem;
color: var(--vp-c-brand);
}
.step-link {
display: inline-block;
margin-top: 0.5rem;
color: var(--vp-c-brand);
text-decoration: none;
font-weight: 500;
}
.step-link:hover {
text-decoration: underline;
}
.step-options {
list-style-type: disc;
padding-left: 1.5rem;
margin-top: 0.5rem;
}
.architecture-diagram {
text-align: center;
margin: 2rem 0;
}
.architecture-diagram img {
max-width: 100%;
border-radius: 8px;
border: 1px solid var(--vp-c-divider);
}
.disclaimer {
background-color: rgba(239, 68, 68, 0.1);
border-left: 4px solid rgba(239, 68, 68, 0.8);
border-radius: 0 8px 8px 0;
padding: 1.5rem;
margin: 2rem 0;
}
.disclaimer h4 {
margin-top: 0;
color: rgba(239, 68, 68, 0.8);
margin-bottom: 0.5rem;
}
.disclaimer p {
margin: 0.5rem 0;
}
@media (max-width: 768px) {
.project-header {
flex-direction: column;
align-items: flex-start;
}
.project-logo {
margin-bottom: 1rem;
}
.demo-videos {
grid-template-columns: 1fr;
}
}
</style>