小爱同学接入各类AI模型,“智障”秒变学霸。NAS更有用了!
大家好,我是羊刀仙。
不知道各位家里有没有智能音箱?没错,就是小爱和天猫精灵这种语音助手。刚推出的时候的确比较新奇好玩,但现在感觉妥妥的一个大傻X。现在AI十分流行,那么是否有办法把语音助手也接入AI呢?
本次就来介绍一个相关的开源项目:MiGPT,将小爱音箱接入 ChatGPT 和豆包(字节),改造成你的专属语音助手。

本文会通过使用 Docker 方式来和大家一起手把手搭建这个项目,小白也能轻松搞定!
项目简介
在这个数字化的世界里,家已不仅仅是一个居住的地方,而是我们数字生活的延伸。
MiGPT 通过将小爱音箱、米家智能设备,与 ChatGPT 的理解能力完美融合,让你的智能家居更懂你。
MiGPT 不仅仅是关于设备自动化,而是关于:打造一个懂你、有温度、与你共同进化的家。
未来,你的每个智能家居设备,从灯泡、插座,到扫地机器人、电视等,
都可以作为一个个独立的智能体 (Agent),更智能、更贴心的响应你的指令。
这些独立的智能体,也可以彼此感知,彼此配合,构成一个更强大的协作网络。
而小爱音箱就像是你的智能家居专属管家,全心全意为你服务,释放智能家居的真正潜力。
项目亮点
🎓 AI 问答。想象一下,当小爱音箱接入大模型后,上知天文,下知地理,从“人工智障”秒变学霸。
🎭 角色扮演。一秒调教小爱,无论是成为你的完美伴侣,还是那个能听你倾诉心事的贴心闺蜜,都不在话下。
💬 流式响应。爱情来得太快就像龙卷风,而你的小爱音箱也是,对你的爱意秒回,爱你不会让你等太久。
🧠 长短期记忆。小爱音箱现在能记住你们之间的每一次对话,越聊越默契,就像是你身边的老朋友。
🔊 自定义 TTS。厌倦了小爱同学的语音?帮你解锁「豆包」同款音色,就像真人在回你的消息。
🤖️ 智能家居 Agent。心情不好?小爱立刻懂你,自动帮你播放喜欢的音乐,调节灯光,逗你开心。
设备支持
MiGPT 支持大部分的小爱音箱型号,推荐使用小爱音箱 Pro(完美运行)。


小爱音箱 HD 以及 小爱蓝牙音箱随身版 完全不支持该项目。
部署流程
以威联通NAS为例,型号为TS-673A,群晖、绿联、极空间等其他平台部署方式基本一致。这次大促威联通的TS-464C2价格不错,也将支持QuTS hero系统,想购买NAS的朋友可以考虑。
文件目录与配置文件
首先为MiGPT准备文件目录。直接命名为MiGPT,此外还需要准备 .env 和 .migpt.js 两个配置文件放于该目录下。

进入项目地址,找到以下两个文件。

在NAS中打开Text Editor文本编辑器,创建文本文件。将上面两个示例文件内容分别粘贴进去,进行修改并另存为至MiGPT目录下。
⭕️ 环境变量.env配置:

一般来说仅需修改以下几个部分_MODEL=,这里的llama3-70b-8192可以换成其他模型_API_KEY=,你生成的api_key,若是本地模型这里不用管,随便写个就行_BASE_URL=,默认注释掉的,别忘了删除井号取消注释。这个地址其实就是运行大模型的地址,本地模型就输入本地的AI访问入口。(原项目中有作者推荐的AI以及接入方式方法,大家可以根据自己条件选择用哪个)
另存为.env ,是一个隐藏文件,看不到正常。在 Linux 和类 Unix 系统(包括大多数 NAS 设备的操作系统)中,以 “.” 开头的文件默认是隐藏的。这是操作系统的一种标准做法,目的是防止这些配置文件被用户不小心修改或删除。

⭕️ 音箱.migpt.js配置
重复上面操作,先新建文档。配置模板如下。内容较多,大家可以先往下划,我列出了必须修改部分,其他内容等自己回头再慢慢改~

必须需要修改的是userId、password、did就是你的小爱音箱型号:
// 小米 ID
userId: "978765301", // 注意:不是手机号或邮箱,请在「个人信息」-「小米 ID」查看
// 账号密码,就是你小米账户登陆的那个密码
password: "Keepfit75KG!",
// 小爱音箱 DID 或在米家中设置的名称
did: "小爱音箱Pro", // 注意空格、大小写和错别字(音响 👉 音箱),不要出任何错误
参考上面的设备支持部分,这个变量请根据自己型号修改false或true,默认为true:
// 是否启用连续对话功能,部分小爱音箱型号无法查询到正确的播放状态,需要关闭连续对话
streamResponse: true,
// 连续对话时,无响应多久后自动退出
以上工作完成后,另存为即可。
Docker Compose部署
打开Container Station,创建新的应用,将以下代码粘贴进去后修改并创建即可。

