4步把小爱音箱接入大模型:MiGPT 部署与配置教程
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
晚上回家,你随口问小爱同学"今晚适合跑步吗",它不再念出一段干巴巴的百科答案,而是结合你的上下文,用自然口语回你一句"看你状态,跑个半小时刚好,记得补水"。这就是 MiGPT 做的事情:把小爱音箱接入 ChatGPT、豆包等大模型,让音箱的语音回复背后换成真正的大模型推理。整个过程不需要刷机,一条 Docker 命令就能跑起来。
它是什么:小爱音箱和大模型之间的语音桥
MiGPT 是一个开源项目,定位很单纯:充当小爱音箱和大语言模型之间的中间层。它轮询小米开放接口拿到你对小爱说的内容,把文本交给配置好的大模型,再将回答通过音箱的 TTS 指令播出来。
一句话概括原理:把音箱的语音请求转发给大模型,再把回答播回来。你不需要改动音箱固件,也不要把 MiGPT 和小爱音箱放在同一局域网——它走的是云端接口,部署在任何一台能联网的机器上都可以。
动手前:确认型号兼容与运行环境
MiGPT 只支持小米系的小爱音箱,小度、天猫精灵、HomePod 等其他品牌设备没有适配计划。先确认你的设备是否在兼容清单里:
- 运行体验较好(支持连续对话):小爱音箱 Pro(LX06)、小米 AI 音箱第二代(L15A)、小爱智能家庭屏 10(X10A)、Xiaomi Sound Pro(L17A)等
- 可正常运行(关闭连续对话):小爱音箱 Play 增强版(L05C)、小爱触屏音箱(LX04)、小爱音箱 mini(LX01)等
- 完全不支持:小米小爱音箱 HD(SM4)、小米小爱蓝牙音箱随身版
具体型号对应的 TTS 指令、唤醒指令参数,可以查仓库内的 docs/compatibility.md。
环境方面只需要两样:
- 一台能跑 Docker 的机器(树莓派、NAS、云服务器均可),或者 Node 16+ 环境
- 一个可用的大模型 API Key(OpenAI、通义千问、DeepSeek 等兼容 OpenAI SDK 的服务)
另外提醒一点:音箱不能是共享设备,小米账号也不能处于异地登录风控状态,否则启动会失败。
部署:Docker 单命令启动与源码备选
先克隆项目,并把两个模板文件复制为实际使用的配置文件:
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .migpt.example.js .migpt.js cp .env.example .env配置好这两个文件后(下一节讲细节),Docker 方式只需一条命令:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latestWindows 终端下$(pwd)不生效,把两处路径换成D:/xxx/mi-gpt/.env这样的绝对路径即可。
备选方案是源码运行,适合想改代码的开发者:
pnpm install # 安装依赖并初始化数据库 pnpm dev # 开发模式启动关键配置:.migpt.js 与 .env 逐字段讲解
.migpt.js管的是"音箱这一端",.env管的是"大模型那一端"。最关键的字段如下。
设备与账号(.migpt.js):
export default { speaker: { // 小米 ID,注意不是手机号或邮箱,在账号「个人信息」-「小米 ID」处查看 userId: "你的小米ID", // 小米账号密码 password: "你的密码", // 设备名称或 did,必须与米家 APP 中完全一致(含空格、大小写) did: "小爱音箱Pro", // TTS 指令,按你的型号在 miot-spec 查对应值,LX06 为 [5, 1] ttsCommand: [5, 1], // 设备唤醒指令,LX06 为 [5, 3] wakeUpCommand: [5, 3], }, };大模型接入(.env):
# 模型名称,按你的服务商填写,如 gpt-4o-mini、qwen-turbo OPENAI_MODEL=gpt-4o-mini # API 密钥,占位符,替换成你的真实密钥 OPENAI_API_KEY=sk-your-api-key-here # 服务商接口地址,OpenAI 官方或各厂商 compatible 地址均可,一般以 /v1 结尾 # OPENAI_BASE_URL=https://api.openai.com/v1两个容易踩的坑:did写错一个字就会提示"找不到设备";OPENAI_BASE_URL填错或不配会导致请求 404。不同模型的接法差异在 docs/faq.md 里有说明。
进阶玩法:记忆、唤醒模式与自定义音色
基础功能跑通后,这几项配置能让体验明显不同。
长短期记忆:MiGPT 自带基于本地数据库的记忆系统,对话中它会把短期细节和长期偏好写入 src/services/bot/memory/ 对应的存储,后续对话时拼进提示词。默认开启,无需额外配置,想要控制容量可在systemTemplate中调整携带的记忆范围。
唤醒模式(连续对话):不用每句话都喊"小爱同学"。在speaker下配置三组关键词:
speaker: { // 消息以这些词开头时,调用 AI 回复 callAIKeywords: ["请", "你", "傻妞"], // 以这些词开头时,进入唤醒状态,之后可直接提问 wakeUpKeywords: ["召唤", "打开"], // 以这些词开头时,退出唤醒状态 exitKeywords: ["退出", "关闭"], }说"小爱同学,召唤傻妞"进入状态,之后直接提问即可,说"退出傻妞"离开。注意:并非所有型号都支持连续对话,不稳定的机型把streamResponse设为false更稳妥。
自定义角色:bot.profile和master.profile两个人设字段决定了它怎么跟你说话。写"毒舌但靠谱的技术顾问"和写"乖巧可爱的陪伴角色",同一个模型会给出完全不同的语气。
第三方 TTS 音色:嫌小爱默认声音机械,可以接火山引擎、ChatTTS 等第三方服务,改.env里的TTS_BASE_URL和speaker.tts即可,完整教程见 docs/tts.md。
真实对话示例
配置完成后,实际用起来大致是这样的节奏:
你:小爱同学,请介绍一下量子计算机和普通计算机的区别 小爱:简单说,普通计算机按 0 和 1 一位一位算,量子计算机用量子比特, 可以同时处于多种状态……一句话总结:它擅长的是"试所有可能"的问题。 你:那它现在实用吗? 小爱:说实话,大部分场景还不如你的笔记本。它真正有优势的是 材料模拟和密码学那几类问题,离日常应用还有距离。 你:小爱同学,召唤傻妞 小爱:(进入唤醒状态)你好,我是傻妞,很高兴认识你 你:讲个程序员的笑话 小爱:为什么程序员总分不清万圣节和圣诞节?因为 Oct 31 等于 Dec 25。 小爱:我说完了,还有其他问题吗 你:小爱同学,退出傻妞连续对话模式下,第二问"那它现在实用吗"不需要重复唤醒词,上下文会被带进大模型。
遇到问题怎么办:按现象排查
启动失败类:
- 现象:提示"70016:登录验证失败" →处理:小米 ID 填成了手机号或邮箱,去账号个人信息页查真实的小米 ID
- 现象:提示触发异地登录保护 →处理:在运行 MiGPT 的同一网络下登录小米官网手动通过安全验证,等待约 1 小时;海外服务器需先同意个人数据跨境传输协议
- 现象:提示"找不到设备" →处理:核对
did与米家 APP 中的设备名逐字一致,注意"音响/音箱"错别字和多余空格;名称对不上时打开debug: true和enableTrace: true重启,从日志的MiNA 设备列表里抄miotDID填进去
AI 响应类:
- 现象:控制台有回复但音箱不发声 →处理:
ttsCommand与你的型号不匹配,按 docs/faq.md 中的截图教程去 miot-spec 查你型号的指令 - 现象:LLM 报 401 Invalid Authentication →处理:检查
OPENAI_API_KEY是否有效、环境变量是否真的加载进容器 - 现象:LLM 报 Connection error →处理:国内网络直连 OpenAI 不通,在
.env里加HTTP_PROXY=http://127.0.0.1:7890,或改用国内大模型服务 - 现象:回答总是说到一半断掉 →处理:配置该型号的
playingCommand;若该机型无法查询播放状态,则把streamResponse设为false
另外两点提醒:配置文件里包含账号密码,不要提交到任何公开仓库;如果小爱正在放音乐,先让它暂停再提问,否则会收到不可预期的结果。
更多参数的含义(提示语、连续对话检测间隔、超时等)见 docs/settings.md,整体运行流程可以看 docs/how-it-works.md。
MiGPT 的价值不在于多复杂,而在于它把"音箱→云端接口→大模型→语音播放"这条链路封装成了一次配置。花二十分钟把.migpt.js和.env填对,家里的音箱就从指令执行器变成了能接话的对话对象。后续如果音箱换型号或想换模型,改的也只是这几个字段。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考