MiGPT部署指南:2个配置文件让小爱音箱变成懂你的语音助手
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
对小爱说"小爱同学,让 ChatGPT 讲讲天空为什么是蓝的",音箱真的会开始给你讲物理课——这就是 MiGPT 把小爱音箱接入大模型后的效果。本文带你用 Docker 和两个配置文件把它跑起来,再把音箱调教成能连续对话、有自己人设和声音的助手。
接入大模型后,你的小爱音箱能做什么
先看改造前后的差别,心里有个底:
| 场景 | 原生小爱 | 接入 MiGPT 后 |
|---|---|---|
| 知识问答 | 只能回答内置知识库里有的 | 开放式问题也能聊,从菜谱到编程 |
| 多轮交流 | 每句话都是独立指令 | 记得上下文,可以来回追问 |
| 说话方式 | 固定音色、固定腔调 | 可自定义人设、换第三方音色 |
| 回答风格 | 同一问题永远一个答案 | 语义理解,每次回答都不同 |
MiGPT 的工作原理可以一句话概括:它通过小米 IoT 开放接口轮询小爱的对话记录,把带关键词的消息转给大模型,再把回答合成为语音让小爱念出来。你不需要刷任何东西,音箱本身保持原样。
5 分钟跑通首启:准备 MiGPT 的两个配置文件
准备工作只有一台常开的电脑或 NAS(装好 Docker 即可)+ 一台米家在线的小爱音箱。型号支持范围可以先对照兼容列表,小爱音箱 Pro 体验最完整;小度、天猫精灵等其他品牌不在支持范围内。
新建 .migpt.js 和 .env 两个文件
在电脑任意目录新建两个文件,内容照抄下面两段、替换成你自己的值即可。这是整个部署里唯一需要认真填的地方:
// .migpt.js —— 音箱连接信息 export default { speaker: { userId: "987654321", // 小米ID(个人信息-小米ID里查,不是手机号) password: "123456", // 小米账号密码 did: "小爱音箱Pro", // 米家里设置的设备名,空格和大小写都要一致 }, };# .env —— 大模型接入信息 OPENAI_API_KEY=你的API密钥 OPENAI_MODEL=gpt-4o OPENAI_BASE_URL=https://api.openai.com/v1 # 接国产模型就换成对应的兼容地址.env里三个变量名不用改,接通义千问、DeepSeek 这类兼容 OpenAI 格式的模型时,只需替换地址、模型名和密钥的值。全部参数的含义都在配置文档里有表可查。
一条 Docker 命令启动
docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latestWindows 终端下把$(pwd)换成两个配置文件的绝对路径。执行docker logs -f <容器名>跟踪日志,看到"服务已启动"后对着音箱说一句"小爱同学,请介绍一下自己",音箱开口回答就成功了 ✅
三种召唤方式:从单句问答到连续对话模式
跑通之后,有三种方式让音箱调用大模型:
- 直接提问:"小爱同学,请解释一下量子纠缠"。消息以
callAIKeywords(默认"请"、"你")开头就会走 AI,问完即回,不用唤醒。 - 进入 AI 模式:"小爱同学,召唤傻妞"(关键词在
wakeUpKeywords里自定义)。进入后说欢迎语onEnterAI,之后每句话都直接说、不用再加"小爱同学"前缀,这就是连续对话模式。 - 退出:"小爱同学,退出傻妞"(
exitKeywords),或者静默超过exitKeepAliveAfter秒自动退出。
连续对话模式有个使用要点:要等小爱念完结束语(默认"我说完了")再开口,它没在听的时候说的话收不到。
驯服连续对话:查型号指令参数与流式回复设置
你的音箱型号不同,指令参数也不同,这一步决定了 AI 模式能不能稳定工作。
查你型号对应的两条指令编号
到 MIoT 规格库(home.miot-spec.com)搜你的型号,例如小爱音箱 Pro 是 LX06:
在规格页的"方法 Actions"里找两个编号:play-text的 AIID 拼上 SIID 就是ttsCommand(用来让小爱念 AI 的回答),wake-up的 AIID 拼上 SIID 就是wakeUpCommand(用来把小爱拉回倾听状态)。以 LX06 为例:
把这两组数字填进.migpt.js的speaker里。上表是默认值,其他型号务必按自己查到的填。
开启 streamResponse 与 playingCommand 连续对话
想启用连续对话,音箱得能被查询"是否在播放中":
- 能查到播放状态的型号:填上
playingCommand(如 LX06 不需要,部分型号填[3, 1, 1]),保持streamResponse: true(默认)。 - 查不到或状态异常的型号:把
streamResponse设为false,只用第一种"直接提问"方式。具体哪些型号属于哪类,兼容列表里按反馈整理好了。
调教专属人设:改 bot 档案与换音色
默认的小爱听起来还是"客服腔",这一步给它换个灵魂。
用 bot.profile 和 systemTemplate 重写人设
// .migpt.js 追加 export default { bot: { name: "傻妞", profile: "性别女,性格活泼爱开玩笑,称呼我为'主人'", }, speaker: { onEnterAI: ["我在这儿,说吧!"] }, };profile一句话就能定性格;想更精细地控制回答规则(比如何时引用记忆、要不要带上下文),改systemTemplate,模板变量和写法见配置文档的 systemTemplate 一节。改完重启容器生效。
换掉默认声音:接入第三方 TTS
小爱自带的 TTS 音色固定,还偶尔提示文字含敏感信息。把speaker.tts设为"custom"并填好TTS_BASE_URL指向自建的 TTS 服务后,说一句"小爱同学,把声音换成 xxx"就能随时切换音色。完整搭建步骤在第三方 TTS 教程里。
踩坑速查:启动失败或不回话的高频问题
⚠️ 以下按出现频率排序,多数情况的常见问题文档里也有对应解答:
Q:启动报"70016:登录验证失败"?A:userId填错。它要的是"个人信息-小米ID"页里那串数字,不是手机号也不是邮箱。
Q:提示"找不到设备"?A:did必须和米家设备名逐字一致,常见翻车:多了一个空格、"Pro"写成"pro"、把"音箱"打成"音响"。米家里复制一下最稳妥;对不上时可以填设备 did 代替名称。
Q:连续对话模式下说话没反应?A:等提示语念完、音箱真的在听的时候再开口(Pro 型号看顶部指示灯常亮即在听)。没反应就用"小爱同学,xxx"重新唤醒;正在放音乐时也要先暂停。
Q:触发小米异地登录保护?A:在运行 MiGPT 的同一网络下用浏览器登录一次小米账号、手动通过安全验证,约 1 小时后再启动即可。
Q:回答太慢?A:把onAIAsking/onAIReplied提示语清空、checkInterval调小到 500,再考虑换响应更快的模型。
跑通之后,还可以接着做这几件事:
- 对照兼容列表确认自己型号的
playingCommand,把连续对话开到最稳 - 换一组国产模型的 API,对比同一问题的回答速度和风格
- 按 TTS 教程自建音色服务,用语音指令随时换声音
- 精读
systemTemplate,给 AI 定下"只说人话、不编造"的回答规则
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考