三步接入小爱音箱大模型:MiGPT 免费 AI 语音助手部署完整指南
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
MiGPT 是一个开源项目,能把小爱音箱接入 ChatGPT 等大模型,让它从"人工智障"变成会连续对话的 AI 语音助手。这篇指南带你先查设备兼容性,再用 Docker 三步完成 MiGPT 部署,最后讲模型配置、唤醒模式、70016 错误排查和提速技巧,每一步都可以直接照着做。
一、先确认型号:哪些小爱音箱能跑 MiGPT
为什么同样的 MiGPT,有的音箱体验流畅,有的却只能半残?差别在硬件对 MIoT 接口的支持程度。官方把已验证的机型分成三档:
| 档位 | 代表型号 | 连续对话(streamResponse) | 说明 |
|---|---|---|---|
| ✅ 完美运行 | 小爱音箱 Pro(LX06)、Xiaomi 智能音箱 Pro(OH2P)、小爱音箱 Play 2019 款(LX05) | 支持 | 官方推荐小爱音箱 Pro |
| ⚠️ 正常运行 | 小爱音箱(L06A)、小爱音箱 mini(LX01)、小爱音箱 Play(L05B)、小爱触屏音箱(LX04)等 | 不支持 | 能问答,但要关掉streamResponse,部分机型播放状态查询异常会导致句子戛然而止 |
| ❌ 不支持 | 小米小爱音箱 HD(SM4)、小米小爱蓝牙音箱随身版 | 不支持 | 完全无法运行 |
另外明确一下:小度音箱、天猫精灵、HomePod 均不支持,也没有适配计划。
每个型号的 TTS 指令、唤醒指令、播放状态查询指令都不同,需要在 docs/compatibility.md 中按型号查好ttsCommand、wakeUpCommand、playingCommand填进配置。如果你的音箱"收到了回复但没出声"或"话说一半就停",九成是这两个指令没配对,可以去 MIoT 开放平台的设备规格页查自己型号的指令:
二、Docker 三步启动 MiGPT
不想折腾 Node 环境的话,Docker 是官方推荐的方式。先确认这一步:你的机器上已经装好 Docker,并且准备好了两个配置文件(docs/settings.md 有完整参数说明)。
- 克隆项目代码到本地:
# 拿到源码,配置文件模板就在根目录里 git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt- 准备两个配置文件:把
.env.example改名为.env(填大模型接入信息),把.migpt.example.js改名为.migpt.js(填小米账号和设备信息):
// .migpt.js export default { speaker: { // 小米 ID:注意不是手机号或邮箱,在账号"个人信息"页查看 userId: "987654321", password: "你的小米账号密码", // 设备名必须和米家中完全一致(无多余空格、注意大小写),填不对会提示"找不到设备" did: "小爱音箱Pro", }, };- 启动容器(官方镜像已支持 amd64 / arm64 / arm32 三种架构):
# 挂载 .env 和 .migpt.js 两个文件,容器内路径固定为 /app docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latestWindows 终端(PowerShell、cmd)里$(pwd)取不到当前目录,必须把两个路径都写成绝对路径,例如D:/hello/mi-gpt/.env,否则启动后会报ERR_MODULE_NOT_FOUND。
如果你有改代码的需求,也可以自己构建镜像:docker build -t mi-gpt .,然后用docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js mi-gpt启动自建的镜像(细节见 docs/development.md)。
启动成功后,对音箱说"小爱同学,请问地球为什么是圆的",能听到 AI 回答就说明部署完成了。
三、大模型怎么选:云端、本地,还是混搭
MiGPT 走的是 OpenAI 兼容协议,理论上任何提供 OpenAI 格式 API 的模型都能接,改 src/services/openai.ts 对应的环境变量就行:
# .env:三个变量决定"请求发往哪里、用哪个模型、拿什么凭证" OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4o OPENAI_API_KEY=你的密钥 HTTP_PROXY=http://127.0.0.1:7890 # 国内直连 OpenAI 需要代理,用国内模型可留空想省 token 或保护隐私,可以在本地用 Ollama、LM Studio 起一个模型服务——它们自带 OpenAI 兼容接口,把OPENAI_BASE_URL指过去、OPENAI_MODEL换成你的本地模型名即可。想接通义千问、DeepSeek、Moonshot 这类国内云端模型,同样只改这三个变量。
这里要说明一个常见误解:MiGPT 本身没有内置"按问题复杂度自动路由到本地或云端"的开关。所谓"本地 + 云端混合",实际是靠换端点实现的——日常用本地端点,需要更强能力时把OPENAI_BASE_URL切回云端(或用 API 聚合网关统一收口)。网络出问题时,降级顺序是:先换代理节点(403 通常是代理 IP 被风控),再把HTTP_PROXY设成空字符串改走国内模型。
四、两种唤醒模式怎么选:每次唤醒还是连续对话
小爱音箱的"小爱同学"唤醒词写死在固件里,外部改不了;但唤醒之后哪句话触发 AI,是可以在.migpt.js里自定义的。两种模式差异如下:
| 普通唤醒 | 唤醒模式(连续对话) | |
|---|---|---|
| 怎么触发 | "小爱同学,请 xxx" | "小爱同学,召唤傻妞" |
| 能否连问 | 不行,每句都要先喊"小爱同学" | 可以,进入后直接提问 |
| 对应配置 | callAIKeywords | wakeUpKeywords+exitKeywords |
| 硬性前提 | 无 | 机型支持连续对话(streamResponse: true,mini、Play 等老款不行) |
// .migpt.js export default { speaker: { // 以这些词开头的消息会调用 AI 回复,按自家习惯改 callAIKeywords: ["请", "你", "傻妞"], // 以这些词开头进入连续对话模式,类似一个常驻技能 wakeUpKeywords: ["召唤傻妞", "打开傻妞"], // 说"退出傻妞"之类的话可以主动结束 exitKeywords: ["退出傻妞", "关闭傻妞"], // 连续对话中超过 30 秒没提问会自动退出,防误唤醒 exitKeepAliveAfter: 30, }, };使用上有两个容易踩的坑:一是等小爱说完"我说完了"之后再提问,它回答或没在听的时候说的话是收不到的;二是唤醒词如果恰好像歌名(比如"唤醒"),小爱可能会去播歌,换一个词就好。
五、70016 错误三步排查法
启动时提示"70016:登录验证失败",是新手遇到的头号问题。它只表示小米账号登录没通过,背后按出现概率排序有三类原因,建议按这个顺序查:
开始 → 打开 .migpt.js 检查 userId ├─ 不是纯数字小米 ID → 换成账号"个人信息"页的小米 ID(手机号/邮箱都不行),重启 └─ 是 → 检查密码是否正确 ├─ 错 → 更新密码,重启 └─ 对 → 是否触发了异地登录保护? ├─ 是 → 在与容器相同的网络环境下,用小米官网登录账号手动 │ 通过安全验证,等待约 1 小时再试(海外服务器还需先 │ 同意"个人数据跨境传输"协议) └─ 还不行 → 终极方案:先在本地网络跑一次 MiGPT 登录成功, 导出 .mi.json,挂载到容器里复用复用凭证的启动命令长这样:
# 多挂载一个 .mi.json,容器启动后直接跳过登录验证 docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ -v $(pwd)/.mi.json:/app/.mi.json \ idootop/mi-gpt:latest另外两种启动报错顺带提一下:提示"找不到设备:xxx",十有八九是did和米家中的设备名不一致("音响"vs"音箱"、多一个空格);实在对不上,可以开debug: true和enableTrace: true,从日志的MiNA 设备列表里找到miotDID直接填数字 ID。共享给别人的音箱用 MiNA 接口取不到,会启动失败。
六、💡 让回复更快的参数调优
默认配置偏保守。想让回答更快、停顿更少,优先动 docs/faq.md 里提到的这几个参数:
// .migpt.js export default { speaker: { // 空数组表示去掉"让我先想想""我说完了"等提示语,省下两句播报的时间 onAIAsking: [], onAIReplied: [], // 连续对话时检测播放状态的间隔:默认 1 秒,最低 500 毫秒。 // 调小能缩短两轮回答之间的停顿感,但对老旧机型太激进反而不稳 checkInterval: 500, // 下发 TTS 指令后等多久再查播放状态,默认 3 秒,不建议低于 1 秒 checkTTSStatusAfter: 3, }, };其他有效手段:换成响应快的模型(如gpt-3.5-turbo);确认流式响应开着——MiGPT 会把大模型回答按句切成小段依次播报(单句上限默认 100 字、首段聚合 200 毫秒,实现在 src/services/speaker/stream.ts),首句等待远小于整段播完。
也要有心理预期:从你开口到小爱"抢话"被静音,中间有 1-2 秒云端轮询延迟,这是接口方案的固有限制,无法彻底消除。嫌它话多,直接说"小爱同学,请你闭嘴"打断即可。
七、想更进一步:社区扩展与贡献路径
不想改代码但想玩出花样,社区已经有很多现成方向:图形化管理多账号的 MiGPT GUI、基于 Vue 的可视化配置中心、支持摄像头识别的分支(让小爱"看到"现实世界)。想接豆包同款音色(火山 TTS)可以看 docs/tts.md;想多账号多设备,直接多起几个不同配置的容器。
想改代码,按 docs/development.md 走本地开发流程即可:
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt pnpm install # 默认 Node 20,版本过低可能启动失败 pnpm build # 生成 Prisma client 并打包 pnpm dev # 配置好 .env 和 .migpt.js 后直接启动参与贡献的建议路径:先在 issue 列表搜一下有没有同类问题 → 本地跑通并复现 → 修改后用 VS Code 的 F5 调试确认 → 提交 issue 或 PR。遇到新坑记得带上错误日志反馈,这也是社区迭代的主要来源。
总结
回到起点回顾一下:先按 docs/compatibility.md 确认机型,再走"Docker 三步"把 MiGPT 跑起来,然后按需求在云端和本地模型间切换端点,选一种唤醒模式,卡住了就按 70016 三步排查法走一遍。整套流程走通大概不到半小时,你的小爱音箱就能接上大模型了。
现在动手试试吧——部署中遇到的任何报错,欢迎到项目仓库提交 issue 反馈,附上日志会大大加快定位速度。
- 项目仓库:mi-gpt(
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt) - 官方文档:docs/,涵盖参数设置、常见问题、工作原理与 TTS 接入
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考