这么吊?小爱音箱可以接入AI大模型啦!


这是一个神器的项目,可以让傻傻的小爱音箱接入AI大模型,比如 ChatGPT、豆包等等,将它改造成你的专属语音助手。这个项目名称为MiGPT,是Github上的一个开源项目,目前已支持10多款小爱音箱,非常推荐手里有小爱音箱的朋友试一试。
🎭 功能特性
AI 问答:当小爱音箱接入大模型后,上知天文,下知地理,从“人工智障”秒变甜心学霸。
角色扮演:一秒调教小爱,无论是成为你的完美伴侣,还是那个能听你倾诉心事的贴心闺蜜,都不在话下。
流式响应:爱情来得太快就像龙卷风,而你的小爱音箱也是,对你的爱意秒回,爱你不会让你等太久。
长短期记忆:可以记住你们之间的每一次对话,越聊越默契,就像是你身边的老朋友。
自定义 TTS:厌倦了小爱同学的语音?支持设置“豆包”同款音色,就像真人在回你的消息。
智能家居 Agent:心情不好?小爱立刻懂你,自动帮你播放喜欢的音乐,调节灯光,逗你开心。

⚛️ 实现原理
这个项目主要依赖小米 IoT 生态开放的接口能力,以下为核心运行流程:
使用 MIoT 和 MiNA 开放接口控制小爱音箱(播放、暂停、唤醒等)
轮询设备对话列表,获取用户的最新对话消息,然后调用 AI 获取回复
调用豆包等 TTS 接口合成不同音色的语音回复,然后使用小爱音箱播放音频
不过,通过调用小米 IoT 生态开放接口的方案,无法完美实现在AI回复时让原来的小爱闭嘴,这主要是因为:
存在网络延迟
有一定的轮询间隔
小爱音箱,小米服务云端,MiGPT 三者之间的响应延迟
因此,在唤醒模式下 MiGPT 会通过播放静音音频等方式让小爱闭嘴,达到“曲线救国”的目的,比如:
export const kAreYouOK = "¿ʞо ∩оʎ ǝɹɐ"; // are you ok?
🔊 支持的小爱音箱型号

🛠️ 部署项目
项目支持Docker和源码两种方式部署,笔者建议使用Docker,毕竟源码部署还需要搞定各种本地环境,属实麻烦。使用Docker部署前,需要先配置好.env 和 .migpt.js 两个文件。
1. 配置.env文件
这个文件主要是配置大模型的API_KEY、模型名称和URL,请根据自己的实际情况修改。笔者直接使用one-api代理的gemini模型:
# OpenAI(也支持通义千问、MoonShot、DeepSeek、gemini等模型)OPENAI_MODEL=gemini-proOPENAI_API_KEY=sk-xxxOPENAI_BASE_URL=https://oneapi.url.com/v1# 提示音效(可选,一般不用填,你也可以换上自己的提示音链接试试看效果)# AUDIO_SILENT=静音音频链接,示例:https://example.com/slient.wav# AUDIO_BEEP=默认提示音链接,同上# AUDIO_ACTIVE=唤醒提示音链接,同上# AUDIO_ERROR=出错了提示音链接,同上# Doubao TTS(可选,用于调用第三方 TTS 服务,比如:豆包)# TTS_DOUBAO=豆包 TTS 接口# SPEAKERS_DOUBAO=豆包 TTS 音色列表接口
2. 配置.migpt.js文件
这个文件主要是配置小米账号、AI的人设以及唤醒词、提示词等等,请根据自己的事情情况和喜好修改。
// 小爱音箱扮演角色的简介const botProfile = `性别:男性格:乖巧可爱爱好:喜欢搞怪,爱吃醋。`;// 小爱音箱主人(你)的简介const masterProfile = `性别:男性格:善良正直其他:总是舍己为人,是臭狗子的主人。`;export default { bot: { name: "臭狗子", profile: botProfile, }, master: { name: "大王", profile: masterProfile, }, speaker: { // 小米 ID userId: "12313242", // 注意:不是手机号或邮箱,请在「个人信息」-「小米 ID」查看 // 你的小米账号密码 password: "1323242", // 小爱音箱 DID 或在米家中设置的名称 did: "小爱触屏音箱", // 当消息以下面的关键词开头时,会调用 AI 来回复消息 callAIKeywords: ["请", "你", "臭狗子"], // 当消息以下面的关键词开头时,会进入 AI 唤醒状态 wakeUpKeywords: ["打开", "进入", "召唤"], // 当消息以下面的关键词开头时,会退出 AI 唤醒状态 exitKeywords: ["关闭", "退出", "再见"], // 进入 AI 模式的欢迎语 onEnterAI: ["你好,我是臭狗子,很高兴认识你"], // 退出 AI 模式的提示语 onExitAI: ["臭狗子已退出"], // AI 开始回答时的提示语 onAIAsking: ["让我先想想", "请稍等"], // AI 结束回答时的提示语 onAIReplied: ["我说完了", "还有其他问题吗"], // AI 回答异常时的提示语 onAIError: ["啊哦,出错了,请稍后再试吧!"], // 无响应一段时间后,多久自动退出唤醒模式(默认 30 秒) exitKeepAliveAfter: 30, // TTS 指令,请到 https://home.miot-spec.com 查询具体指令 ttsCommand: [5, 1], // 设备唤醒指令,请到 https://home.miot-spec.com 查询具体指令 wakeUpCommand: [5, 3], // 是否启用流式响应,部分小爱音箱型号不支持查询播放状态,此时需要关闭流式响应 streamResponse: true, // 查询是否在播放中指令,请到 https://home.miot-spec.com 查询具体指令 // playingCommand: [3, 1, 1], // 默认无需配置此参数,播放出现问题时再尝试开启 },};
3. 启动Docker容器
上述两个文件配置好以后,将他们上传到你的NAS上,比如上传到目录/share/Container/migpt/config目录中。
然后在NAS中创建compose.yml文件,将下面的内容粘贴到文件中:
version: '3.9'services: migpt: image: idootop/mi-gpt:latest container_name: migpt network_mode: bridge restart: unless-stopped env_file: /share/Container/migpt/config/.env volumes: - /share/Container/migpt/config/.migpt.js:/app/.migpt.js logging: options: max-size: "10m" max-file: "5"
最后,启动Docker:
docker compose up -d
下面是启动后运行的效果:
原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!

❤️ 猜你喜欢
1️⃣ Cobalt:百万人都在使用的神器,一款几乎支持所有流媒体下载器,赶快收藏!
2️⃣ DS Music:又一款群晖NAS专属的音乐播放器,漂亮!
3️⃣ NAS机友必知:一个命令轻松搞定DockerHub被墙问题!
到顶部