小爱音箱接入ChatGPT:3阶段跑通最小可用配置的实战
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
昨晚十一点,我问客厅里的小爱音箱"帮我写一首关于月亮的诗"。几秒后它用毫无波澜的语气回了句:"抱歉,我还不会这个。"这句话让我下决心把这台设备从出厂状态里拽出来——开源项目MiGPT能把小爱音箱接上 ChatGPT、豆包等大模型,让它变成一个会写诗、会角色扮演、还带记忆的语音助手。这篇文章带你走完全程:两个配置文件加一个 Docker 容器,音箱就能直接开口,不用会编程。
👀 先睹为快:音箱接上大模型后变成什么样
先亮效果,你再判断值不值得动手:
| 出厂状态 | 接入 MiGPT 后 | |
|---|---|---|
| 问答范围 | 只答百科和天气 | 开放式提问、写作、翻译都能接 |
| 响应节奏 | 一问一答,干等 3~5 秒 | 流式应答,唤醒模式下可连续追问 |
| 记忆 | 每次对话从零开始 | 短期+长期记忆,话题能接得上 |
| 声音 | 只有内置小爱音 | 可接第三方 TTS,21 款音色任选 |
我第一轮先让它现场写段短文读给我听,又试了"召唤"模式连聊了几轮。整体感受接近真人接话,唯一露馅的是声音略显机械——而声音这一项后面还能单独换。
📋 动手前备齐这 4 样东西
- 一台小爱音箱:Pro 款适配最好,其余型号先查 docs/compatibility.md 里的参数表,确认支持再动手。
- 一台能 7×24 开机的设备:闲置电脑、旧笔记本、NAS 都行,装好 Docker(或 Node 20+),MiGPT 就住在它上面。
- 两个账号:一个小米账号(要"小米 ID+密码",注意不是手机号),一个大模型 API 密钥(OpenAI,或千问、DeepSeek 等国内模型)。
- 能出外网的网络:机器访问不了 OpenAI 的话要配代理;音箱和机器不需要同一局域网,MiGPT 走的是小米云端接口。
🔧 跟着做:3 个阶段跑通最小可用版
阶段一 | 拉取项目并装好环境
做什么:克隆仓库,把两个示例配置复制成正式文件,仅此而已。
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .env.example .env cp .migpt.example.js .migpt.js做对了长什么样:目录里多出.env和.migpt.js两个文件。到这里,你已经把"舞台"搭好了,接下来往里填自己的信息。
阶段二 | 改关键配置:账号、密钥
做什么:.migpt.js填小米凭据和音箱信息,.env填模型密钥,其余保持默认。
// .migpt.js export default { bot: { name: "傻妞", profile: "性别女,性格乖巧可爱,喜欢搞怪。" }, speaker: { userId: "你的小米ID", // 数字ID,不是手机号或邮箱 password: "你的密码", did: "小爱音箱Pro", // 必须和米家APP里的设备名一字不差 ttsCommand: [5, 1], // 指令随型号变化,见下方说明 wakeUpCommand: [5, 3], }, };# .env OPENAI_MODEL=gpt-4o-mini OPENAI_API_KEY=sk-你的密钥ttsCommand和wakeUpCommand是每个型号对应的"动作按钮编号",数值随机型不同,直接对照 docs/compatibility.md 的表格抄你那一行。
做对了长什么样:两个文件里的数字、引号都对得上,没有手滑打错。到这里,MiGPT 登录开工所需的信息就齐了。
顺带说清它怎么运转:MiGPT 像个每隔几秒瞄一眼订单页的骑手——通过小米云端接口轮询到你在小爱那说的新问题,转交大模型处理,再把答复合成一段 mp3 让音箱播出来。细节看 docs/how-it-works.md。
阶段三 | 启动服务并验证成功
做什么:一条 docker 命令起容器,然后对音箱说一句话验收。
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest做对了长什么样:docker ps里出现运行中的容器;对它说"小爱同学,请问法国的首都是哪里",音箱用傻妞的口吻答出答案。如果它还是回"我还不会",用docker logs看错误。Windows 下要把$(pwd)换成绝对路径;想走源码部署,pnpm install后pnpm dev,参考 docs/development.md。
到这里,最小可用版已经跑通——这台音箱,正式归你调教了。
🎨 调成你的样子:3 个体感最强的设置
换人格:bot.profile决定它"是谁",systemTemplate决定它"怎么说话"。改两行,"傻妞"就能变"李老师":
// .migpt.js bot: { name: "李老师", profile: "耐心的家庭教师,用孩子听得懂的话解释。" }, speaker: { callAIKeywords: ["请", "老师"], wakeUpKeywords: ["召唤老师"] },效果立竿见影:同样是问"什么是光合作用",回答立刻从俏皮腔变成讲解腔。变量写法({{botName}}、{{messages}}等)见 docs/prompt.md。
换触发词:默认只有以"请""你"开头的指令才会调 AI;改完callAIKeywords后,喊"召唤老师"就进入连续对话,之后 30 秒内直接提问即可,不用每句都喊"小爱同学"。
换声音:嫌出厂音色平,就搭一个第三方 TTS 服务(火山 TTS 可白嫖 21 款音色),.env填上TTS_BASE_URL、把tts改成custom,之后说一句"小爱同学,把声音换成甜美女声"就能实时切换。教程见 docs/tts.md。
🧪 跑通之后,还可以试这 3 个玩法
- 连续对话:说一次"召唤",30 秒内连续提问不用反复唤醒,安静超时自动退出,省电不误触。
- 学习搭子:profile 设成"小学老师",睡前让音箱用大白话给孩子讲数学题。
- 现场换人设:直接说"小爱同学,你是一名歌手",角色即时更新,拿来逗朋友很合适。
⚠️ 避坑实录:4 个高频问题的一招解法
| 发现现象 | 多半原因 | 一招解决 |
|---|---|---|
控制台报70016 登录验证失败 | 把手机号/邮箱当成了小米 ID | userId改成"个人信息"页那串数字 ID |
提示找不到设备:xxx | did和米家不一致(错字、多余空格、大小写) | 从米家原样复制设备名;或开debug查miotDID填入 |
| 控制台有 AI 回答,音箱不出声 | 该型号的 TTS 指令和ttsCommand对不上 | 按 docs/compatibility.md 的参数表改指令值 |
| 回答读到一半戛然而止 | 该型号查不到播放状态 | 补配playingCommand;不行就关掉streamResponse |
更多现象级的排查思路,docs/faq.md 基本都有现成答案。
写在最后
MiGPT 虽然已停止维护,但"轮询对话+大模型+TTS 播放"这条主链路依然稳,两个配置文件加一个容器的玩法没有被任何东西替代。一次搭好,音箱就永久告别"我还不会",人格、记忆、音色这些都能慢慢往深里调。
想再往下挖,docs/settings.md 里有完整的参数清单。今晚把终端打开,半小时后,客厅那台音箱大概率不会再对你说"抱歉,我还不会这个"了。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考