ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

三步把小爱音箱接入 ChatGPT:MiGPT 部署与定制完整指南

三步把小爱音箱接入 ChatGPT:MiGPT 部署与定制完整指南 三步把小爱音箱接入 ChatGPTMiGPT 部署与定制完整指南【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt晚上十点你对小爱同学说请讲个笑话它念了一段干巴巴的内置段子而如果你用 MiGPT 把它接入大模型同样的问法会得到一个真正听懂你的回答还能记住你们聊过什么。MiGPT 是一个 Node.js 项目通过小米 IoT 开放接口轮询小爱音箱的对话列表把命中关键词的消息转发给 OpenAI 兼容的 API再把 AI 的回复用音箱的 TTS 指令播出来——你只需要一份配置文件和一条启动命令。一句话定位把小爱音箱从复读机变成有记忆的对话伙伴MiGPT 的核心就一件事让小爱音箱的每次对话都经过大模型而不是只走小米云端。自然语言问答上知天文下知地理不再受限于内置语料长短期记忆本地 SQLite 存储对话与记忆越聊越懂你可换大脑任何 OpenAI 兼容接口都能接ChatGPT、通义千问、Kimi、DeepSeek 等可换音色支持接入第三方 TTS 服务换掉小爱的默认声音动手前5 分钟完成三项自检这一节帮你在动手前确认三件事型号支持吗、环境够吗、指令参数查到了吗避免装完才发现音箱不认。检查项要求说明音箱型号小爱/小米系音箱仅支持小米生态不支持小度、天猫精灵、HomePod运行环境Node.js ≥ 16 或 Docker服务器无特殊要求1 核 1G 足够网络能访问你配置的大模型 API国内模型可免代理账号小米账号 音箱在米家 App 中userId填的是小米 ID个人主页可查不是手机号快速自检一条命令# 确认 Node 版本满足要求Docker 部署可忽略 node -v # 需要 v16型号是否支持、以及对应的ttsCommand/wakeUpCommand参数直接查 docs/compatibility.md 里的型号表。比如小爱音箱 Prolx06是ttsCommand: [5, 1]、wakeUpCommand: [5, 3]小爱音箱 minilx01的唤醒指令则是[5, 2]参数按型号查不能照抄别人的。下图是到 miot-spec 查规格的姿势搜型号 → 点规格 → 打开Intelligent Speaker模块对照 AIID。两个最常见的坑⚠️ 本项目在 README 中已标注停止维护功能稳定可用但不要期待 bug 修复和新功能部署前请知悉。⚠️ 项目通过账号密码走第三方通道控制设备README 免责声明明确提示存在账号风控甚至封禁的可能建议先用一个不重要的账号或接受该风险再操作。三步跑起来Docker 一条命令本地源码五分钟这一节给你最小可运行路径准备两份配置文件.env.migpt.js选一种部署方式启动对音箱说句话验证。三种部署方式对比方式适合谁复杂度关键点Docker 镜像想长期挂着、不想碰环境最低一条docker runnpm 包Node 开发者嵌入自己的项目低npm install mi-gpt后代码里MiGPT.create()启动源码运行要改代码、二次开发中clone 后pnpm install pnpm dev第一步准备配置。无论哪种方式都是同一份配置。.env管大脑.migpt.js管身体。最小可用的.env# .env大模型三件套由 .env.example 改名而来 OPENAI_MODELgpt-4o-mini # ← 关键模型名 OPENAI_API_KEYsk-xxxxxx # ← 关键你的 API Key OPENAI_BASE_URLhttps://api.openai.com/v1 # 换成任何 OpenAI 兼容地址即可接千问/Kimi/DeepSeek.migpt.js由.migpt.example.js改名而来默认文件很长人设、提示语、模板都在里面但真正必须改的只有下面几行其余保持默认即可// .migpt.js只改这几行就能跑 speaker: { userId: 987654321, // 小米 ID个人信息页可查不是手机号 password: 123456, did: 小爱音箱Pro, // ← 关键与米家 App 里的设备名完全一致 callAIKeywords: [请, 你, 傻妞], // ← 关键消息以这些词开头才会调用 AI ttsCommand: [5, 1], // 按型号查见上一节 wakeUpCommand: [5, 3], streamResponse: false, // 连续对话先关着确认型号支持再开 }完整参数含义见 docs/settings.md。第二步启动。按你选的方式执行# 方式一Docker在项目目录里.env 和 .migpt.js 已就绪 docker run -d --name migpt \ --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latest # 方式二源码运行开发调试 git clone https://gitcode.com/GitHub_Trending/mi/mi/mi-gpt cd mi-gpt cp .env.example .env cp .migpt.example.js .migpt.js pnpm install # postinstall 会自动初始化 Prisma 数据库 pnpm dev第三步验证。控制台出现启动横幅和服务已启动对音箱说小爱同学请介绍一下你自己听到 AI 风格而非内置语料的回复就成功了。 Docker 部署时改配置必须重启容器才生效如果改了名称、简介后仍不生效删掉旧容器重新docker run。搞懂它怎么工作轮询、关键词、MIoT 指令三件套明白数据走向后你就知道每个参数在链路里管哪一段出问题也能快速定位。整条链路像一个传声筒你对音箱说话 ↓ MiGPT 轮询设备的对话列表MiNA 开放接口 ↓ 消息以 callAIKeywords 开头→ 否忽略走小爱原有逻辑 ↓ 是 组装系统提示词人设 群聊信息 聊天历史 长短期记忆→ 调用 OpenAI 兼容 API ↓ 拿到回复 → 调用 ttsCommandplay-text指令 → 音箱用 TTS 读出来两个关键集成点各看一段代码就够。第一段是记忆入口音箱上报的每一条新消息先在这里落库并入记忆这是越聊越懂你的起点。// src/services/bot/conversation.ts async onMessage(ctx: MessageContext, msg: MessageWithSender) { const { sender, text, timestamp Date.now() } msg; const { room, memory } await this.get(); if (memory) { const message await MessageCRUD.addOrUpdate({ text, roomId: room!.id, senderId: sender.id, createdAt: new Date(timestamp), }); if (message) { memory?.addMessage2Memory(ctx, message); // 异步写入短期/长期记忆 return message; } } }第二段是指令映射所有设备操作最终都变成[SIID, AIID, 参数]数组下发。[5, 1]是Intelligent Speaker下的play-text播文本[5, 3]是wake-up唤醒这就是配置里ttsCommand和wakeUpCommand的来源连续对话还要查playing-state属性[3, 1, 1]来判断音箱是否还在播。连续对话模式下MiGPT 反复查询这个播放状态来决定继续听还是结束会话从能用到好用人设、音色、多实例三条扩展路线MiGPT 没有插件市场式的扩展架构它的定制面其实很聚焦改人设、换音色、加触发方式再加一个多实例玩法足够覆盖绝大多数需求。换人设类比一下.migpt.js就是给助手写的岗位说明书——bot.profile是助手是谁master.profile是你是谁systemTemplate是行为守则。想让它从陪聊变成查天气管家重写模板即可// .migpt.jssystemTemplate 换成自己的提示词 const systemTemplate 你是家里的智能管家。只回答家居、天气、日程相关的问题 其他话题请礼貌地表示不感兴趣。回复控制在 50 字以内直接说结论。 .trim(); export default { systemTemplate, bot: { name: 傻妞, profile: ... }, // ...其余配置不变 };换音色默认用音箱自带 TTS想换声音比如豆包同款音色把第三方 TTS 服务的地址填进.env的TTS_BASE_URL再用switchSpeakerKeywords配一个把声音换成 xxx的切换词即可接入方式见 docs/tts.md。多设备/多场景单个 MiGPT 实例是单例只管一台音箱、一个账号。多房间的正确姿势是一机一实例配置按房间拆开各自起一个容器靠不同的did和callAIKeywords区分场景# 厨房的音箱独立配置、独立实例 docker run -d --name migpt-kitchen \ --env-file .env \ -v $(pwd)/.migpt.kitchen.js:/app/.migpt.js \ idootop/mi-gpt:latest不同用法下核心参数怎么调一张表收束参数日常闲聊连续对话隐私优先OPENAI_MODELgpt-4o-minigpt-4o长上下文本地开源模型OPENAI_BASE_URL官方/任意兼容服务官方/任意兼容服务自建服务地址streamResponsefalsetrue型号需支持falseexitKeepAliveAfter30306030TTS内置xiaoai内置或第三方自建第三方 TTS 连续对话是实验性功能未刷机的音箱上闭嘴靠播放静音音频绕开偶尔会有小爱抢话或延迟日常使用建议保持streamResponse: false。出问题怎么办五个高频症状的排查路径按症状对号入座绝大多数问题十分钟能定位。1. 说了小爱同学请xxx没反应控制台完全没日志 → 没登录上或did对不上临时开enableTrace: true对照日志里的真实 did有日志但没调 AI → 消息没命中callAIKeywords加上你说的那个开头词调了 AI 但报错 → 看.env里OPENAI_BASE_URL和 Key 是否匹配2. 回复播一半就断 / 连续对话很跳确认型号是否在兼容表完美运行列支持播放状态查询不支持 → 关streamResponse支持但仍断 → 调大checkTTSStatusAfter默认 3 秒给长文本更多时间3.ttsCommand等参数不知道填什么按动手前那节的流程搜型号 → 规格 →Intelligent Speaker模块查play-text的 AIID播放状态查play-control下的playing-state属性。4. AI 回复时小爱还在插嘴这是已知限制而非故障轮询有间隔MiGPT 只能用静音音频曲线救国网络延迟大时会更明显。降低checkInterval最低 500ms能减轻停顿感但无法根除。5. 登录失败、频繁掉线确认userId是小米 ID 而非手机号换网络/异地登录易触发风控⚠️ 固定在同一网络环境运行风控严重时只能换网络或接受账号风险查 docs/faq.md官方常见问题都在这回到那个夜晚现在再试一遍开场那句话对音箱说请讲个笑话这次回答的不再是内置语料而是接了大模型、带着你们聊天记忆的小爱。接下来值得做的三件事把你的systemTemplate改成真正想要的角色、按 docs/compatibility.md 核对一遍指令参数、给另一个房间再拉一个实例。配置改完重启容器说完第一句你就已经上手了。【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表