news 2026/9/14 8:17:00

小爱音箱接入 ChatGPT 大模型语音助手:MiGPT 实操部署指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小爱音箱接入 ChatGPT 大模型语音助手:MiGPT 实操部署指南

小爱音箱接入 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里改userIdpassworddid。注意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.namebot.profile改成你想要的名字和人设;wakeUpKeywords(默认["打开", "进入", "召唤"])决定用哪句话进入连续对话状态。也可以不碰文件,直接说"小爱同学,你是英语老师,你负责陪我练口语"临时设定。效果——同一个音箱可以有不同的"性格"和召唤口令。
  • TTS 引擎:什么时候改——听腻了小爱自己的声音,或者内容涉及敏感词被小米 TTS 拦截。怎么改——在.envTTS_BASE_URL指向一个 TTS 服务,再把speaker.tts"xiaoai"改成"custom";另外部分型号ttsCommand不是默认值,需要到 MIoT 规格页查自家型号的指令(AIID 对应关系见下图)。效果——回答换成别的音色,还能用"小爱同学,把声音换成 xxx"随时切换。详见 docs/tts.md。
  • 连续对话:什么时候改——嫌每句话都要喊一遍"小爱同学"。怎么改——确认你的型号支持后,把streamResponse设为true。效果——"小爱同学,召唤傻妞"进入 AI 状态后可以连着问,不用每次重新唤醒。不支持的型号保持关闭,否则回答会说到一半被截断。
  • 切换模型:什么时候改——不想用 OpenAI,或者想换个更快的模型。怎么改——只改.envOPENAI_MODELOPENAI_API_KEYOPENAI_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 在.envHTTP_PROXY,或改用国内模型
回答明显变慢模型响应慢或提示语多gpt-4o-mini等更快的模型;把onAIAskingonAIReplied设为空数组减少等待

安全与长期使用

  • .migpt.js里存着你的小米账号密码,.env里存着 API 密钥,这两个文件不要贴到聊天群、截图或公开仓库里。
  • API 密钥定期换一换;密钥在.env里,换完重启容器即可生效。
  • 留意项目更新。本项目 README 顶部已注明停止维护,后续修复和兼容进展需要自行关注社区。
  • 把配置文件留一份备份,换服务器或重装时直接复用,能省掉重新排错的麻烦。
  • 账号和密钥都按"最小使用"原则对待,部署完确认服务正常后,不要长期把容器端口暴露到公网。

到这里,你已经知道怎么判断设备能不能用、五个配置文件怎么填、两条启动路径怎么选。现在就可以做的第一件事:克隆仓库,把userIddid和 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 8:16:08

Python爬虫实战:获取空气质量数据并可视化分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 8:12:43

AI论文写作工具:提升学术效率与质量

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 8:12:23

C语言分支结构:原理、优化与实战技巧

1. 项目概述:C语言中的分支结构在C语言编程中,分支结构是控制程序执行流程的基础构建块。它允许程序根据特定条件选择不同的执行路径,就像十字路口的交通信号灯决定车辆流向一样。对于初学者而言,掌握if、switch等分支语句的用法&…

作者头像 李华
网站建设 2026/9/14 8:11:01

3.17打卡的科学管理与习惯养成实践

1. 项目概述:3.17打卡的深层价值解析在数字化生活全面渗透的今天,"3.17打卡"这个看似简单的行为背后,隐藏着现代人自我管理体系的进化轨迹。作为一名连续7年坚持每日打卡的实践者,我发现打卡行为已经从最初的工作考勤工…

作者头像 李华