news 2026/9/14 2:34:33

把小爱音箱接入 ChatGPT:MiGPT 语音助手 10 分钟部署教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把小爱音箱接入 ChatGPT:MiGPT 语音助手 10 分钟部署教程

把小爱音箱接入 ChatGPT:MiGPT 语音助手 10 分钟部署教程

【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt

MiGPT 是一个把小米小爱音箱接入 ChatGPT、豆包等大模型的开源项目:原来小爱答不上来的问题交给大模型回答,还能和你多轮连续对话。本文带你从零完成 MiGPT 部署,让家里的音箱说出大模型的回答。

🚀 5 分钟跑通 MiGPT:Docker 与 Node.js 两种部署路径

需要准备三样东西:一个米家账号、一台小爱音箱(推荐 Pro 版,大部分型号都支持,完整清单见 docs/compatibility.md)、Docker 或 Node.js 16+(推荐 20)。MiGPT 走的是小米云端接口,服务和小爱音箱不需要在同一局域网,放家里 NAS 或云服务器都行。

目的:克隆代码、生成两份配置文件,用一条 Docker 命令启动服务

git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt # 从模板生成配置文件,改成你自己的信息 cp .env.example .env cp .migpt.example.js .migpt.js # 启动容器并挂载两份配置文件(Windows 下 $(pwd) 需换成绝对路径) docker run -d --name mi-gpt --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest

启动后需要打开刚才生成的两份文件填写信息:

目的:填入大模型密钥与模型名(.env 文件)

OPENAI_API_KEY=sk-your_openai_api_key OPENAI_MODEL=gpt-4o-mini # 国内模型如通义千问,只需改接口地址,变量名保持不变: # OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

⚠️ 密钥不要提交到任何公开位置,示例文件只是模板而非真实可用密钥。

目的:填入小米账号与音箱设备信息(.migpt.js 文件,其余字段保持示例原样)

