
把小爱音箱改造成AI语音助手零基础跑通MiGPT的避坑全记录【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt如果你家的智能音箱问它明天出门要不要带伞只会回一句我在那这篇文章就是为你写的。我家的那台小爱音箱接入大模型之前几乎只干两件事定闹钟、讲冷笑话。直到我花了一个周末把它接到了 ChatGPT 和豆包上——现在的它能记住我昨天说过的话能切换不同音色还能不喊小爱同学连续聊上十分钟。这篇文章记录的就是从踩坑到跑通的全过程希望能让你的AI语音助手之路少走一半弯路。先讲一段真实经历一台人工智障音箱的逆袭事情要从我表弟说起。他给爸妈买了一台小爱音箱 Pro本意是让老人动动嘴就能查天气、听新闻结果两个月过去家人问得最多的还是这个音箱到底能干嘛——因为它只会按关键词机械应答稍微绕一点的问法就直接卡壳。后来我在技术社区看到有人提到 MiGPT 这个开源项目把小米的语音硬件和 GPT 这类大语言模型接在一起让音箱真正听懂人话。抱着试一试的心态我照着文档折腾了一下午还真跑通了。现在我家那台音箱问太阳为什么从东边升起这类问题能给出完整的、条理清晰的解释连续聊到第五句它还记得第一句聊了什么用一句把声音换成男声就能切换 TTS 音色晚上用它哄孩子睡觉讲的故事每一遍都不重样。如果你也有一台吃灰的小爱音箱下面的内容可以直接照着抄作业。改造前后到底差在哪一张对比表看明白在动手之前先花一分钟确认这件事值不值得做。同样是问问题这个动作改造前后的差别非常直观对比维度原生小爱音箱接入大模型后理解方式关键词匹配换个说法就听不懂语义理解怎么问都能接住知识范围内置知识库超出范围就在呢大模型在线知识几乎无死角回答风格固定模板千篇一律每次回答都有变化可塑性极强记忆能力说完就忘短期记忆连续对话长期记忆越聊越懂你声音选择只有系统自带音色可接入第三方 TTS自由换声除了体验层面的升级这个项目还有两个很实际的好处一是完全开源免费代码都在本地跑二是模型可以随时换ChatGPT、豆包、通义千问改一行配置就能切换不用换硬件。动手前的三项自查硬件、环境、账号缺一不可别急着复制命令先花两分钟确认三件事能帮你省掉后面一大半的麻烦。1. 硬件是否兼容目前 MiGPT 支持市面上绝大多数小爱音箱型号官方推荐的是小爱音箱 Pro实测最稳定。需要提醒的是小度音箱、天猫精灵、HomePod 这类其他品牌的设备暂不支持也没有适配计划。具体型号兼容性可以在 docs/compatibility.md 里查到。2. 运行环境是否就绪二选一即可本机安装Node.js 16.0走源码方式运行或者装好Docker走镜像方式部署。如果电脑平时不用来写代码强烈建议直接选 Docker省去装依赖的麻烦。3. 小米账号是否可用这里有一个几乎人人都踩的坑登录用的不是手机号也不是邮箱而是小米 ID。打开小米官网的个人信息页面那里显示的一串数字才是要填的账号。部署其实只有四行命令环境确认无误后开始拉取项目。打开终端执行git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt pnpm install # 如果你用的是 npm也可以执行 npm install安装完成后先把两个示例配置文件复制成正式配置cp .env.example .env cp .migpt.example.js .migpt.js如果你走 Docker 路线上面两步可以跳过直接一条命令启动docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest这里要留意Windows 的 PowerShell 和 cmd 终端不支持$(pwd)这个写法需要把它替换成配置文件的绝对路径比如D:/hello/mi-gpt/.env否则会报找不到文件。两处核心配置决定你的音箱姓AI还是姓傻项目跑通的关键就藏在.migpt.js和.env这两个文件里。先改 .migpt.js把账号和音箱对上号打开.migpt.js找到speaker配置块这是整个项目里最容易出错的部分module.exports { speaker: { // ⚠️ 易错点1这里填小米ID不是手机号也不是邮箱 userId: 987654321, password: 你的小米账号密码, // ⚠️ 易错点2必须和米家App里的设备名称完全一致 // 小爱音箱Pro 和 小爱音箱 Pro 都会被判定为找不到设备 did: 小爱音箱Pro, // TTS 语音合成指令Pro 机型默认就是这个值 ttsCommand: [5, 1], // 唤醒音箱的指令 wakeUpCommand: [5, 3], }, };userId、password、did这三项只要有一处填错启动时就会报错后面翻车现场部分会给出每种错误的解决办法。如果你想知道[5, 1]、[5, 3]这些数字是怎么来的可以到 miot-spec 网站上查询自己音箱的规格文档。再改 .env给音箱挑一个聪明的大脑模型配置集中在.env文件里。以 OpenAI 系列为例OPENAI_API_KEYsk-你的密钥 OPENAI_MODELgpt-4o OPENAI_BASE_URLhttps://api.openai.com/v1国内用户如果不想折腾网络问题可以直接接入国产模型。以通义千问为例只需把.env里的三行改成OPENAI_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 OPENAI_MODELqwen-turbo OPENAI_API_KEY通义千问的API密钥这里的规律是环境变量名保持不变只改变量的值。凡是兼容 OpenAI API 格式的服务理论上都能这样接进来。豆包、Kimi、DeepSeek 也可以通过类似的聚合工具转成 OpenAI 兼容格式后接入。别忘了设置召唤词让音箱知道何时该请AI出场默认情况下只有以请你等关键词开头的话才会触发 AI 回复。你可以自定义这份名单module.exports { speaker: { // 消息以这些词开头时调用 AI 回复 callAIKeywords: [请, 你, 傻妞], // 消息以这些词开头时进入连续对话模式 wakeUpKeywords: [召唤傻妞, 打开AI], // 消息以这些词开头时退出连续对话模式 exitKeywords: [退出傻妞, 关闭AI], }, };启动验收从没反应到秒回配置完成后执行pnpm start。看到控制台输出设备已连接、模型已就绪的日志就说明服务跑起来了接下来就可以实测了。在音箱旁说出下面三句话感受一下差别小爱同学请问地球为什么是圆的 —— 触发 AI 回答小爱同学你喜欢我吗 —— 触发 AI 互动小爱同学召唤傻妞 —— 进入连续对话模式之后可以连续追问不用每句都喊小爱同学。如果音箱没反应先别怀疑人生大概率是没先唤醒小爱同学——直接对着音箱说请问……是无效的必须前缀小爱同学。高频翻车现场五张避坑清单照着抄把常见报错整理成了一份清单你遇到的情况大概率就在里面。坑一报错70016登录验证失败原因账号密码不对多半是填了手机号而不是小米 ID。解法去小米官网个人信息页把那一串数字 ID 填进去。坑二提示触发了异地登录风控原因小米检测到新设备登录触发了安全验证。解法在运行 MiGPT 的同一网络环境下先登录一次小米官网手动通过验证等大约 1 小时再启动。如果你用的是海外服务器还需要先同意小米的个人数据跨境传输协议。终极方案是本地先跑通把生成的.mi.json文件挂载到 Docker 容器的/app/.mi.json路径下。坑三报错找不到设备xxx原因did填的名称和米家里的不一致。解法打开米家 App → 进入小爱音箱主页 → 右上角更多 → 设备名称直接复制里面的名称。注意小爱音响错别字、小爱音箱 Pro多了空格这类写法都会被判定为找不到设备必须逐字一致。坑四控制台有 AI 回复但音箱不说话原因不同型号的小爱音箱 TTS 指令不一样默认的[5, 1]可能不适用你的型号。解法到 miot-spec 网站查询你型号对应的play-text指令修改ttsCommand参数。坑五句子没读完就哑火原因部分型号无法通过 Mina 接口获取播放状态导致 AI 以为你已说完就提前打断。解法到 miot-spec 查询播放状态指令配置playingCommand例如[3, 1, 1]。如果改了参数还是不行说明你的设备不支持开放接口查询播放状态比如小米音箱 Play 增强版要么换一台 Pro要么关闭streamResponse流式响应——但关闭后连续对话模式会失效。三招进阶玩法让音箱真正变成你的跑通基础功能只是开始下面三招能让它从能用变成好用。第一招注入人设把音箱调教成专属角色在.migpt.js顶部有一段系统提示词模板把它改成你想要的样子const botProfile 性别女 性格温柔耐心偶尔幽默 特长讲睡前故事、科普冷知识、记性极好 .trim(); const systemTemplate 你是${bot.name}${botProfile}。 请用第一人称回复回答控制在100字以内。 .trim();改完重启服务再用小爱同学你是蔡徐坤你是一名歌手喜欢唱跳这种句式也能在对话中实时调整人设。这是我最喜欢的功能——一个角色聊腻了换一句设定就翻篇。第二招唤醒模式解锁真正的连续对话开启wakeUpKeywords后说一句小爱同学召唤傻妞音箱就进入连续对话状态。此后每次提问都不用再喊小爱同学等它说完我说完了再继续追问即可。有两个小细节值得注意一是如果超过 310 秒没提问音箱会自动退出唤醒状态需要重新召唤二是如果正在播放音乐最好先让它暂停否则可能导致回复异常。当你想打断它长篇大论时直接说小爱同学请你闭嘴就行。第三招告别原声接上豆包同款 TTS 音色对小米自带语音腻了可以切换自定义 TTS。先在.env中配置 TTS 服务地址再在.migpt.js中开启自定义引擎TTS_BASE_URLhttp://192.168.31.205:4321/你的密钥/apimodule.exports { speaker: { tts: custom, // 启用自定义 TTS 引擎 switchSpeakerKeywords: [把声音换成], // 语音切换音色的关键词 }, };配置好后对着音箱说小爱同学把声音换成男声就能直接切换音色。项目社区里有接入火山引擎语音合成的现成服务端实名认证后可免费使用 21 款常用音色。完整的接入方法见 docs/tts.md。越聊越懂你的秘密双级记忆系统MiGPT 内置了一套记忆机制这是它区别于一问一答玩具的关键短期记忆记录当前会话的上下文让连续对话有逻辑、不串台长期记忆把重要的用户偏好和习惯沉淀下来存储到本地数据库中重启服务也不会丢失自动清理对话历史会自动管理避免日志无限膨胀拖慢响应。有了这套机制你的音箱会越来越懂你——它会记得你偏爱简洁的回答记得你上次问过的话题。这套记忆系统的实现逻辑可以参考 src/services/bot/memory/ 目录下的源码。让它真正住进家里三个生活化场景场景一家庭智能管家早上问今天天气适合跑步吗它能结合温度、空气质量给出建议做饭时问红烧肉收汁到什么程度它能把步骤讲得明明白白。场景二孩子的十万个为什么睡前故事可以按孩子年龄调整难度天文地理、成语典故随口即答而且每次都换着花样讲。场景三一个人的情绪搭子加班回家对着它吐槽两句它不会敷衍而是真的接得住话茬——这也是角色扮演功能最让人上瘾的地方。写在最后你的音箱离智能只差一小时回头看我那台音箱的逆袭其实只做了三件事装上服务、改好配置、调教人设。MiGPT 的价值不在于能用大模型聊天这个噱头而在于它用最轻量的方式把家里的旧硬件和新时代的 AI 能力重新连接在了一起。如果你已经看完这份避坑清单现在就可以动手了。遇到问题先翻 docs/faq.md 的常见问题清单配置参数的含义在 docs/settings.md 里有完整对照表想深入研究实现原理可以直接读 src/ 下的源码。从今天起让那台只会说我在的音箱真正成为懂你的家庭伙伴。【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考