
把小爱音箱变成 ChatGPTMiGPT 完整部署与调教指南【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt如果家里的小爱音箱只会报时、搜歌、讲冷笑话MiGPT 就是给它的换脑手术把 ChatGPT、豆包、通义千问等大模型接进音箱让它能陪你问答、角色扮演、连续对话还能换上你喜欢的音色。这篇指南适合手头有小爱音箱尤其是小爱音箱 Pro、想在家里跑一个 AI 语音助手的朋友全程只需要改两个配置文件。先说实话MiGPT 已停止维护怎么用得安心在动手之前有一件事必须如实告诉你MiGPT 已经停止维护作者不再提供更新与支持README 开头就有明确声明。好消息是它已经相当成熟核心功能稳定可用但既然没有后续更新你需要自己做好三件事备份配置定期备份.migpt.js核心配置、.env大模型密钥、.mi.json登录态缓存首次登录成功后生成和prisma/app.db记忆数据库。哪天想重新部署有这几个文件就能快速恢复。限制在网络环境内项目通过小米云端接口轮询对话虽然服务可以部署在任意服务器上、不要求和小爱音箱同一局域网但出于账号安全考虑建议就放在家庭内网NAS、旧笔记本都行。用专用小米账号连接需要填写小米账号密码建议用一个非主力账号避免主账号的异地登录风控反复触发。关注安全停止维护意味着不再修漏洞请留意.env里的 API 密钥泄露风险不要把这两个文件提交到任何仓库。另外也先管理好预期README 里划掉的智能家居 Agent用语音控制米家设备在官方 FAQ 里仍是todo尚未开发目前它专注的是对话这件事本身。它已经能做的AI 问答、角色扮演、流式连续对话、长短期记忆、第三方 TTS 音色——足够把一台闲置音箱盘活。先选路线Docker、本地源码、npm 包怎么选MiGPT 有三种启动方式按你的技术水平对号入座路线适合谁特点Docker 镜像绝大多数用户一条命令启动配置文件挂载进容器改完重启容器生效本地源码想读代码、改代码的人可调试依赖 Prisma 本地数据库npm 包mi-gpt想把它嵌进自己程序的前端开发者代码里MiGPT.create()初始化不读.env和.migpt.jsDocker 路线推荐先按下一节把.env和.migpt.js准备好然后docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest两个注意点Windows 终端PowerShell/cmd里$(pwd)取不到路径要改成两个配置文件的绝对路径国内拉镜像失败就配置 Docker Hub 的镜像加速。源码路线git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt pnpm install pnpm db:gen pnpm dev要求 Node.js 16建议 20。db:gen会用 Prisma 初始化本地数据库用来存对话记忆。启动成功的标志是控制台出现服务已启动的日志此后你对音箱说唤醒词它就开始以 AI 身份接话了最小可用配置两个文件让它跑起来.env告诉 MiGPT 用哪个大模型解决大脑从哪里来的问题。把.env.example复制为.env最少只需三行OPENAI_MODELgpt-4o-mini OPENAI_API_KEYsk-xxxxxxxxxxxxxxx # 可选指向其他 OpenAI 兼容服务一般以 /v1 结尾 # OPENAI_BASE_URLhttps://api.openai.com/v1注意变量名固定叫OPENAI_*就算你换的是通义千问或豆包名字也不用改只改值下一节细说。.migpt.js告诉 MiGPT 音箱是谁、你是谁把.migpt.example.js复制为.migpt.js最小可用版本如下export default { bot: { name: 傻妞, profile: 性别女性格乖巧可爱喜欢搞怪爱吃醋。, }, speaker: { userId: 你的小米ID, // 不是手机号或邮箱在小米账号「个人信息-小米ID」查看 password: 你的小米账号密码, did: 小爱音箱Pro, // 必须与米家APP里的设备名称逐字一致 ttsCommand: [5, 1], // 小爱音箱 Pro 的 TTS 指令 wakeUpCommand: [5, 3], // 小爱音箱 Pro 的唤醒指令 streamResponse: true, // 连续对话确认你的型号支持后再开 }, };几个字段决定了你能不能跑通userId填的是小米 ID一串数字不是手机号也不是邮箱这是登录验证失败的头号原因。did米家里的设备名称空格、大小写、错别字音响≠音箱都会导致找不到设备。拿不准就回米家 App 里原样复制。ttsCommand/wakeUpCommand不同型号参数不同兼容型号总表 里列了常见型号现成的值下一节教你自己查。bot/master给 AI 和它对话的你分别立人设。配合顶部的systemTemplate系统 Prompt 模板可以精细控制它的说话风格、是否带上下文Prompt 写法教程 里有详细说明。记忆能力不用额外配置MiGPT 内置短、长期记忆见 记忆模块源码聊天记录和记忆落在 Prisma 数据库里聊得越多越贴合你们之间的话题。想重置全部状态可以用pnpm db:reset清空数据库和相关缓存文件。怎么查你音箱型号对应的指令参数ttsCommand这类参数的格式是[服务编号, 方法编号]对应小米 MIoT 规范里的 SIID 和 AIID第一个数字是服务比如 5 对应 Intelligent Speaker第二个是具体方法1 是 play-text 播放文字3 是 wake-up 唤醒。所以不同型号的值不一样照抄别人的配置是常见翻车点。自查步骤先按型号搜索打开它发布的 MIoT 规格文档可搜索MIoT 规格查询找到官网输入型号如lx06然后找 Intelligent Speaker 服务下的方法表play-text的 AIID 配到ttsCommandwake-up的 AIID 配到wakeUpCommand如果回答总是说到一半戛然而止说明你的型号需要显式配置playingCommand查询播放状态它是三段式[SIID, 属性编号, 值]比如[3, 1, 1]表示查 Play Control 服务的 playing-state 属性型号选择建议兼容性文档 把型号分成了三档——完美运行如小爱音箱 Pro支持连续对话、正常运行不支持连续对话需streamResponse: false、不支持。你的型号如果不在表里跑通后欢迎把参数分享回社区的 issue 列表方便后来人。唤醒模式与连续对话怎么跟它说话MiGPT 通过轮询小米云端接口偷听你和小爱的对话再决定何时把问题交给大模型。所以跟它互动有两种姿势姿势一单句提问。先唤醒小爱同学再以callAIKeywords里的词开头小爱同学请问地球为什么是圆的 小爱同学你喜欢我吗注意前缀不能省——不说小爱同学直接喊请问 xxx音箱根本不在听写状态你的话它收不到。姿势二进入唤醒模式连续对话。说小爱同学召唤傻妞进入后就不需要每句话都喊小爱同学了可以像聊天一样连续追问。相关配置在.migpt.jsspeaker: { callAIKeywords: [请, 你, 傻妞], // 以这些词开头的消息才交给 AI wakeUpKeywords: [打开, 进入, 召唤], // 说这些进入唤醒模式 exitKeywords: [关闭, 退出, 再见], // 说这些退出 exitKeepAliveAfter: 30, // 唤醒模式 30 秒没人说话自动退出 }几个实际使用中的坑提前知道能省不少事等它说我说完了再追问小爱正在回复或没在听的时候你的话它收不到。Pro 机型看顶部指示灯常亮表示在听其他机型等提示语播完 1-2 秒再开口没反应就重新喊小爱同学唤醒。想打断它就说小爱同学请你闭嘴或者直接问新问题。抢话延迟小爱原生回复被静音前大约有 1-2 秒的延迟这是云端轮询机制决定的无法根除。唤醒词改不了小爱同学写死在音箱固件里外部无法自定义除非刷机。人设可以随时口改不重启改配置直接说小爱同学你是 xxx你 xxx即可临时换人格。共享设备不行小爱是别人账号共享给你的MiGPT 获取不到需要登录它所属的账号。不只是 OpenAI接入豆包、千问和本地模型MiGPT 底层用的是 OpenAI 官方 SDK所以规则很简单凡是提供 OpenAI 兼容接口的模型改三个环境变量就能接。通义千问示例变量名不变只改值OPENAI_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 OPENAI_MODELqwen-turbo OPENAI_API_KEY你的千问密钥千问还支持QWEN_ENABLE_SEARCHtrue让回答参考联网搜索结果vl 系列和开源系列除外。豆包这类不兼容 OpenAI API 的模型中间加一层 API 聚合工具转成 OpenAI 格式OneAPI、simple-one-api 都支持 coze/豆包渠道然后把OPENAI_BASE_URL指到聚合服务地址即可。如果你手上没有合适的 Key也可以在聚合平台上申请本地模型同样适用Ollama、LM Studio 这类工具自带 OpenAI 兼容 APIOPENAI_BASE_URL指向本机地址就能用。Azure OpenAI走单独一组变量AZURE_OPENAI_API_KEY、AZURE_OPENAI_ENDPOINT、AZURE_OPENAI_DEPLOYMENT和OPENAI_API_VERSION。注意版本号以模型 Playground 示例代码里的api_version为准别抄部署页面的版本号。国内网络的现实问题直连 OpenAI 会报Connection error三个出路——.env里配HTTP_PROXY指向你的代理、改用第三方 OpenAI 反向代理服务、或干脆换国产模型。遇到 403 风控就换代理节点或对接国产模型时把HTTP_PROXY置空。声音升级接入第三方 TTS 用豆包同款音色默认tts: xiaoai走小米自带合成有两个升级场景小米 TTS 遇到敏感词会拒播或者你单纯想要更好听、更多选择的声音。MiGPT 支持对接任意TTS 服务只要它提供GET /api/tts.mp3合成接口和GET /api/speakers音色列表接口详见 TTS 接口规范。接入两步走# .env你的 TTS 服务地址注意不能用 localhost 或 127.0.0.1 TTS_BASE_URLhttp://192.168.31.205:4321/xxxx/api// .migpt.js speaker: { tts: custom, // 从 xiaoai 切到 custom switchSpeakerKeywords: [把声音换成], }配好后说一句小爱同学把声音换成 灿灿音色就换了。官方配套的 MiGPT-TTS 服务接入了火山引擎语音合成实名认证后可免费使用 21 款音色——包括和豆包同款的那几款。本地部署的 ChatTTS 也可以按同样的接口规范自己搭。故障速查启动失败、没反应、说一半断掉出问题时先看控制台报错再对照下表。完整的问答列表在 官方 FAQ原理可以看 how-it-works。症状大概率原因处理办法70016登录验证失败账号密码错或把手机号当小米 ID 填了到小米账号「个人信息-小米ID」核对提示触发异地登录保护账号在新网络环境登录触发风控在与服务相同的网络下登录小米官网完成安全验证约 1 小时后重试仍不行就先在本地网络跑通一次把生成的.mi.json导出再挂载到容器/app/.mi.json找不到设备xxxdid和米家设备名不一致从米家 App 原样复制名称仍失败就开enableTrace: true从启动日志里的miotDID取设备 ID提问后 AI 不接话没喊小爱同学前缀或开头词不在callAIKeywords改成小爱同学请 xxx句式或扩充关键词列表控制台有 AI 回复音箱没声音ttsCommand配错回 MIoT 规格文档核对 play-text 的 AIID回答总是说到一半断掉该型号查不到播放状态配置playingCommand型号不支持的话改streamResponse: false会失去唤醒模式回答慢、停顿久默认参数偏保守onAIAsking: []、onAIReplied: []关掉提示语checkInterval: 500换响应更快的模型LLM 响应异常 Connection error网络到不了 OpenAI配HTTP_PROXY或换国产模型/代理服务401 Invalid AuthenticationAPI Key 无效或未生效验证 Key确认容器读到了最新.env404 The model does not exist账号无该模型权限换gpt-3.5-turbo等可用模型调不通时的万能钥匙是调试开关.migpt.js里把debug: true打开日志会详细得多定位完成后记得关掉。行动清单确认你的音箱型号在 兼容性列表 的哪一档抄下对应的ttsCommand/wakeUpCommand/playingCommand。创建.env大模型 Key和.migpt.js账号、设备名、指令设备名从米家 App 原样复制。用 Docker 一条命令启动看到服务已启动日志即成功。试三种说法小爱同学请 xxx、小爱同学你 xxx、小爱同学召唤傻妞确认单句提问和连续对话都通了。备份.migpt.js、.env、.mi.json、prisma/app.db到安全位置服务跑在内网、用非主力小米账号。把音箱放在家里你经常待的那一面墙旁边然后像跟老朋友说话一样跟它聊天吧——配置上的耐心很快会变成每天回家都愿意搭话的回报。【免费下载链接】mi-gpt 将小爱音箱接入 ChatGPT 和豆包改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考