export default { speaker: { userId: "your_xiaomi_id", // 小米 ID(在「个人信息」页查看,不是手机号或邮箱) password: "your_xiaomi_password", did: "小爱音箱Pro", // 必须与米家 App 中的设备名称完全一致 }, };

⚠️ 账号密码属于敏感信息,部署在公网服务器时建议用专用小米账号。

Node.js 开发者可以跳过 Docker:

目的:从源码直接启动,逻辑与 Docker 完全一致

pnpm install && pnpm build # 安装依赖并构建 pnpm dev # 读取 .env 并启动

项目会把对话历史存在本地 SQLite 数据库里,支撑后面说的长短期记忆。验证很简单:走到音箱前说「小爱同学,请问 1+1 等于几?」,如果它先说「让我先想想」,再用大模型的答案回答,就说明跑通了。改完配置后注意:Docker 模式必须重启容器才生效。

🔍 MiGPT 工作原理:一条语音指令如何变成 AI 回答

整条链路不改动音箱固件,全靠小米开放接口完成:

  1. MiGPT 轮询 MiNA / MIoT 云端接口,拿到你刚对小爱说的最新对话;
  2. 检测到消息以「请 / 你」(callAIKeywords)等触发词开头时,把消息连同对话历史一起发给配置的大模型;
  3. 模型回复经 TTS 合成语音,指挥音箱播放;连续对话期间循环检测播放状态,30 秒没声音就自动退出。

对话的长短期记忆存在本地数据库里,每次提问会由系统模板(systemTemplate)拼装角色设定和上下文一起喂给模型,所以它「越聊越懂你」。也正因为轮询机制,原版小爱被静音「抢话」会有 1~2 秒的间隙——这是方案特性,不是网络卡。

⚙️ MiGPT 配置参数说明:最容易被写错的 4 个字段

所有参数都在 .env.example 和 .migpt.example.js 两个文件里,但 90% 的启动失败来自下面四个:

参数作用推荐值改错的后果
speaker.userId小米账号标识纯数字小米 ID(「个人信息」页查看)报「70016:登录验证失败」,填成手机号或邮箱必挂
speaker.did定位控制哪台音箱从米家 App 原样复制设备名,如「小爱音箱Pro」报「找不到设备」,多一个空格、大小写不同、「音响」写成「音箱」都会不匹配
OPENAI_MODEL/OPENAI_BASE_URL用哪个模型、走哪个接口国内可用通义千问qwen-turbo+ 对应 compatible-mode 地址报「404 The model does not exist」,接口与模型不匹配
speaker.ttsCommand让音箱播放 TTS 语音的 MIoT 指令到 MIoT 规范站按型号查询,小爱音箱 Pro 为[5, 1]控制台打印了 AI 回复,但音箱一声不吭

型号不在示例里时,先查它对应的ttsCommandwakeUpCommand再填:

🎯 MiGPT 使用场景演练:单次问答与连续对话两种玩法

场景一:日常单次问答

  • 你说什么:「小爱同学,请问地球为什么是圆的?」
  • 系统做什么:轮询到这条消息,命中callAIKeywords的「请」→ 调用大模型 → TTS 流式回传
  • 预期听到什么:「让我先想想」→ 答案正文 →「我说完了」
  • 注意:必须先喊「小爱同学」唤醒她再说话,直接对着音箱讲她接收不到;如果音箱正在放音乐,先暂停再对话

场景二:唤醒模式连续对话(推荐小爱音箱 Pro)

先在.migpt.js里把streamResponse: true打开,然后:

  • 你说什么:先说「小爱同学,召唤傻妞」,听到欢迎语后直接提问,不用每句都喊「小爱同学」
  • 系统做什么:进入 AI 唤醒状态,每句提问都携带上下文,按checkInterval(默认 1 秒)检测播放状态,30 秒无应答(exitKeepAliveAfter)自动退出
  • 预期听到什么:多轮连续问答;「我说完了」之后等 1~2 秒再问下一句;长时间不说话会自动退出唤醒状态

答案说得太长时,喊一句「小爱同学,请你闭嘴」就能打断她。

目的:实时观察消息是否送达 AI、回复是否下发成功

docker logs -f --tail 50 mi-gpt

🚑 MiGPT 踩坑急救站:70016 与 LLM 响应异常速查

报错原文一句话原因修复方式
70016:登录验证失败userId填成了手机号或邮箱,或密码错误改成纯数字小米 ID,保存后重启容器
找不到设备:xxxdid与米家中的设备名称不一致从米家原样复制设备名;名称不一致时在.migpt.js打开debug: trueenableTrace: true,从日志里找到设备的miotDID填入
LLM 响应异常 Connection error国内网络无法直连 OpenAI 官方接口.env里加HTTP_PROXY代理,或把OPENAI_BASE_URL换成国内模型接口

另一类常见现象:AI 的回答「说一半戛然而止」,通常是你的型号无法正确查询播放状态,到 MIoT 规范站查询playingCommand并填入配置:

改了还不行就是型号硬限制,可以改设streamResponse: false保证每句完整播完(代价是失去连续对话)。以上都对不上时,先打开debug: true拿到详细日志再排查。

📌 MiGPT 进阶方向:第三方 TTS 音色与官方文档入口

docs/settings.md 有全量参数说明,docs/tts.md 讲如何接入第三方 TTS 解锁更像真人的音色,docs/changelog.md 记录了功能更新(项目已进入停止维护状态,现有功能完整可用)。

打开 docs/faq.md 搜索你遇到的报错关键词,搜不到就把报错原文贴进 Issue 区,提交你的第一条反馈。

【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

Obsidian多端同步难题破解:五大方案实测与选型指南

我在Obsidian上折腾同步已经有8年了,从最早的移动硬盘手动拷贝,到后来的各种插件、网盘、Git仓库,几乎把市面上能用的方案都试了一遍。写这篇东西的起因很简单:前几天帮我朋友从Notion迁到Obsidian,第一句话就问“多端…

作者头像 李华
网站建设 2026/9/14 2:30:13

IPC设备P2P技术与NAT穿透原理详解

/* 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 2:29:29

superpowers技能包实战:为Codex CLI与Trae注入工程师级AI工作流

直接说结论:如果你在用 Codex CLI、Trae 这类 AI 编程工具,却总觉得 AI 像个“只会答不会做”的顾问,指一步才动一步,那 superpowers 就是冲着这个痛点来的。它不是某个具体插件,而是一套以 Markdown 文档为核心的技能…

作者头像 李华
网站建设 2026/9/14 2:28:39

LFM雷达脉冲压缩原理与MATLAB实现

简介:本资源是一套面向本科及硕士阶段雷达通信教学与科研的线性调频(LFM)脉冲压缩雷达仿真实践材料,基于Matlab 2019a平台实现,聚焦雷达信号处理核心环节——LFM信号生成、匹配滤波与脉冲压缩效果验证。资源共24个文件…

作者头像 李华
网站建设 2026/9/14 2:26:36

AI工具Token排行榜背后的职场攻防战

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

作者头像 李华