news 2026/8/23 17:32:26

30分钟把小爱音箱接入 ChatGPT:MiGPT 完整配置教程,改造成真正听得懂人话的 AI 语音助手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
30分钟把小爱音箱接入 ChatGPT:MiGPT 完整配置教程,改造成真正听得懂人话的 AI 语音助手

30分钟把小爱音箱接入 ChatGPT:MiGPT 完整配置教程,改造成真正听得懂人话的 AI 语音助手

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

MiGPT(项目名mi-gpt)是一个 Node.js 开源项目,把小爱音箱接入 ChatGPT、豆包等大语言模型:启动后你对着音箱说"小爱同学,请 xxx",回答你的不再是小爱自带的模板话术,而是大模型的真实回复。本文按你真实的决策顺序展开:值不值得折腾、能不能跑、怎么最省事地跑起来、怎么调得顺手,最后附一份可对照的排障清单。

值得折腾吗:接入大模型后能做什么,又改不了什么

先说接入后真实的变化,方便你判断这笔折腾值不值。

会变的部分

  • 自然语言问答。"小爱同学,请解释一下黑洞是怎么形成的",回答来自大模型而不是搜索摘要,追问"那它和虫洞有什么区别"能接住上下文。
  • 连续对话。支持连续对话的机型进入唤醒模式后,可以连问三句不用每句都喊"小爱同学",它记得你第一句问的是什么。
  • 角色扮演。配置里把小爱的人设改成"性别女,性格乖巧可爱"这类简介,或者直接说"小爱同学,你是我的英语老师",它就会按这个角色回你。
  • 长短期记忆。对话记录存在本地数据库里,由大模型异步提炼成短期记忆和长期记忆,聊得越久它越知道你的习惯,不需要额外开启任何开关。

改不了的部分(项目原理决定,刷机才行):

  • 小爱内置回复会抢话。从你说完到 MiGPT 通过小米云端接口轮询到"小爱正在回复"的状态,有大约 1~2 秒延迟,这期间小爱自己那句话的开头可能已经响了,无解。
  • "小爱同学"唤醒词写在固件里,不能改成"豆包"之类的。
  • 共享设备不支持。小爱音箱如果是别人账号共享给你的,MiGPT 拿不到设备,无法启动。
  • 项目已声明停止维护(README 顶部有公告),但核心的大模型对话功能完整可用,现有版本能装能用。

如果你家里现成有小爱音箱、不想再买新硬件,折腾成本大约就是一条 Docker 命令加一个模型 API 密钥,值得一试。

动手前先查音箱型号:兼容性速查

MiGPT 走的是小米 MIoT 云端接口,不同机型的"播放文本"和"唤醒"指令编码不同,而且部分机型查不到播放状态,直接影响能不能用连续对话。先看你的型号在不在支持列表里,完整清单见 docs/compatibility.md。

完美支持(可开连续对话)

名称型号ttsCommandwakeUpCommandplayingCommandstreamResponse
小爱音箱 ProLX06[5, 1][5, 3]不配置true
小米 AI 音箱(第二代)L15A[7, 3][7, 1][3, 1, 1]true
小爱智能家庭屏 10X10A[7, 3][7, 1]不配置true
Xiaomi Sound ProL17A[7, 3][7, 1]不配置true

基本支持(不支持连续对话):小爱音箱 Play 增强版(L05C)、小爱触屏音箱(LX04)、小爱音箱 mini(LX01)、小米智能家庭屏 6(X6A)等。这类机型 MIoT 接口查不到播放状态,streamResponse必须设为false

不支持:小米小爱音箱 HD(SM4)、小爱蓝牙音箱随身版;小度、天猫精灵、HomePod 等非小米设备也不在适配范围内。

型号在米家 App 的设备详情页可以查到。查到型号后,去小米 MIoT 设备规格库搜型号(比如lx06),点"规格"找到设备文档,ttsCommandwakeUpCommand就是文档里play-textwake-up两个动作对应的 SIID 和 AIID:

复制两份配置文件加一条命令,Docker 跑起来

准备工作一共三样:一台装了 Docker 的机器(家用主机、群晖、云服务器都行,不需要和小爱音箱在同一局域网,全程走云端接口)、你的小米账号、一个模型 API 密钥。

git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .env.example .env # 大模型配置 cp .migpt.example.js .migpt.js # 音箱与角色配置

.env只改前两行:

OPENAI_MODEL=gpt-4o-mini # 使用的模型 OPENAI_API_KEY=sk-proj-xxxx # 你的 API 密钥 # OPENAI_BASE_URL=https://api.openai.com/v1 # 默认地址,国内模型时替换

接入非 OpenAI 的模型:通义千问、DeepSeek、Moonshot(Kimi)等本身就是 OpenAI 兼容接口,直接改OPENAI_BASE_URLOPENAI_MODEL即可,例如通义千问填https://dashscope.aliyuncs.com/compatible-mode/v1+qwen-turbo。豆包、文心一言这类不兼容 OpenAI 协议的,需要先通过 One API 或 simple-one-api 这类聚合工具转成 OpenAI 格式,再把地址填进OPENAI_BASE_URL