作者提供部署命令:
docker run -d --env-file $(pwd)/.env -v $(pwd)/.migpt.js:/app/.migpt.js idootop/mi-gpt:latest
转为docker compose:
version: '3.8' # 新版docker compose无需这行,可删除
services:
migpt:
image: idootop/mi-gpt:latest
container_name: migpt
restart: unless-stopped
env_file:
- /share/Container/MiGPT/.env
volumes:
- /share/Container/MiGPT/.migpt.js:/app/.migpt.js
系统会自动帮我们拉取镜像并运行项目。
部署完毕后,查看Docker日志,出现以下界面便说明可以使用了。

尝试对话,跟作者配置中的一样,确实有些傲娇。。。

常见问题
皆摘自原项目。很多问题解决方案,以及自定义配置教程在原项目都十分详细,这里只是挑些可能较为常见的说明,为大家节省点时间。
是否支持其他模型,是否支持其他TTS接入
理论上兼容的模型都支持,修改环境变量即可接入到 MiGPT。比如:通义千问、零一万物、Moonshot、DeepSeek等。
对于其他不兼容的大模型,比如豆包、文心一言等,也可以通过第三方的 API 聚合工具将其转换为 兼容的格式。比如: One API和 simple-one-api(推荐:支持 coze,使用更简单),然后修改对应的环境变量值即可完成接入。
支持任意的TTS服务接入,具体请浏览官方文档。
AI回答调速、开启唤醒模式
这两项都可在小爱的配置文件中修改调整.
回答调速:
// .migpt.js
export default {
speaker: {
// 使用小爱自带的 TTS 引擎
tts: "xiaoai",
// 关闭 AI 开始回答时的提示语
onAIAsking: [],
// 关闭 AI 结束回答时的提示语
onAIReplied: [],
// 连续对话时,播放状态检测间隔(单位毫秒,最低 500 毫秒,默认 1 秒)
checkInterval: 500, // 调小此值可以降低小爱回复之间的停顿感,请酌情调节
// 连续对话时,下发 TTS 指令多长时间后开始检测设备播放状态(单位秒,最好不要低于 1s,默认 3 秒)
checkTTSStatusAfter: 3, // 可适当调小或调大
// ...
},
};
唤醒和连续对话模式,召唤傻妞后,便无需每句对话以小爱同学作为起始:
// .migpt.js
export default {
speaker: {
// 当消息以下面的关键词开头时,会调用 AI 来回复消息
callAIKeywords: ["请", "你", "傻妞"],
// 当消息以下面的关键词开头时,会进入 AI 唤醒状态
wakeUpKeywords: ["打开", "进入", "召唤"],
// ...
},
};
唤醒小爱同学
正常对小爱音箱说“小爱同学”,唤醒其进入听写状态。
唤醒小爱同学后,可以对她说语音指令,比如“请问地球为什么是圆的”
此时,只有以callAIKeywords开头的消息,才会调用 AI 进行回复。
此阶段无法做到连续对话,每次提问都要以“小爱同学,请 xxx”开头。
进入唤醒模式
默认不会调用 AI 进行回复
唤醒模式(AI 模式)类似小爱技能,进入后可以连续对话
使用wakeUpKeywords即可进入唤醒模式,比如“小爱同学,召唤傻妞”
进入唤醒模式后,每次提问请等待小爱回答“我说完了”之后,再继续向她提问
此时,可直接向小爱提问题,无需再以“小爱同学,xxx”开头。
无法使用、启动失败等
该类问题极大概率是AI和小米各自那三个变量的配置问题,重点关注网络问题、API是否需要付费等。
⭕️ LLM 响应异常 Connection error,也就是AI不能回复,国内环境无法访问 AI 服务的情况,需要魔法,本文只建议更换使用国内LLM (Moonshot、零一万物、通义千问等)。
⭕️ LLM 响应异常 404 The model xxx does not exist,意为该模型不存在或不可用,基本就是没权限要付费那种,建议切换到其他模型。
⭕️ LLM 响应异常,401 Invalid Authentication, 404 基本都是环境变量中的API_KEY 无效。检查是否能正常使用,以及对应环境变量是否生效。
⭕️ LLM 响应异常,404 Not Found,可能代理 IP 被 Cloudflare 风控,可尝试切换节点。或者把环境变量的 HTTP_PROXY 设置成空字符串 HTTP_PROXY='' 关闭代理(仅适用于国产大模型)。
无AI回答,但是后台日志有文字信息输出
这与小爱音箱的型号有关,请到米家产品库查看参数并修改:
ttsCommand: [5, 1],
// 设备唤醒指令
wakeUpCommand: [5, 3],
// 查询是否在播放中指令
// playingCommand: [3, 1, 1], // 默认无需配置此参数,查询播放状态异常时再尝试开启
米家产品库地址请在图中自取。

