小爱音箱接入 ChatGPT:MiGPT 30 分钟上手指南
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
周五晚上八点,客厅里孩子在问:"小爱同学,为什么月亮晚上会跟着我走?"音箱用预设的套路话术应付了一句,孩子皱起眉头。如果你也遇到过类似的瞬间,MiGPT 这个项目值得看一眼——它做的事情不复杂:把 ChatGPT 或豆包这类大模型的"大脑"接进小爱音箱,让音箱用你自己的声音、自己的设定回答真问题,而不只是查天气放歌。
MiGPT 能做到什么
它本质上是一个常驻服务:监听小爱音箱收到的语音指令,把命中关键词的问题转给大模型,再把回答转成语音播回音箱。围绕这个核心链路,它顺带解决了几件日常很实用的事:
| 使用场景 | 对应能力 | 一句话说明 |
|---|---|---|
| 随口问知识、问生活 | 大模型问答 | 换掉固定话术,回答有上下文、有逻辑 |
| 睡前陪聊、语音倾诉 | 角色扮演与人格设定 | 给 AI 起名、写人设,说话风格随你定 |
| 连续追问多轮 | 唤醒模式与连续对话 | 进入 AI 模式后不必每句都说"小爱同学" |
| 聊过就忘的尴尬 | 长短期记忆 | 对话历史被保存,越聊越接得住 |
| 听腻了默认音色 | 第三方 TTS 接入 | 可换火山引擎等音色,语音更像真人 |
服务跑起来之后,终端里会看到类似上图的日志:唤醒、召唤、应答逐条打出来,方便你确认链路是通的。
动手前的五件事
开工前花两分钟对照自查,能省掉后面大半的排错时间:
- ☑ 家里有一台米家体系的小爱音箱(Pro 最稳,多数型号可跑)
- ☑ 有小米账号,且知道"小米 ID"在哪查(不是手机号或邮箱)
- ☑ 有一台能常开的电脑或服务器,4GB 内存起步
- ☑ 机器上装好了 Docker,或者熟悉 Node.js 20+
- ☑ 手里有一个大模型的 API Key(OpenAI 或任意兼容接口均可)
顺带提醒:这个项目只服务小米音箱生态,小度、天猫精灵、HomePod 不在范围内。
主流程:从零到"小爱会回答问题"
先把 Docker 装好
环境准备就一件事:确认docker --version有输出。已有 Docker 的可以直接跳过,后面所有步骤都基于它。
拉下代码并复制配置模板
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .migpt.example.js .migpt.js cp .env.example .env复制出来的.migpt.js管"音箱侧"(账号、设备、指令),.env管"模型侧"(Key 和模型名),分工很清楚。
填对小米账号与音箱名
打开.migpt.js,只需要认真核对这几行:
export default { speaker: { userId: "987654321", // 小米 ID,去账号页个人信息里查 password: "账号密码", did: "小爱音箱 Pro", // 米家里的设备名,逐字复制 ttsCommand: [5, 1], // 播放文字指令 wakeUpCommand: [5, 3], // 唤醒指令 }, };did最容易出错:打开米家 App,进入音箱主页,右上角更多 → 设备名称,直接复制原文。"小爱音响"和"小爱音箱"一字之差就会找不到设备。
ttsCommand和wakeUpCommand不同型号数值不同,照抄示例只对部分机型有效。查法是在小米 IoT 规格站搜你的型号(比如 LX06),找到 Intelligent Speaker 方法表:
图里红框标出的play-text(AID 1)对应ttsCommand,wake-up(AID 3)对应wakeUpCommand,前面的 SIID 5 就是数组第一个数字。你的型号如果已在 支持的音箱型号 列表里,直接抄现成参数即可。
指定要用的大模型
编辑.env,最小可用配置只有两行:
OPENAI_API_KEY=sk-xxxxxxxxxxxx OPENAI_MODEL=gpt-4o-mini # 用其他兼容 OpenAI 格式的模型时,取消下行注释并填写 # OPENAI_BASE_URL=https://your-service/v1注意变量名保持OPENAI_*不变,想换通义千问、DeepSeek 这类服务商时,只改OPENAI_BASE_URL和 Key 的值就行。
一条命令拉起服务
docker run -d --env-file $(pwd)/.env \ -v $(pwd)/.migpt.js:/app/.migpt.js \ idootop/mi-gpt:latestWindows 终端下把$(pwd)换成配置的绝对路径。启动成功后用docker ps | grep mi-gpt确认容器在跑,日志里出现"服务已启动"就齐活了。
对着音箱验证效果
验证按由浅入深来:
- 说"小爱同学,请问地球为什么是圆的"——走"请"字开头的即时问答链路;
- 说"小爱同学,召唤傻妞"——进入唤醒模式,之后直接提问即可,不用每句带"小爱同学";
- 回答完等它说"我说完了",停顿一两秒再追问,体验连续对话;
- 说"小爱同学,退出傻妞"——回到普通小爱状态。
四条都走得通,接入就算完成。
值得动手改的三个参数
改唤醒词和退出词
改哪里:.migpt.js的speaker段。为什么:默认词是"傻妞",换成自己喜欢的称呼,家里人才好记;退出词独立设置,避免误触。怎么改:
speaker: { callAIKeywords: ["请", "小贝"], wakeUpKeywords: ["召唤小贝", "打开小贝"], exitKeywords: ["退出小贝"], },改完记得重启容器。
把默认音色换掉
改哪里:.migpt.js的speaker.tts加.env的TTS_BASE_URL。为什么:小米自带 TTS 遇到敏感词会拒播,且音色单一;接第三方服务(如火山引擎,实名后有多款免费音色)听感更接近真人。怎么改:
speaker: { tts: "custom", switchSpeakerKeywords: ["把声音换成"], }TTS_BASE_URL=http://192.168.x.x:4321/xxxx/api注意地址要写局域网或公网 IP,localhost音箱访问不到。配好后说"小爱同学,把声音换成灿灿"即可切换音色,详见 第三方 TTS 说明。
让回答更快
改哪里:.migpt.js里回答前后的提示语。为什么:默认"让我先想想""我说完了"每轮都播,体感拖沓。怎么改:把onAIAsking和onAIReplied置为空数组,再选响应快的模型(如 gpt-4o-mini),一来一回省下的等待最直观。
三种进阶玩法
给自己立一个人格。改.migpt.js里的bot、master简介和systemTemplate,比如设定"一个说话带点毒舌但句句在理的邻居姐姐",AI 会用第一人称扮演,连称呼都跟着人设走。
做孩子的作业搭子。在系统 Prompt 里约束"你是一位耐心的小学老师,回答不超过三句话,先给思路再给答案",配合长短期记忆,它记得住孩子昨天问错的那道应用题。
换一颗更懂中文的大脑。不必只用 OpenAI:通义千问、DeepSeek 等兼容 OpenAI 格式的服务,改.env里三个值就切换;豆包这类不兼容的接口,前面垫一层 API 聚合网关转成 OpenAI 格式再接入即可。
避坑手记
现象:启动时报"70016:登录验证失败"。原因:把手机号或邮箱填进了userId,它只认小米 ID。解法:登录小米账号官网,进个人信息页抄那串数字。
现象:提示"找不到设备:xxx"。原因:did与米家中设备名不一致,多为手打时的错别字。解法:回米家设备名页面复制原文粘贴,别凭记忆敲。
现象:服务器登录被异地风控拦下。原因:部署环境的 IP 与平时登录地差异太大,触发小米安全验证。解法:在与服务器相同的网络下手动登录一次小米官网、完成验证,等约一小时再试;仍不行的话在本地跑通后把生成的.mi.json挂到容器的/app/.mi.json下。
现象:连续对话时说话没反应。原因:提问时机不对——AI 正在回答、或音箱在放音乐时根本听不见你。解法:等"我说完了"之后停一两秒再问;正在播歌就先暂停;实在没响应,用"小爱同学"重新唤醒再说一次。
延伸资料
- 参数设置:每个配置项的完整含义与默认值
- 常见问题:启动失败、连续对话等高频问题的官方答复
- 支持的音箱型号:各型号的指令参数对照表
- 工作原理:指令如何被截获与回传的链路说明
MiGPT 更适合两类人:手上有一台吃灰小爱音箱、想让它真正"会说话"的家庭用户;以及想低成本验证"大模型 + 语音硬件"玩法的开发者。前者照前文走完主流程即可,后者可以顺着 源码目录 从services/speaker/的指令收发读起。项目目前已停止维护,功能以现有版本为准,动手前留个心理预期就好。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考