家里闲置了一个小米 mini 音箱,打算接入大模型试试,,从“人工智障”秒变学霸。
🔊 支持的小爱音箱型号
✅ 完美运行
已知可以完美运行 MiGPT
的小爱音箱型号有:
名称 | 型号 | ttsCommand | wakeUpCommand | playingCommand | streamResponse | 反馈来源 |
---|---|---|---|---|---|---|
小爱音箱 Pro | LX06 | [5, 1] | [5, 3] | - | true | @idootop |
小爱音箱 mini | LX01 | [5, 1] | [5, 2] | [4, 1, 1] | true | @gsscsd |
小爱音箱 Play(2019 款) | LX05 | [5, 1] | [5, 3] | [3, 1, 1] | true | @wt666666 |
小爱音箱 万能遥控版 | LX5A | [5, 1] | [5, 3] | - | true | @imhsz |
小米 AI 音箱 | S12 | [5, 1] | [5, 3] | - | true | 微信: CMSJ |
小米 AI 音箱(第二代) | L15A | [7, 3] | [7, 1] | [3, 1, 1] | true | 微信: 龙之广 |
小爱智能家庭屏 10 | X10A | [7, 3] | [7, 1] | - | true | @IDarkBoss |
Xiaomi Sound Pro | L17A | [7, 3] | [7, 1] | - | true | 微信: eof |
🚗 正常运行
部分机型的 MIoT 接口不支持查询设备播放状态或查询状态异常,比如小米音箱 Play 增强版(L05C),将会导致
MiGPT
部分功能异常,无法使用连续对话等,此时需要关闭streamResponse
。相关 issue
可以正常运行 MiGPT
,但不支持连续对话的小爱音箱型号有:
名称 | 型号 | ttsCommand | wakeUpCommand | playingCommand | streamResponse | 反馈来源 |
---|---|---|---|---|---|---|
小爱音箱 | L06A | [5, 1] | [5, 2] | - | false | @zhanglc |
小爱音箱 Play | L05B | [5, 3] | [5, 1] | - | false | @BiuBiu2323 |
小米小爱音箱 Play 增强版 | L05C | [5, 3] | [5, 1] | - | false | @lyddias |
Xiaomi 智能家庭屏 6 | X6A | [7, 3] | [7, 1] | - | false | @Hongwing |
Redmi 小爱触屏音箱 Pro 8 英寸 | X08E | [7, 3] | [7, 1] | - | false | @shangjiyu |
小爱音箱 Art | L09A | [3, 1] | [3, 2] | - | false | @zwsn |
小爱触屏音箱 | LX04 | [5, 1] | [5, 2] | - | false | @ilovesouthpark |
❌ 不支持
完全不支持 MiGPT
的小爱音箱型号有:
名称 | 型号 | 反馈来源 |
---|---|---|
小米小爱音箱 HD | SM4 | @romantech |
小米小爱蓝牙音箱随身版 | - | 微信: 明天 |
🔥 型号分享
如果你是其他型号的小爱音箱,欢迎把你的型号和配置参数分享给大家,分享格式如下:
- 名称:小爱音箱 Pro
- 型号:LX06
- ttsCommand:[5, 1]
- wakeUpCommand:[5, 3]
- playingCommand:未设置
- streamResponse:true(支持连续对话)
环境配置
- Python 3.8以上的版本 ( https://www.python.org/)
- nodeJS (https://nodejs.org/zh-cn)
准备小米音箱
查看小米音箱绑定的名称
我的就是小爱音箱mini
,
查看小米音箱的型号
我的型号是LX01
查看小米账号
小爱音箱 APP-->我-->点击头像-->查看小米账号-->我的是 167857068
综上得到小米音箱的名称,型号,小米账号
申请大模型的API接口
注册silicon
silicon注册和使用地址: https://cloud.siliconflow.cn/i/bp8xtUdh
邀请码:bp8xtUdh(谢谢支持)
新建API密钥
注册登录后,单击左边栏的API密钥,单击新建API密钥
点击密钥即可复制
我们可以调用千问2.5的这个模型,满足日常对话完全没有问题,并且是免费调用的
mi-gpt项目
下载 mi-gpt 项目
git clone https://github.com/idootop/mi-gpt.git
创建配置文件
cd mi-gpt
mv .env.example .env
mv .migpt.example.js .migpt.js
配置.env 文件
OPENAI_MODEL = Qwen/Qwen2.5-7B-Instruct #这个免费
OPENAI_API_KEY= sk-xxxxxxxx # 这里填写第三步中申请的API密钥即可
OPENAI_BASE_URL= https://api.siliconflow.cn/v1
配置.migpt.js文件
修改小米账号ID,密码,设备名称,在93行
// 小米 ID
userId: "167857068", // 注意:不是手机号或邮箱,请在「个人信息」-「小米 ID」查看
// 小米账号密码
password: "123456",
// 小爱音箱 DID 或在米家中设置的名称
did: "小爱音箱mini", // 注意空格、大小写和错别字(音响 👉 音箱)
修改MIoT设备指令,在127行,具体值看开头表格
// TTS 指令,请到 https://home.miot-spec.com 查询具体指令
ttsCommand: [5, 1],
// 设备唤醒指令,请到 https://home.miot-spec.com 查询具体指令
wakeUpCommand: [5, 2],
// 查询是否在播放中指令,请到 https://home.miot-spec.com 查询具体指令
playingCommand: [4, 1, 1], // 默认无需配置此参数,查询播放状态异常时再尝试开启
修改人设,第4-16行,人物提示词,可以先跑通再改
// 小爱音箱扮演角色的简介
const botProfile = `
性别:女
性格:乖巧可爱
爱好:喜欢搞怪,爱吃醋,爱撒娇,喜欢思考哲学问题,很爱干净,特别喜欢挑逗老公。
`.trim();
// 小爱音箱主人(你)的简介
const masterProfile = `
性别:男
性格:善良正直
其他:是个程序员,总是舍己为人,是小丽丽的老公。
`.trim();
回复唤醒指令,更改姓名 ,第104-119行,,让名字一致,可以先跑通再改
// 当消息以下面的关键词开头时,会调用 AI 来回复消息
callAIKeywords: ["请", "你", "小丽丽"],
// 当消息以下面的关键词开头时,会进入 AI 唤醒状态
wakeUpKeywords: ["打开", "进入", "召唤"],
// 当消息以下面的关键词开头时,会退出 AI 唤醒状态
exitKeywords: ["关闭", "退出", "再见"],
// 进入 AI 模式的欢迎语
onEnterAI: ["我是小丽丽,又见到老公啦,太开心了"], // 设为空数组时可关闭提示语
// 退出 AI 模式的提示语
onExitAI: ["小丽丽先回去咯"], // 为空时可关闭提示语
// AI 开始回答时的提示语
onAIAsking: [], // 为空时可关闭提示语
// AI 结束回答时的提示语
onAIReplied: [], // 为空时可关闭提示语
// AI 回答异常时的提示语
onAIError: ["啊哦,出错了,请稍后再试吧!"], // 为空时可关闭提示语
打开连续对话功能,第149-156行,是否支持请根据官方文档自行判断
// 是否启用连续对话功能,部分小爱音箱型号无法查询到正确的播放状态,需要关闭连续对话
streamResponse: true,
// 连续对话时,无响应多久后自动退出
exitKeepAliveAfter: 30, // 默认 30 秒,建议不要超过 1 分钟
// 连续对话时,下发 TTS 指令多长时间后开始检测设备播放状态(默认 3 秒)
checkTTSStatusAfter: 3, // 当小爱长文本回复被过早中断时,可尝试调大该值
// 连续对话时,播放状态检测间隔(单位毫秒,最低 500 毫秒,默认 1 秒)
checkInterval: 1000, // 调小此值可以降低小爱回复之间的停顿感,请酌情调节
这里一般只需要把连续对话功能改为true或false,如果设备支持可以改为true
安装依赖并运行
pnpm install
pnpm build
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2024/10/24 00:27