现在人工智能依旧火爆,大模型层出不穷,一直很想将ai和语音交互结合起来,一开始打算入手小爱音箱通过开源项目xiaogpt玩一玩,经过分析它的实现原理大致如下:
1、通过小米service轮询小爱对话记录
2、将对话发给chatgpt,通过小米service将小爱设为mute
3、chatgpt回复后通过小米service调用小爱tts播报内容
整个过程相当于做了拦截处理,虽能实现,但是不够优雅,其核心流程掌控在小米手中,所以放弃这种方式。
还有一个开源项目wukong_robot,它具备定制能力,完全可以自己编码实现整套语音控制流程,非常自由,而且它的内部功能已经很完善了,热衷开源的我当然会在此基础上定制我的功能。
1、首先运行该项目需要解决的问题是python版本兼容问题,我的版本是3.10+,所以运行报错,经过分析得出是watchdog版本太旧了,升级成最新的就好。
2、其次我之前看到达摩院出了一个FunAsr语音识别模型,想集成一下,但是wukong_robot的FunAsr功能是直接加载模型运行,这种方式对我来说不太灵活,我加入了FunAsr的wss集成方式,你可以在任意一台服务器部署FunAsr服务,官方的部署方式需要docker运行后再进入容器执行服务,比较麻烦,针对这个,我编写了Dockerfile脚本,让容器运行自动启动服务,有需要去我github下载:https://github.com/lategege/FunAsr
3、需要可以接入chatglm3-6b,因为这个模型在我另一台服务器中已经部署好了,官方demo是支持openai的api部署的,但是wukong_robot的openai模块有点小问题,新版的openai库去除了proxy方法,所以需要稍微改动下,还有一些地方要做小改动才能兼容chatglm3-6b的openai接口,大体上差不多。
针对上面的改造我已经提交到我的github仓库:https://github.com/lategege/wukong-robot
完成上面改造后我还写了插件接入了nastool 通过语音来下载电影等,这部分就不放出来了,就是个小玩意,自此,我发现这个项目中唯一闭源的一块是baidu unit ,它作为NLU存在,事实上有它我们可以更方便定制控制,后面可以将它替换为longchain,从而实现整个语音机器人链条全部使用开源技术,不受制于任何一家公司。