一条 Docker 命令让小爱音箱接入大模型:MiGPT 连续对话语音助手的部署与调优实践
2026/9/13 10:18:22 网站建设 项目流程

一条 Docker 命令让小爱音箱接入大模型:MiGPT 连续对话语音助手的部署与调优实践

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

对着小爱音箱说「小爱同学,帮我安排一下今天的日程」,默认回答往往是一句程式化的套话。装上开源项目 MiGPT 后,这台小爱音箱可以接入 ChatGPT、豆包等大模型:它能回答长问题,能接着你上一句追问,还能用你自己定义的角色开口说话。全程不用写代码,就是两条命令、两份配置文件、一个 Docker 容器。下面是我跑通的最小部署路径,以及最常翻车的三处坑位和修复方法。

原理三句话:音箱是怎么接上大模型的

  • MiGPT 先用你的小米账号登录,通过小米 IoT 开放接口与小爱音箱对话,轮询拿到你对音箱说的最新一句话;
  • 当它发现这句话用「小爱同学,请……」之类的句式触发了 AI,就把消息转给你配置的大模型,模型以流式方式返回回答;
  • 最后 MiGPT 用 TTS 把回答合成语音,再通过同一接口播回音箱,完成一次「你问、音箱答」的循环。

开工前核对五项:准备工作清单

  • 音箱型号:小爱音箱 Pro 最稳,其他型号先查 docs/compatibility.md 里的型号参数表再动手;
  • 电脑或服务器内存至少 4GB:Docker 容器和数据库都跑在这台机器上,4GB 是能跑得动的下限;
  • 已装 Docker 或 Node.js 20+:非开发者推荐走 Docker,Node.js 源码部署留给想改代码的人;
  • 一个未开启二次验证的小米账号:MiGPT 靠账号密码连音箱,开了二次验证会卡住登录;
  • 一个大模型 API 密钥:ChatGPT、豆包、通义千问都行,没有 OpenAI 兼容接口的模型需要先经 API 聚合服务转换。

🚀 三个动作完成 MiGPT 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管大模型,示例文件就是模板,后面要做的只是填值。

再填三类信息:在.migpt.js里填入小米 ID(在小米账号页「个人信息」-「小米 ID」查看,不是手机号)和账号密码;did字段填音箱名称,必须与米家 App 中显示的完全一致,连空格和大小写都不能差。同文件里的ttsCommandwakeUpCommand是播报与唤醒的设备指令,各型号取值不同,去 docs/compatibility.md 查你型号的对应值。

.env里填模型名和 API 密钥,不是官方 OpenAI 就要连服务地址一起换:

OPENAI_MODEL=gpt-4o-mini # 模型名称 OPENAI_API_KEY=你的大模型API密钥 OPENAI_BASE_URL=https://api.openai.com/v1 # 非官方 OpenAI 时换成你的服务地址

最后一条命令起服务

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

Windows 终端里要把$(pwd)换成绝对路径。启动成功后,终端日志会打出服务已启动的字样,此时你对音箱说「小爱同学,召唤傻妞」,它会用角色身份应你。

部署后改三处:让小爱音箱说话像人

服务起来后,.migpt.js有三处值得动,每次改完记得重启容器才生效。

角色人设bot.namebot.profile决定音箱以谁的身份说话。名字会用在招呼语里,profile 是注入给模型的性格设定,写「性格乖巧可爱,喜欢搞怪」这一句就够,不必写长篇小传。

唤醒与退出关键词speaker下的callAIKeywordswakeUpKeywordsexitKeywords三个数组分别决定哪些话触发 AI、进入 AI 模式、退出 AI 模式,想让它进出得干净,就统一改这三处。

连续对话与空闲超时:把streamResponse设为true启用连续对话,音箱就能接着上一句继续回答你的追问;exitKeepAliveAfter是多久没说话就自动退出 AI 模式,建议不超过 60 秒;觉得回复之间停顿多,可以把checkInterval调到 500。个别型号查不到播放状态时,要关掉连续对话改回一问一答。

bot: { name: "傻妞", // 角色名称 profile: "性别女,性格乖巧可爱,喜欢搞怪,爱吃醋。", // 人设 }, speaker: { streamResponse: true, // 启用连续对话 exitKeepAliveAfter: 30, // 无响应自动退出的秒数 }

如果对默认音色不满意,可在.env里配置第三方 TTS 换成更像真人的声音,具体做法看 docs/tts.md。

🔧 最常翻车的三件事:容器起不来、音箱没反应、回答慢

容器起不来:现象是 Docker 容器启动后马上退出或反复重启。原因多为.env格式写错或 API 密钥无效。跑docker logs 容器名看具体报错,去大模型服务商官网核对密钥,改过OPENAI_BASE_URL的话确认该地址能从容器访问。

服务正常但音箱没反应:原因通常在三处里——账号开了二次验证、userId填成了手机号或邮箱而不是小米 ID、did和米家 App 里的名称不一致。按顺序排查;还不行就核对配置里的ttsCommandwakeUpCommand是否对得上你的型号,规格页的查法长这样:

回答慢:现象是问完到听到回答间隔明显。原因是模型本身速度加上配置里提示语、检测间隔的叠加。先换一个响应更快的模型试试,再把.migpt.js里的提示语置成空数组、checkInterval调到 500 减少停顿,更多细节见 docs/faq.md。

MiGPT 已停止维护,但现有功能——语音问答、连续对话、角色人设、TTS 换音色——照旧稳定可用。跑通之后,把.migpt.js.env两份配置备份出来,服务尽量放在家庭内网运行、用专用小米账号连接。整个过程从克隆到第一次对话,就是几条命令加几次填写,剩下的功夫都花在跟音箱磨合上。

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

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询