三步接入小爱音箱大模型:MiGPT 免费 AI 语音助手部署完整指南
2026/9/13 9:41:09 网站建设 项目流程

三步接入小爱音箱大模型: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 中按型号查好ttsCommandwakeUpCommandplayingCommand填进配置。如果你的音箱"收到了回复但没出声"或"话说一半就停",九成是这两个指令没配对,可以去 MIoT 开放平台的设备规格页查自己型号的指令:

二、Docker 三步启动 MiGPT

不想折腾 Node 环境的话,Docker 是官方推荐的方式。先确认这一步:你的机器上已经装好 Docker,并且准备好了两个配置文件(docs/settings.md 有完整参数说明)。

  1. 克隆项目代码到本地:
# 拿到源码,配置文件模板就在根目录里 git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt
  1. 准备两个配置文件:把.env.example改名为.env(填大模型接入信息),把.migpt.example.js改名为.migpt.js(填小米账号和设备信息):
// .migpt.js export default { speaker: { // 小米 ID:注意不是手机号或邮箱,在账号"个人信息"页查看 userId: "987654321", password: "你的小米账号密码", // 设备名必须和米家中完全一致(无多余空格、注意大小写),填不对会提示"找不到设备" did: "小爱音箱Pro", }, };
  1. 启动容器(官方镜像已支持 amd64 / arm64 / arm32 三种架构):
# 挂载 .env 和 .migpt.js 两个文件,容器内路径固定为 /app docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latest

Windows 终端(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""小爱同学,召唤傻妞"
能否连问不行,每句都要先喊"小爱同学"可以,进入后直接提问
对应配置callAIKeywordswakeUpKeywords+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: trueenableTrace: 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询