小爱音箱接入 ChatGPT 大模型语音助手:MiGPT 实操部署指南
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
这篇文章写给家里有小爱音箱、想给它换上"大模型大脑"的人。你不需要刷机,也不需要会写代码,跟着做大约五到十分钟就能跑通:部署开源项目 MiGPT,把小爱音箱接入 ChatGPT、豆包等大模型。以后你用语音向小爱提问,回答你的不再是预设的答案,而是大模型生成的内容。
先感受一下差别
同样的话,接入大模型之前和之后,效果差别很明显:
- 说"提醒我下午五点接孩子"。原来的小爱同学直接执行,接入大模型后依然能执行,而且会结合上下文,比如你早上提过"明天家长会",它能主动关联起来。
- 问"黑洞是怎么形成的"。原来的回答基本是念一段百科词条,一句"回答完毕"就结束;换成大模型后,它会分点讲清楚成因,还能按你的要求"讲得再简单一点"。
- 说"帮我写一封给物业的感谢信,语气客气一点"。原来的小爱同学基本接不住这类请求;大模型可以直接生成一段完整的文字,读给你听。
区别的本质就一条:从"查固定答案"变成"理解你的问题再回答"。
开始前的四件事
动手前把下面四项过一遍,能避开部署中大部分报错:
- 确认设备型号:去米家 App 查看你的音箱型号。已知完美运行的有小爱音箱 Pro(LX06)、Xiaomi 智能音箱 Pro(OH2P)、小米 AI 音箱第二代(L15A)等;小爱音箱 mini(LX01)、小爱触屏音箱(LX04)等可以运行,但部分功能受限。不支持的设备范围要记牢:小度音箱、天猫精灵、HomePod 不在支持列表内;小爱音箱 HD(SM4)、小米小爱蓝牙音箱随身版也不支持。型号和对应参数可查 docs/compatibility.md。
- 确认音箱绑定在你自己账号下:MiGPT 是用你的小米账号登录并查找设备的,共享给别人的设备拿不到,启动时会报"找不到设备"。
- 检查网络环境:运行 MiGPT 的机器必须能访问你配置的大模型接口。在国内直连 OpenAI 需要走代理(在
.env里填HTTP_PROXY),或者干脆换通义千问、DeepSeek 等国内模型,后面会讲。 - 提前查好两个指令参数:
ttsCommand(让小爱朗读文字的指令)和wakeUpCommand(唤醒指令)因型号而异,比如小爱音箱 Pro 分别是[5, 1]和[5, 3]。查错或不填,音箱会出现"有回复但不出声"的情况。
五分钟跑起来
复制这两个文件就能启动
所有方式都要先拿到仓库并准备配置文件:
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .migpt.example.js .migpt.js cp .env.example .env第一条命令把 MiGPT 仓库下载到本地,第二、三条把两份示例配置复制成正式配置文件。接下来只改这两个文件:
.migpt.js里改userId、password、did。注意userId是小米 ID(在小米账号"个人信息"页查看),不是手机号或邮箱,填错会报"70016:登录验证失败";did填米家中给音箱设置的名称,空格、大小写、错别字都要一致,填错会报"找不到设备";这两个型号专属指令也在这里按你的型号核对。.env里改OPENAI_API_KEY(你的模型服务密钥)、OPENAI_MODEL(模型名)、OPENAI_BASE_URL(模型服务地址,默认 OpenAI)。
Docker 方式(新手推荐)
两个文件改完后,一条命令启动:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest这条命令把容器在后台跑起来,并把你的两个配置文件映射进容器。Windows 终端里$(pwd)不生效,要换成.env和.migpt.js的绝对路径。
源码方式(开发者可选)
如果你想读源码或二次开发,就在仓库目录里依次执行:
pnpm install pnpm db:gen pnpm start第一条安装依赖,第二条初始化本地数据库(Prisma 建表),第三条启动服务。注意 Node.js 要 16 以上。
看日志确认跑通
启动成功的标志是控制台依次打印"服务已启动"和音箱设备信息。这时对着音箱说"小爱同学,请介绍一下你自己",它能用大模型的内容回答你,就说明部署完成了。
跑起来之后,把体验调到位
只动这五处,体验改善最明显:
- 长期记忆:什么时候改——想让音箱"记得你们聊过什么"。怎么改——
.migpt.js里的systemTemplate中保留了{{shortTermMemory}}和{{longTermMemory}}两个变量,它们就是短、长期记忆的注入位,保留即可。效果——聊完一轮第二天再问,它能接住之前的话题,不会每次都像初次见面。 - 自定义角色和唤醒词:什么时候改——想让它换个身份,或换一种召唤方式。怎么改——把
bot.name、bot.profile改成你想要的名字和人设;wakeUpKeywords(默认["打开", "进入", "召唤"])决定用哪句话进入连续对话状态。也可以不碰文件,直接说"小爱同学,你是英语老师,你负责陪我练口语"临时设定。效果——同一个音箱可以有不同的"性格"和召唤口令。 - TTS 引擎:什么时候改——听腻了小爱自己的声音,或者内容涉及敏感词被小米 TTS 拦截。怎么改——在
.env配TTS_BASE_URL指向一个 TTS 服务,再把speaker.tts从"xiaoai"改成"custom";另外部分型号ttsCommand不是默认值,需要到 MIoT 规格页查自家型号的指令(AIID 对应关系见下图)。效果——回答换成别的音色,还能用"小爱同学,把声音换成 xxx"随时切换。详见 docs/tts.md。 - 连续对话:什么时候改——嫌每句话都要喊一遍"小爱同学"。怎么改——确认你的型号支持后,把
streamResponse设为true。效果——"小爱同学,召唤傻妞"进入 AI 状态后可以连着问,不用每次重新唤醒。不支持的型号保持关闭,否则回答会说到一半被截断。 - 切换模型:什么时候改——不想用 OpenAI,或者想换个更快的模型。怎么改——只改
.env里OPENAI_MODEL、OPENAI_API_KEY、OPENAI_BASE_URL三个值;兼容 OpenAI 接口的国产模型(通义千问、DeepSeek 等)直接填对应值即可,豆包等不兼容的模型可以经过 One API 这类聚合工具转成 OpenAI 格式后再接入。效果——同一个部署,换模型不用改任何代码。
背后是怎么工作的
MiGPT 不改动音箱的固件,它靠三层协作工作:最底层通过小米 IoT 生态开放的 MIoT、MiNA 接口控制小爱音箱,做播放、暂停、唤醒这些动作;中间层是大模型服务,负责真正生成回答;最上层的src/services/bot负责应用逻辑,包括对话轮询、记忆管理和角色设定。具体流程是:程序持续轮询设备对话列表拿到你的语音消息,命中关键词(比如"请")就带上上下文调用大模型,拿到回答后再交给 TTS 合成语音,发回音箱播放。因为要经过"音箱上报状态—小米云端—轮询拿到"这条链路,回答前有 1 到 2 秒的固有延迟,属于方案特性,不是你的网络问题。更多细节见 docs/how-it-works.md。
用起来:三种真实玩法
- 学习助手:"小爱同学,请给我讲一下 JavaScript 闭包是什么"。大模型会像老师一样分步解释,还可以追问"举个例子"。
- 生活管家:"小爱同学,请帮我写一段给邻居的感谢词,五十字以内"。适合临时需要一段得体文字、又不想掏手机的时候。
- 工作搭子:"小爱同学,请帮我写一封给客户的邮件草稿,说明项目延期一周"。生成后它读给你听,你可以要求"改得更委婉一点"再听一遍。
出了问题怎么办
| 症状 | 最可能原因 | 排查动作 |
|---|---|---|
| 音箱完全没反应,或启动时报"70016:登录验证失败" | 小米 ID 填成了手机号/邮箱,或密码错误 | 到小米账号"个人信息"页复制小米 ID 填入userId,再核对password |
| 启动时报"找不到设备:xxx" | did和米家中的设备名不一致,或音箱是共享设备 | 直接复制米家里的设备名称(注意空格和大小写);共享设备换绑到自己账号 |
| 控制台有 AI 回复,音箱不发声 | ttsCommand与你的型号不匹配 | 到 MIoT 规格页查该型号的 play-text 指令,更新.migpt.js后重启容器 |
| 回答说到一半戛然而止 | 该型号查不到播放状态,流式判断出错 | 查playingCommand;仍无解就把streamResponse设为false |
| 报"Connection error"或 401/403 | 网络不通、API 密钥无效或代理被风控 | 检查OPENAI_API_KEY是否有效;国内访问 OpenAI 在.env加HTTP_PROXY,或改用国内模型 |
| 回答明显变慢 | 模型响应慢或提示语多 | 换gpt-4o-mini等更快的模型;把onAIAsking、onAIReplied设为空数组减少等待 |
安全与长期使用
.migpt.js里存着你的小米账号密码,.env里存着 API 密钥,这两个文件不要贴到聊天群、截图或公开仓库里。- API 密钥定期换一换;密钥在
.env里,换完重启容器即可生效。 - 留意项目更新。本项目 README 顶部已注明停止维护,后续修复和兼容进展需要自行关注社区。
- 把配置文件留一份备份,换服务器或重装时直接复用,能省掉重新排错的麻烦。
- 账号和密钥都按"最小使用"原则对待,部署完确认服务正常后,不要长期把容器端口暴露到公网。
到这里,你已经知道怎么判断设备能不能用、五个配置文件怎么填、两条启动路径怎么选。现在就可以做的第一件事:克隆仓库,把userId、did和 API 密钥填进两个配置文件,然后跑 Docker 那条命令。
相关文档:
- docs/settings.md:全部配置参数说明
- docs/faq.md:启动、播放、网络三类高频问题
- docs/tts.md:第三方 TTS 接入教程
- docs/compatibility.md:兼容型号与指令参数清单
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考