MiGPT 快速上手指南:小爱音箱接入 ChatGPT 和豆包,完成音箱 AI 升级
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
MiGPT 是一个开源项目,把小米小爱音箱接入 ChatGPT、豆包等大语言模型,让原本只会固定话术的音箱完成 AI 升级。它本身是一个跑在你自己电脑或服务器上的 Node.js 服务,通过小米 IoT 云端接口轮询音箱的对话记录,检测到"提问类"消息后交给大模型处理,再把回答以 TTS 的形式放回音箱播出。下面按实际使用流程讲清楚:先确认设备能不能用,再部署,然后配置,最后聊聊它的边界。
开始前先看两件事
设备兼容性。MiGPT 支持大部分小爱音箱型号,其中小爱音箱 Pro(LX06)体验最完整,推荐优先使用。完整型号列表和每个型号对应的指令参数在 docs/compatibility.md,其中分三档:完美运行、正常运行(不支持连续对话)、不支持。注意它只适配小米系设备,小度、天猫精灵、HomePod 都不在范围内,也没有适配计划。
维护状态。项目已停止维护,不再有新功能和 bug 修复。不过现有代码和 Docker 镜像是完整的,存量功能可以正常使用,遇到新机型或新问题需要自行排查或在社区求助。如果刚入手且设备是小爱音箱 Pro,也可以关注作者的后续同类项目。
MiGPT 部署:Docker 一条命令,Node.js 留给开发者
部署前先克隆项目并准备配置文件(示例文件改名即可,字段说明见下一节):
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .migpt.example.js .migpt.js cp .env.example .envDocker 方式(推荐),填好两个配置文件后:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latestWindows 终端下$(pwd)不可用,改成配置文件的绝对路径即可。服务不要求和小爱音箱在同一局域网,走的是小米云端接口,放在家里的 NAS、树莓派或云上服务器都行。
Node.js 方式,适合想读代码或二次开发的开发者,npm install mi-gpt后调用MiGPT.create()初始化,注意此模式不自动读取.env和.migpt.js,参数要手动传入;本地调试开发流程参考 docs/development.md。
MiGPT 配置:.migpt.js 和 .env 两个文件
.env管模型,.migpt.js管音箱和角色。完整的字段说明在 docs/settings.md,这里只挑关键字段:
// .migpt.js 核心字段 export default { bot: { name: "傻妞", profile: "性格乖巧可爱,喜欢搞怪。" }, // AI 的人设 master: { name: "你的名字", profile: "你的简介" }, speaker: { userId: "987654321", // 小米 ID(在账号"个人信息"页查看,不是手机号/邮箱) password: "你的密码", did: "小爱音箱Pro", // 米家中的设备名称,需逐字一致 ttsCommand: [5, 1], // TTS 指令,因型号而异 wakeUpCommand: [5, 3], // 唤醒指令,因型号而异 callAIKeywords: ["请", "傻妞"], // 以这些词开头的消息交给 AI wakeUpKeywords: ["召唤傻妞"], // 进入连续对话模式的关键词 exitKeywords: ["退出傻妞"], }, };ttsCommand和wakeUpCommand是型号强相关的参数,不同型号数值不同。如果音箱收到消息但不发声,大概率是这里填错了,可到 MIoT 规格页面按型号查指令,docs/compatibility.md 里也整理了各型号的现成值:
接入非 OpenAI 的大模型:通义千问、DeepSeek、豆包
MiGPT 底层用的是 OpenAI SDK,所以任何提供 OpenAI 兼容接口的模型都能直接接。只需改.env,环境变量名不变:
OPENAI_API_KEY=你的密钥 OPENAI_MODEL=gpt-4o OPENAI_BASE_URL=https://api.openai.com/v1 # 换成对应服务的地址以通义千问为例,把OPENAI_BASE_URL指向阿里云的兼容模式地址、OPENAI_MODEL填qwen-turbo即可;DeepSeek、Moonshot(Kimi)等改法相同。不兼容 OpenAI 接口的模型(豆包、文心一言等)则需要先部署 OneAPI 之类的聚合服务做格式转换,再指向它的地址。本地部署的 Ollama、LM Studio 自带兼容接口,同样直接填地址就能用。更细的申请和配置步骤可查 docs/faq.md 里的模型小节。
交互方式:三种说话模式
服务跑起来后,音箱的交互分三层,行为不同:
| 你说的话 | 实际行为 |
|---|---|
| 小爱同学,请 xxx / 你 xxx | 仅这一条消息交给大模型回答,答完回到原状,适合单问单答 |
| 小爱同学,召唤傻妞(wakeUpKeywords) | 进入 AI 模式:之后连续提问都不用"小爱同学"开头,静默 30 秒后自动退出(exitKeepAliveAfter可调) |
| 小爱同学,退出傻妞(exitKeywords) | 主动退出 AI 模式 |
连续对话属于实验性功能,且依赖音箱能正确上报播放状态。部分型号(如 Play 增强版 L05C)查不到状态,需要把streamResponse设为false,此时 AI 模式不可用,只能单问单答。进入 AI 模式后注意等它说完"我说完了"再提问;如果误触发播放了音乐,先让它暂停再对话。更多交互细节见 docs/faq.md。
人设定制、长短期记忆与换声音
角色感主要来自三处配置。第一是systemTemplate,这是发给大模型的系统提示词,内置模板已经带上了聊天记录、短期记忆和长期记忆变量,想完全自定义行为规则可以改它,变量含义见 docs/prompt.md。第二是bot.profile和master.profile两个人设简介,AI 会据此调整语气和称呼应法;对话中也能临时改设定,直接说"小爱同学,你是 xxx"。第三是记忆机制,服务会自动从对话中提炼短期记忆、再沉淀为长期记忆(存在本地 SQLite 里),所以聊得越多它越了解你的偏好,代价是每次对话会多消耗一些 token,介意的话可以用精简版 Prompt 关掉记忆变量。
声音方面,默认走小米自带 TTS。想换成豆包同款音色,需要自己搭一个 TTS 服务(官方配套项目接入了火山引擎,实名后有免费音色额度),在.env里填TTS_BASE_URL、把speaker.tts改成custom即可,之后语音说"把声音换成 xxx"就能切换音色,完整步骤在 docs/tts.md。
限制与避坑:已知问题清单
这几个是实际使用中最容易踩的点,先了解可以省不少排查时间:
- 原小爱会"抢话"。AI 回复前,原版小爱可能先开口,项目通过播静音音频来打断它,但云端轮询有 1~2 秒延迟,做不到完全静默。原理和原因见 docs/how-it-works.md。
- 小米账号异地登录保护。在非日常网络环境(尤其海外服务器)启动时可能触发安全验证,需要在相同网络下先登录小米官网手动通过验证;海外节点还需同意个人数据跨境传输协议。
- 共享设备不支持。音箱如果是账号共享设备,MiNA 接口取不到它,服务无法启动。
- did 要逐字匹配。米家中设备名称的空格、大小写、别字都会导致"找不到设备",建议直接从米家 App 复制;实在对不上就开
debug+enableTrace从日志里取miotDID填进去。 - OpenAI 访问问题。国内网络直连 OpenAI 会报 Connection error,要么配代理(
HTTP_PROXY),要么改用国内模型或第三方反向代理服务。
更多帮助在哪找
遇到问题先查 docs/faq.md,覆盖启动失败、播放异常、网络异常三大类;参数含义看 docs/settings.md;设备型号和指令看 docs/compatibility.md;Prompt 变量和现成模板看 docs/prompt.md。仓库里的 assets/pdf 目录还有官方教程和 Unraid 部署的 PDF,适合跟着一步步操作。项目已停止维护,建议配置好自己的参数并留一份.migpt.js、.env和数据库文件的备份,方便日后迁移环境时直接用。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考