最近越来越觉得家里的小爱音箱有点蠢,买的时候号称升级为“超级小爱”了,实际用起来比起以前确实有提升,但是非常有限。于是想着给小爱音箱升级一下,接入 AI 大模型。小爱音箱接入大模型的方案网上不少,我个人是不喜欢刷机的,最后选了 xiaogpt 这个开源项目。
先说原理。xiaogpt 不用刷机,原理是使用小米账号登录小米云,轮询对话记录接口。你在唤醒小爱的时候,xiaogpt 在云端抓到关键词就会把它发给大模型,拿到回答后再发回小爱音箱。所以它出现了一个毛病:小爱的应答速度很快,在你唤醒后会先抢答个一两秒,然后才会被大模型发回来的回答截断,不过无伤大雅。目前我是没有找到解决方法,除非刷机。
一、海外服务器遇到小米风控
我的服务器在海外,在登录小米账号的时候就卡住了:小米判定海外 IP 登录有风险,返回一个安全验证,要短信验证码,还要确认跨境协议。登录成功之后把 passToken 提出来,之后都拿这个 token 直连,不再走密码登录,风控就不触发了。目前不清楚小米的 token 过期时间,先用着。
二、音箱太新,项目不认识
我这款音箱 OH2P,xiaogpt 的机型表里没有它,只能给它补了一行配置,这类新机型的 TTS 要走音乐播放接口,原版代码的白名单里没有 OH2P,得自己加上。
三、连通 agent
xiaogpt 本身只是一问一答的模式,我在中间加了一层,把它的回答接口指定到 Hermes 上。
我设定的关键词是“召唤hermes”,平时不影响小爱音箱正常使用,当我需要小爱音箱执行一些复杂任务的时候,在唤醒小爱以后说“召唤 hermes”,这样小爱音箱就会被云端接管,问题投进 Hermes。
四、主动播报
光能问答还不够,还得让小爱音箱主动开口。我在服务器上跑了一个本地气象灾害预警信息的任务,当有新的预警就会推给小爱音箱进行主动播报。同理,也可以把一些你觉得重要的提醒,推送到小爱音箱进行播报,比如快递派送、待办日程、服务器状况警告等。
五、真实感受
延迟是最大的短板,指望对答如流,那得刷机,再换个更快的接口。不过我的目的是让小爱执行复杂任务,所以延迟可以接受,平时使用不“召唤”就可以了。
基本上就这样了,更多的功能扩展暂时还没有思路。记得我好像还有一些洋垃圾,ESP32,摄像头,麦克风之类的,但是找不到了。等有空的时候翻出来,想想还能扩展点什么功能。