.migpt.js只需要动speaker下的五个参数,其余保持默认:

export default { speaker: { userId: "987654321", // 小米 ID,不是手机号或邮箱,在「个人信息 - 小米 ID」查看 password: "123456", // 小米账号密码 did: "小爱音箱Pro", // 米家中的设备名称,注意错别字(音响≠音箱)、空格、大小写 ttsCommand: [5, 1], // 播放文本指令,SIID+AIID wakeUpCommand: [5, 3], // 唤醒指令,SIID+AIID }, };

ttsCommandwakeUpCommand怎么查:在 MIoT 规格库打开你机型的设备文档,找到 SIID 为 5 的intelligent-speaker服务,play-text的 AIID 对应ttsCommandwake-up的 AIID 对应wakeUpCommand,小爱音箱 Pro 查出来就是[5, 1][5, 3]

配置文件放好后,一条命令启动:

docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest

Windows 终端(PowerShell、cmd)不识别$(pwd),换成配置文件绝对路径,例如-v D:/hello/mi-gpt/.migpt.js:/app/.migpt.js

启动后对着音箱说"小爱同学,请问地球为什么是圆的",能听到完整回答就算成功了。

想改代码或调试:源码方式直接跑

如果你要改角色设定逻辑、看日志细节,或者环境里本来就有 Node.js(要求>=16),可以不走 Docker:

git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt pnpm install # 安装依赖(npm install 也可以) pnpm db:gen # 初始化本地 SQLite 数据库(Prisma 迁移) cp .env.example .env cp .migpt.example.js .migpt.js pnpm dev # 开发模式启动,自动读取 .env

pnpm dev等价于node --env-file=.env ./app.js,正式跑用pnpm start。登录成功后会在根目录生成.mi.json登录态缓存文件,这个文件对排障很有用,后面会用到:

源码方式和 Docker 方式共用同一套.env.migpt.js,改完重启即生效;Docker 方式下改了配置文件记得重启容器,个别参数(如名称、简介)改完可能要删掉旧容器重建。

让对话变顺手:连续对话、人设、记忆与声音

默认配置跑通后,按需调下面几组参数,都在.migpt.js里。完整参数表见 docs/settings.md。

连续对话(唤醒模式)streamResponsetrue的机型,通过wakeUpKeywords进入唤醒状态后就能免唤醒连问:

speaker: { streamResponse: true, // 开启连续对话,仅完全支持机型 callAIKeywords: ["请", "你", "傻妞"], // 以这些词开头会调用 AI 回复 wakeUpKeywords: ["打开", "进入", "召唤"], // 以这些词开头进入唤醒模式,如"小爱同学,召唤傻妞" exitKeywords: ["关闭", "退出", "再见"], // 以这些词开头退出唤醒模式 exitKeepAliveAfter: 30, // 唤醒模式下多少秒无响应自动退出,建议不超过 60 }

进唤醒模式后不用每句喊"小爱同学",等它说"我说完了"再问下一句;超过 30 秒不说话它会自己退出,届时再重新召唤。

提示语。每次进入、开始回答、答完都有默认提示语("让我先想想"、"我说完了,还有其他问题吗"),嫌啰嗦就把对应项设成空数组关掉,注意全关后可能感觉小爱"没反应":

speaker: { onAIAsking: [], // 关闭 AI 开始回答时的提示语 onAIReplied: [], // 关闭 AI 结束回答时的提示语 }

人设bot.namebot.profile(小爱是谁)和master.namemaster.profile(你是谁)会拼进系统 Prompt,模板是文件顶部的systemTemplate。不想改文件也可以运行时直接说:"小爱同学,你是一名歌手,喜欢唱跳 rap"。

记忆。默认就开着:每条消息入库存档,每积累约 10 条由大模型异步提炼成短期记忆,短期记忆再滚动汇总成长期记忆,对话越长越贴合你的语境,无需配置。

换音色(第三方 TTS)。默认tts: "xiaoai"用小米自带合成。想换成豆包同款火山引擎音色或本地 ChatTTS,需要自部署一个 TTS 服务(作者提供了 MiGPT-TTS 参考实现),然后:

// .env TTS_BASE_URL=http://192.168.31.205:4321/xxxx/api // 你的 TTS 服务地址,勿用 localhost // .migpt.js speaker: { tts: "custom", // 切换到第三方 TTS 引擎 switchSpeakerKeywords: ["把声音换成"], // 说"小爱同学,把声音换成 xx"即可切音色 }

第三方 TTS 的接口要求和音色列表见 docs/tts.md。

回复太快/太慢。嫌等得久,换响应更快的模型(如gpt-3.5-turbo),或把连续对话的播放状态检测间隔调小:checkInterval: 500(单位毫秒,最低 500,默认 1000),能减轻回复之间的停顿感。

对照排障清单:从现象到解法

按报错信息对号入座,更完整的问答在 docs/faq.md:

现象原因解法
启动报70016:登录验证失败userId填了手机号或邮箱去小米官网「个人信息 - 小米 ID」查真正的数字 ID
提示触发异地登录保护小米账号在新网络环境登录在与 MiGPT 相同的网络下手动登录小米官网通过安全验证,约 1 小时后重试;仍不行则在本地网络跑通后导出.mi.json,挂载到容器/app/.mi.json再启动
找不到设备:xxxdid与米家中名称不一致直接复制米家里的名称(警惕"小爱音响"错别字、多余空格、pro/Pro大小写);还不行就开debug: true+enableTrace: true重启,从日志MiNA 设备列表里抄miotDID填进did,查完记得关
ERR_MODULE_NOT_FOUND.migpt.js不存在或挂载路径错检查容器内/app/.migpt.js是否存在;Windows 下必须用绝对路径
控制台打印了 AI 回复,但音箱不念该机型的ttsCommand填错回 MIoT 规格库重查play-text的 SIID/AIID 并修改
回答总是说到一半戛然而止部分机型查不到播放状态按规格库补上playingCommand: [3, 1, 1](见下图);仍无效说明该机型接口不支持查询,只能关掉streamResponse换完整句朗读,代价是失去连续对话
LLM 响应异常 Connection error国内网络访问不了 OpenAI.envHTTP_PROXY=http://127.0.0.1:7890,或把OPENAI_BASE_URL换成国内模型
401 Invalid AuthenticationAPI 密钥无效或未生效验证 key 本身可用,并确认环境变量已传入容器/进程
404 The model gpt-4o does not exist账号没有 gpt-4 权限(新账号未绑卡常见)换成gpt-3.5-turbo这类模型
Docker 镜像拉取失败网络问题给 Docker 配置镜像加速源后重试
进唤醒模式时小爱突然放歌唤醒词被当成歌名wakeUpKeywords,比如用"打开"
唤醒模式下说话没反应音箱当时不在收听状态等它说"我说完了"或指示灯常亮后再问;正在放音乐先暂停;真没听就用"小爱同学,xxx"重新唤醒
回答太长想打断说"小爱同学,请你闭嘴"或重新提问

另外两个设计层面的"坑"提前知道:小爱内置回复抢话的 1~2 秒延迟无解;一个容器只支持单实例单账号,多台音箱或多账号要建多个容器,各自挂不同的.migpt.js

建议的下一步:从三件事里挑一件做

配置跑通后,按这个顺序往下走最省力:

  1. OPENAI_BASE_URL换成豆包或通义千问的接入地址,同一问题问两个模型,体会一下回答风格差异,选一个你更顺耳的固定下来。
  2. 自部署 MiGPT-TTS,用"小爱同学,把声音换成 xxx"试一次非小米自带音色——这是默认配置之外体感变化最大的一步。
  3. bot.profilesystemTemplate改成符合你家场景的人设(比如给孩子的"小学老师"),让它长期记住你家的作息和偏好,观察几天记忆系统的效果。

配置文件只有两个、参数也就十几项,跑通之后每天改一处参数、重启一次容器,一周之内你就能把这台音箱调成自己最习惯的样子。

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

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

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

本地AI项目部署实战:从环境搭建到API集成的完整指南

这次我们来看一个名为“魔绿向”的项目。从标题“我到底做了个什么东西啊啊啊啊啊”能感受到开发者强烈的探索和分享欲,这通常意味着一个功能独特或整合度高的工具。这类项目往往聚焦于解决某个具体痛点,比如本地AI部署的简化、特定工作流的自动化&#…

作者头像 李华
网站建设 2026/8/23 17:21:27

猫抓浏览器资源嗅探扩展:从安装到流媒体下载一次讲清

猫抓浏览器资源嗅探扩展:从安装到流媒体下载一次讲清 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 打开一段在线课程或新闻视频&…

作者头像 李华
网站建设 2026/8/23 17:20:18

BERT与Transformer核心技术对比及面试要点解析

1. 项目背景与核心目标作为一名准备考研复试的计算机专业学生,我最近在复习自然语言处理(NLP)领域的核心模型架构时,发现BERT和Transformer这两个概念经常被混为一谈。实际上它们既有紧密联系又存在关键差异。为了理清这两个重要概念的异同点&#xff0c…

作者头像 李华
网站建设 2026/8/23 17:18:33

5分钟上手koa-helmet:Koa应用快速启用安全头的保姆级教程

5分钟上手koa-helmet:Koa应用快速启用安全头的保姆级教程 【免费下载链接】koa-helmet Important security headers for koa 项目地址: https://gitcode.com/gh_mirrors/ko/koa-helmet koa-helmet 是一款专为 Koa 打造的安全头(Security Headers&…

作者头像 李华