MiGPT 部署教程:快速把小爱音箱接入大模型
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
对"小爱同学"喊完问题,音箱只会回答天气、时间这类固定内容,再问别的就露怯——这是传统智能音箱最常见的局限。MiGPT 就是用来解决这件事的:它把小爱音箱接入 ChatGPT、豆包这类大语言模型,部署完成后,你像平时一样对音箱说话,回答内容改由大模型生成。适合家里有闲置小爱音箱(推荐小爱音箱 Pro)、想把 AI 语音助手配置跑在自己设备上的用户,不需要刷机。先说明一个事实:项目 README 已标注停止维护,本文基于当前 v4.2.0 版本,核心功能完整可用,后续不会再有新功能。
接入前后的体验差别
差别集中在三处,都是可验证的行为变化:
- 回答范围:接入前只能应答预设类问题;接入后,开放式提问(知识、闲聊、写作)都会转给大模型作答,回答由模型现场生成。
- 身份与记忆:接入前它永远是统一的"小爱同学";接入后可以设定名字、性格、你的称呼,并通过短期记忆携带当前对话上下文、长期记忆沉淀偏好。
- 对话方式:除了"小爱同学,请 xxx"这种一问一答,还可以进入 AI 模式连续对话,不必每句话都喊唤醒词。
怎么把 MiGPT 跑起来
环境准备
- 一台能装 Node.js 16+ 或 Docker 的机器(树莓派、家用服务器、NAS 都可以,无需和音箱同局域网,底层走小米云端接口)
- 一个小爱音箱设备,型号支持情况见 兼容型号表
- 一个可用的大模型 API Key
拉取仓库并安装依赖
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt pnpm installpnpm install会自动执行 Prisma 迁移,初始化本地数据库文件。
两份核心配置文件
项目根目录有两个模板文件,复制后改名即可:
cp .migpt.example.js .migpt.js cp .env.example .env.migpt.js(音箱侧:账号、设备、人设),最小可用配置如下:
export default { bot: { name: "傻妞", profile: "性别女,性格乖巧可爱,喜欢搞怪。", }, master: { name: "陆小千", profile: "性别男,善良正直。", }, speaker: { userId: "987654321", // 小米 ID,不是手机号或邮箱 password: "123456", did: "小爱音箱Pro", // 与米家 App 中的设备名完全一致 ttsCommand: [5, 1], wakeUpCommand: [5, 3], }, };注意ttsCommand/wakeUpCommand因型号而异,上例是小爱音箱 Pro(LX06)的值,其他型号到 MIoT 规范网站按型号查对应的指令号。
.env(模型侧:API 接入):
OPENAI_MODEL=gpt-4o-mini OPENAI_API_KEY=sk-xxxx # 非 OpenAI 官方接口时打开,一般以 /v1 结尾 # OPENAI_BASE_URL=https://api.openai.com/v1启动与效果验证
Node.js 方式启动(dev脚本会加载.env):
pnpm run dev或者用 Docker 启动:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest验证方式:服务进程常驻且无报错输出后,对着音箱说"小爱同学,请告诉我地球为什么是圆的"。预期现象:音箱先念出提示语"让我先想想",随后朗读大模型的回答。再试"小爱同学,召唤傻妞",音箱会念欢迎语并进入 AI 模式,之后连续提问即可,说"退出傻妞"退出。
个性化:换模型、定人设、换音色
换模型
只改.env三个变量即可,MiGPT 走 OpenAI SDK,理论上兼容任何 OpenAI 格式的接口:
OPENAI_BASE_URL=你的服务商接口地址 OPENAI_MODEL=模型名,如 qwen-turbo / doubao / gpt-4o OPENAI_API_KEY=对应密钥不兼容 OpenAI 格式的模型(部分豆包、文心等)可先经过 API 聚合网关转成兼容格式再接入。
人设与唤醒词
在.migpt.js中调整:
bot.profile/master.profile:双方的性格、背景,决定回答风格systemTemplate:完整的系统提示词模板,可精细控制行为规则,写法见 Prompt 文档wakeUpKeywords/exitKeywords:进入、退出 AI 模式的关键词,如"召唤傻妞"、"退出傻妞"onEnterAI/onAIAsking/onAIReplied等提示语数组,设为[]可关闭对应提示音
需要说明:"小爱同学"这个唤醒词是音箱固件写死的,外部改不了;能自定义的只是 AI 模式的进出关键词。
记忆机制与第三方 TTS
- 记忆:短期记忆保存当前会话上下文,长期记忆沉淀你的偏好,注入逻辑在 src/services/bot/memory/,无需额外配置。
- TTS:默认用小米自带 TTS。想换音色(如豆包同款火山音色)需自建 TTS 服务,配置
TTS_BASE_URL(局域网 IP 或公网地址,不能用 localhost)并把speaker.tts改为"custom",配合switchSpeakerKeywords可用语音切换音色,完整步骤见 TTS 文档。
容易踩的坑:现象、排查与解决
- 报"70016:登录验证失败":
userId填成了手机号或邮箱。到小米账号「个人信息」里复制"小米 ID"替换。 - 提示触发异地登录保护:小米账号在陌生网络登录被风控。在与 MiGPT 相同网络下手动登录小米官网通过安全验证,约 1 小时后恢复;更稳妥的做法是在家网先登录成功,导出
.mi.json再挂载到容器/app/.mi.json。 - 报"找不到设备:xxx":
did与米家中的设备名不一致(多余空格、大小写、"音响"写成"音箱")。直接复制米家里的名称;若 Mina 与 MIoT 名称不一致,在.migpt.js打开debug: true和enableTrace: true,从日志"MiNA 设备列表"里取miotDID填入。共享设备不受支持。 - 控制台打印了回答,但音箱不出声:
ttsCommand与型号不匹配,到 MIoT 规范网站按型号查 TTS 指令号后替换。 - 回答说到一半被截断,或连续对话时总打断你:该型号无法正确查询播放状态。先按型号补上
playingCommand(如[3, 1, 1]);型号本身不支持的,换支持连续对话的型号(推荐小爱音箱 Pro),或把streamResponse设为false(连续对话功能随之关闭)。 - 连续对话时说它没反应:时机问题——它还在回答、或还没进入监听状态。Pro 款看顶部指示灯常亮时再说话;其他款等"我说完了"提示语播完过 1~2 秒再问。
下一步
找一台小爱音箱,按上面的顺序把两份配置改完,半小时就能听到第一句大模型的回答。遇到问题按 常见问题 对号入座,其他关键资源:
- 参数说明:docs/settings.md
- 音箱型号与指令参数表:docs/compatibility.md
- 第三方 TTS 接入:docs/tts.md
- 核心源码:src/services/
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考