小爱音箱接入大模型完整教程:用 MiGPT 把它调教成专属语音助手
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
问小爱音箱"明天降温穿什么",它甩来三句天气预报,追问一句就忘了前文。开源项目 MiGPT 把小爱音箱直接接到 ChatGPT、豆包等大模型上,支持连续对话、自定义人设和第三方 TTS 音色。这篇只讲三件事:它的能力边界、部署方法、最常翻车的坑。
🧭 先看边界:哪些能做,哪些别指望
| 使用场景 | 接入前 | 接入 MiGPT 后 |
|---|---|---|
| 多轮追问 | 每句都要"小爱同学"开头 | 唤醒模式下连续提问,不用重复唤醒 |
| 人设 | 出厂固定 | 自己写 profile,还能口头临时改 |
| 音色 | 小米 TTS 机械音 | 可换火山引擎 21 款免费音色(豆包同款) |
| 记忆 | 单轮独立 | 短期 + 长期记忆 |
四条明确的"不能",先说好免得白折腾:
- 只认小爱音箱,小度、天猫精灵、HomePod 不支持,也没有适配计划
- "小爱同学"这个唤醒词是固件写死的,外部改不了
- 控制米家灯、插座这类设备联动还是 todo,没开始开发
- 项目已停止维护:功能冻结在当前版本,不再有更新
📋 装之前先对号入座:你的型号在不在名单里
docs/compatibility.md 把型号分成三档:
- 完美运行(支持连续对话):小爱音箱 Pro(LX06)、Xiaomi 智能音箱 Pro(OH2P)、小爱音箱万能遥控版等
- 正常运行(不支持连续对话):小爱音箱(L06A)、mini、Play、Art、触屏音箱等
- 完全不支持:小米小爱音箱 HD(SM4)等
档与档的差别集中在两条设备指令上,示例对比:
| 型号 | ttsCommand | wakeUpCommand | 连续对话 |
|---|---|---|---|
| 小爱音箱 Pro(LX06) | [5, 1] | [5, 3] | 支持 |
| Xiaomi 智能音箱 Pro(OH2P) | [7, 3] | [7, 1] | 支持 |
| 小爱音箱(L06A) | [5, 1] | [5, 2] | 不支持 |
型号不在表里也没关系:把配置里的debug和enableTrace打开重启,日志里能查到设备列表和指令参数,照抄进配置即可。
🚀 从 clone 到跑起来,一条命令的事
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt再把两份示例配置改个名,这才是容器真正挂载的文件(跳过这步容器会直接报找不到配置):
cp .migpt.example.js .migpt.js cp .env.example .envDocker 启动,推荐给不想折腾 Node 环境的人:
docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latestWindows 的 PowerShell/cmd 不认$(pwd),两处路径要手写成绝对路径。
启动成功后有三种用法,难度递增:
- 小爱同学,请 xxx:单次问答,比如"请问地球为什么是圆的"
- 小爱同学,你 xxx:带人设对话,比如"你喜欢我吗"
- 小爱同学,召唤傻妞:进入唤醒模式,之后连续提问不用每句带"小爱同学"
⚙️ 两个配置文件:哪一行最容易填错
.env管"接哪个大模型",.migpt.js管"音箱是谁、人设是什么"。
接 OpenAI 只需要两行:
OPENAI_MODEL=gpt-4o OPENAI_API_KEY=sk-xxxxxxxx想换国产模型(小爱音箱接入豆包、通义千问都是这个路子),变量名不动,只改接口地址:
OPENAI_MODEL=qwen-turbo OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1豆包这类不兼容 OpenAI API 的模型,用 One API 之类中转服务转成 OpenAI 格式,再填进同样的变量。
.migpt.js里最容易翻车的是这三行:
speaker: { userId: "987654321", // 纯数字小米 ID,登录小米官网个人信息页可查 did: "小爱音箱Pro", // 必须和米家 APP 里一字不差 ttsCommand: [5, 1], // 按型号查,别照抄别人的 }did的三大死因:多一个空格("小爱音箱 Pro")、大小写("小爱音箱pro")、错别字("小爱音响")。名称核对无误还报"找不到设备",就是 Mina 和 MIoT 两套名称不一致,此时把enableTrace: true打开,日志里的miotDID数字 ID 直接填进did最稳。
🎭 调教空间:人设、关键词和连续对话
默认 AI 叫"傻妞",人设写在.migpt.example.js的bot.profile(性格、爱好),你自己的设定在master.profile,整套对话规则模板是systemTemplate,可参考 docs/prompt.md 里的变量说明。改人设不用改文件重启——直接说"小爱同学,你是xxx,你xxx"就能口头覆盖。
三类关键词决定哪句话会触发大模型:
callAIKeywords: ["请", "你", "傻妞"], // 开头命中就交给 AI 回答 wakeUpKeywords: ["打开", "进入", "召唤"], // 命中进唤醒模式 exitKeywords: ["关闭", "退出", "再见"], // 命中退出唤醒模式连续对话有三个容易忽略的使用细节:
- 它说完结尾提示语(默认"我说完了,还有其他问题吗")之后你再开口,它回答中途说的话是听不见的
- 突然没反应多半是超过
exitKeepAliveAfter(默认 30 秒)自动退出了,重新"召唤傻妞"即可 - 回答太长想打断,说"小爱同学,请你闭嘴"
🔊 换声音:接入第三方 TTS 换豆包同款音色
默认走小米自带 TTS,声音偏机械。项目留了标准接口:填一个 TTS 服务地址,再把引擎切成custom:
TTS_BASE_URL=http://192.168.31.205:4321/xxxx/apispeaker: { tts: "custom" }官方配套的 MiGPT-TTS 服务接了火山引擎,实名认证后有 21 款免费音色,配好后说"小爱同学,把声音换成 xxx"就能语音切音色。TTS_BASE_URL不能写 localhost,要用音箱能访问到的局域网或公网地址。细节见 docs/tts.md。
🩹 翻车速查:现象、原因和解法
启动报"70016:登录验证失败"原因:账号密码不对,或把手机号当成了小米 ID。小米 ID 是纯数字,登录小米官网在个人信息页查看,填进userId。
提示触发异地登录保护原因:服务器 IP 和常用登录地不一致。解法:在跑 MiGPT 的同一网络下登录一次小米官网,手动通过安全验证,等约 1 小时再启动。还不行的终极方案:先在本地网络跑通,把生成的.mi.json拷到服务器,挂载到容器/app/.mi.json。
"找不到设备:xxx"初始化失败原因:did与米家名称对不上。先逐字核对名称;仍失败就用miotDID数字 ID。注意:共享到别人账号下的音箱,Mina 接口拿不到,必须挂在你自己账号下。
控制台有 AI 回复,音箱却不出声原因:ttsCommand填错。不同型号指令不同,按 docs/compatibility.md 里你型号的 AIID 配置。
回答说到一半戛然而止原因:设备查不到播放状态,MiGPT 误判为播完。先补上playingCommand(如[3, 1, 1]);配了仍不行说明该设备不支持开放接口查状态,只能关掉streamResponse,代价是连续对话失效。
喊了没反应,音箱"装死"原因:没先唤醒就说话。必须"小爱同学"开头进入听写状态,才接得住后面的"请 xxx"。
AI 回答前小爱先抢一句这条无解。原理是轮询云端对话列表发现小爱在回复、再播静音把它盖掉,1~2 秒延迟是物理限制,官方 FAQ 也写明只有刷机才能根治,属于已知缺陷。
✅ 下一步清单
- 打开 docs/compatibility.md,确认你的型号落在"完美运行"或"正常运行"档
- 复制两份示例配置,填好
userId(纯数字小米 ID)和did(与米家逐字一致) - Docker 一条命令启动;Windows 用户记得把
$(pwd)换成绝对路径 - 先用"小爱同学,请介绍下你自己"验证链路,通了再折腾唤醒模式和 TTS
- 出问题先翻 docs/faq.md,本文列的坑基本都有现成答案
卡在第 2 步别慌,"找不到设备"和"70016"占了启动失败的绝大多数——名字逐字对一遍、ID 换成纯数字,九成情况当场就通了。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考