小爱音箱接入大模型:如何用 MiGPT 接入 ChatGPT 与豆包
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
深夜问客厅里的音箱"帮我写一首关于月亮的诗",几秒后它回了一句"这个我还不会呢"。传统的小爱音箱能报天气、定闹钟,却答不了复杂问题。MiGPT 是一个把小爱音箱接入 ChatGPT、豆包等大语言模型的开源项目,让音箱获得复杂问答、连续对话和自定义人设能力。本文讲清从克隆仓库到完成第一次 AI 对话的完整过程。
先别动手:开始前的三项确认
动手部署前,请逐项核对以下清单:
- 音箱型号:MiGPT 支持大部分小爱音箱型号,其中小爱音箱 Pro 体验最完整。各型号是否兼容、指令参数是多少,先看兼容型号列表。
- 运行环境:一台能长期开机的机器(电脑、NAS 或服务器均可),装好 Docker 或 Node.js 20 以上版本。它调用的是小米云端接口,不需要和音箱处于同一局域网。
- 账号与密钥:一个小米账号及密码(注意是小米 ID,不是手机号),以及一个 OpenAI 密钥,或任何兼容 OpenAI 格式的大模型密钥(豆包、通义千问、DeepSeek 等)。
一分钟看懂原理
可以把 MiGPT 理解成坐在小爱音箱和大模型之间的"翻译官":它通过轮询音箱的对话列表拿到你的问题,转发给大模型,再把大模型的回答用 TTS 合成为音频,最后下发到音箱播放。整条链路一句话就是:接收语音 → 调用大模型 → 语音合成 → 音箱播放。更多细节可以看工作原理。
服务启动成功后,就可以直接对音箱说话召唤 AI,下图是一次真实的服务启动与对话记录。
上手:从克隆到第一次 AI 对话
拿代码、配文件:MiGPT 仓库克隆与示例文件复制
克隆仓库,并把根目录下两个示例文件复制为自己的配置文件:
git clone https://gitcode.com/GitHub_Trending/mi/mi-gpt cd mi-gpt cp .migpt.example.js .migpt.js cp .env.example .env两个文件里每个字段的含义,参数设置 有逐项说明。
选部署方式:MiGPT Docker 一行部署
新手推荐 Docker。在仓库根目录执行一条命令:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest注意 Windows 终端下$(pwd)不可用,要改写配置文件的绝对路径。如果你熟悉 Node.js 开发,也可以克隆后执行pnpm install直接从源码运行,细节见本地开发。
看到"服务已启动"日志后,对音箱说"小爱同学,召唤傻妞"(名称以你的配置为准),得到回应即接入成功。
填账号与模型参数:小爱音箱接入豆包的关键配置
必须手填的字段集中在两个文件里,且各有各的坑。
.env决定用哪个大模型:
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx OPENAI_MODEL=gpt-4o # 接入兼容 OpenAI 格式的其他模型(如豆包、通义千问)时,追加: # OPENAI_BASE_URL=https://模型服务商地址/v1豆包这类不直接兼容 OpenAI 格式的模型,可以先用 One API 之类的 API 聚合服务转成 OpenAI 格式,再把转换后的地址填进OPENAI_BASE_URL。
.migpt.js决定怎么连音箱:
export default { bot: { name: "傻妞", profile: "性别女,性格乖巧可爱,喜欢搞怪。", }, speaker: { userId: "你的小米ID", password: "账号密码", did: "小爱音箱Pro", ttsCommand: [5, 1], wakeUpCommand: [5, 3], }, };两个最易错的点:userId填小米 ID(在小米账号个人信息页查看),不是手机号或邮箱;did必须与米家 App 里的设备名称一字不差,多一个空格、大小写不同都会报"找不到设备"。ttsCommand与wakeUpCommand是各型号"播放文本""唤醒"对应的指令编号,不同型号取值不同,需按 MIoT 规格页查询,兼容列表里也整理了各型号的现成值。
调教:让它更像专属助手
人格设定:用 systemTemplate 塑造 AI 性格
systemTemplate决定 AI 的说话方式,bot与master决定对话双方的人设:
systemTemplate: "你是一个博学多识的助手,友好且简洁地回答,不超过三句话。",把这句话换成"你是一位耐心的家庭教师,用小学生能听懂的语言讲解",它就变成了孩子的学习搭子。更多写法见Prompt 编写指南。
自定义唤醒词与退出词
默认只有以"请"开头的消息才会触发 AI,可按需扩展,并定义进出 AI 模式的口令:
speaker: { callAIKeywords: ["请", "傻妞"], wakeUpKeywords: ["召唤傻妞", "打开傻妞"], exitKeywords: ["退出傻妞", "关闭傻妞"], },说"小爱同学,召唤傻妞"进入 AI 模式后,可以连续提问,无需每句都重复唤醒词;静默 30 秒自动退出,时长可用exitKeepAliveAfter调整。
换音色:接入第三方 TTS
不想听小爱自带音色的话,需要部署一个提供标准接口的 TTS 服务(官方配套的 MiGPT-TTS 项目接入了火山引擎音色,实名认证后即可使用)。然后在.migpt.js中设tts: "custom",在.env中填TTS_BASE_URL指向你的 TTS 服务。配置后说"小爱同学,把声音换成 xxx"即可实时切换音色,流程与接口约定见第三方 TTS。
遇到问题看这里:三个高频问题
服务起不来
现象:启动日志报 70016 登录验证失败、"找不到设备"、ERR_MODULE_NOT_FOUND 等错误。
排查顺序:
- 确认
userId是小米 ID 而非手机号,密码正确。 - 确认
did与米家中设备名称完全一致,重点检查空格和大小写。 - 若提示触发异地登录保护,先在与服务相同的网络下登录小米官网账号完成安全验证,再重试。
- 检查容器内是否存在
/app/.migpt.js且内容无误;Windows 下 docker 命令须用绝对路径。
音箱对 AI 指令无响应
现象:对音箱说话不调用 AI,或控制台有回复但音箱不发声。
排查顺序:
- 必须先说"小爱同学"唤醒,再说"请 xxx"。未唤醒时直接说"请 xxx",它听不到。
- 控制台有回复但不出声,基本是
ttsCommand与型号不符,按 MIoT 规格页的值修正。 - 回复说到一半戛然而止,为该型号补上
playingCommand;若型号不支持查询播放状态,可关闭streamResponse换取完整句子。 - 共享设备无法通过外部接口获取,此场景暂不支持。
AI 回答太慢
现象:提问后等待时间长,连续对话时停顿感明显。
排查顺序:
- 换延迟更低的模型,如
gpt-3.5-turbo或响应迅速的国产大模型。 - 把
onAIAsking、onAIReplied设为空数组,去掉"让我先想想""我说完了"等提示语。 - 微调
checkInterval(播放状态检测间隔)与checkTTSStatusAfter(下发 TTS 指令后开始检测的延迟)。 - 在国内访问 OpenAI 受阻时,配置代理或改用国内大模型。
更多报错对照,见常见问题。
改造完成后,一台普通小爱音箱就变成了随时在线的大模型语音入口,问答、聊天、写诗都可以通过语音完成。最后提醒:MiGPT 已停止维护,建议部署在稳定的家庭内网环境,并定期备份.migpt.js、.env及数据库文件,配置出错时可快速恢复。参数的逐项说明在参数设置,遇到新报错先查常见问题。
【免费下载链接】mi-gpt🏠 将小爱音箱接入 ChatGPT 和豆包,改造成你的专属语音助手。项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考