如果出现播放错误,比如播放长句的时候播不完、戛然而止,可修改第三个变量。

是否支持多个小爱音箱
可部署多个Docker,分别绑定不同的小爱音箱。
是否需要同一局域网
不需要。MiGPT 调用 MIoT 云端接口,可在任意设备或服务器上运行,无需和小爱音箱在同一局域网下。
重设小爱人设
可通过语音设置。
小爱:小爱同学,你是 xxx,你 xxx
你自己:小爱同学,我是 xxx,我 xxx
更多问题请至项目查看或提出issues,可以给作者点点star。
以上就是本次分享的全部内容,如果你觉得不错,别忘了三连支持~后续我还会持续分享各类教程以及有趣好玩的项目。
感谢观看,本文完。

dongzhiks
校验提示文案
值友1562869134
先后试了不同的ai。。都是一样的问题!!
后来换了openai,可以肯定的是我的openai的api没问题的。那这是怎么回事啊。。。。。
校验提示文案
子悠君还是忽悠君
url: 'file:///app/.migpt.js
Code:'ERR MODULE NOT FOUND'
at link(node:internal/modules/esm/module job:86:36){at ModuleWrap.(node:internal/modules/esm/module_job:87:39)at ModuleLoader,getModuleJob (node:internal/modules/esm/loader:227:38)at ModuleLoader,resolve (node:internal/modules/esm/loader:352:25)at ModuleLoader,defaultResolve (node:internal/modules/esm/loader:383:12)at defaultResolve (node:internal/modules/esm/resolve:1157:11)at moduleResolve (node:internal/modules/esm/resolve:933:10)at finalizeResolution (node:internal/modules/esm/resolve:265:11)ErrOr [ERR MODULE NOT FOUND]: Cannot find module '/app/.migpt,is' imported from /app/app.js
throw neW ERR MODULE NOT FOUND(node:internal/modules/esm/resolve:265
> node ./app.js
> mi-gpt@4.2.0 start
大哥,请问一下这个报错怎么处理?
校验提示文案
雨夜俯窗
校验提示文案
watsons
校验提示文案
值友1562869134
还有Groq注册不了,显示地址被ban了。。。。
挂梯子也不行。。。不知道啥情况。。。。
校验提示文案
静寞的咖啡
校验提示文案
斑马go
校验提示文案
山里的猫
校验提示文案
御用闲人2013
校验提示文案
gxlzlu
校验提示文案
万事无忧
校验提示文案
go0517
校验提示文案
lipwah
校验提示文案
弹壳无伤
校验提示文案
汉明
校验提示文案
CedarCYS
校验提示文案
依然的阿Q
校验提示文案
十六薙夜血
校验提示文案
随风而行之之
校验提示文案
克莱登校董
校验提示文案
gxlzlu
校验提示文案
gxlzlu
校验提示文案
零点LEON
校验提示文案
欣欣的
校验提示文案
xabutone
docker: Error response from daemon: Get "去看看": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
求指教,谢谢
校验提示文案
dongzhiks
校验提示文案
好物值得199410
校验提示文案
子悠君还是忽悠君
url: 'file:///app/.migpt.js
Code:'ERR MODULE NOT FOUND'
at link(node:internal/modules/esm/module job:86:36){at ModuleWrap.(node:internal/modules/esm/module_job:87:39)at ModuleLoader,getModuleJob (node:internal/modules/esm/loader:227:38)at ModuleLoader,resolve (node:internal/modules/esm/loader:352:25)at ModuleLoader,defaultResolve (node:internal/modules/esm/loader:383:12)at defaultResolve (node:internal/modules/esm/resolve:1157:11)at moduleResolve (node:internal/modules/esm/resolve:933:10)at finalizeResolution (node:internal/modules/esm/resolve:265:11)ErrOr [ERR MODULE NOT FOUND]: Cannot find module '/app/.migpt,is' imported from /app/app.js
throw neW ERR MODULE NOT FOUND(node:internal/modules/esm/resolve:265
> node ./app.js
> mi-gpt@4.2.0 start
大哥,请问一下这个报错怎么处理?
校验提示文案
卷卷毛de夏天
校验提示文案
值友1436896260
校验提示文案
可乐狗狗
校验提示文案
值友8077749908
校验提示文案
gatsby27
校验提示文案
北京大人
校验提示文案
go0517
校验提示文案
值友4750509775
请问是什么原因?
校验提示文案
万事无忧
校验提示文案
jack228
校验提示文案
随风而行之之
校验提示文案