贾维斯虚拟智能管家 像贾维斯一样的智能管家
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
继上文《ChatGPT+小爱音响能擦出什么火花?》可以看出大伙对AI+硬件的结合十分感兴趣,但上文是针对市场智能音响的AI植入,底层是通过轮询拦截,算是hack兼容,虽然官方有提供开发者接口,也免不了有许多局限性(比如得通过特定指令唤醒),不利于我们去探索研究。
那不如我们自己开发一个智能音响?甚至尝试去实现我们之前的讨论“给GPT4一个完善的硬件环境,比如接一个摄像头,周围景象根据摄像头的图片帧数据流识别内容,转换成肢体语言,操控硬件肢体”。这样仔细想想,是不是有点类似漫威钢铁侠中贾维斯的味道?
因此需求确定了,尝试做一个虚拟管家。让电脑成为一个贾维斯,具备智能音响的所有功能的同时,更AI化:「充分利用电脑强大的性能(本地操作文件、摄像头及语音设备、请求接口能力、启动各种服务做联动等等),接入ChatGPT做大脑中枢进行控制,实现类贾维斯效果。」
有幸发现了@wzpan开发的一个开源智能音响项目: wukong-robot,已获4.8k star,含有的功能十分强大:
本文即基于此做了探索实践,研究智能音响的效果以及局限性。 可按照文档指示运行项目。
安装、配置以及功能示例都十分齐全。
? 相关项目:
- 频道机器人联动wukong:
- 小爱音响联动wukong:
- VITS AI变声:
- 插件:
?
- 效果 实现了调用GPT API进行流式对话。
- 实现过程 只需简单配置下调用的问答机器人接口。
之后配置apikey即可。
- 效果
- 实现过程 可直接在页面右下角进行语音交互。
- 效果 可以随时随地像小爱音响一样,通过关键词snowboy唤醒,进行语音交互,而且唤醒词可以更改,也可调整敏感度,并且可以进行训练提升唤醒成功率和准确率。
- 实现过程 选择唤醒的实现方案detector,以及灵敏度sensitivity。
# 热词唤醒机制 # 可选值: # porcupine # snowboy detector: snowboy # 灵敏度 sensitivity: 1 # snowboy 离线唤醒 # 建议使用 snowboy-seasalt (【【网址】】/rhasspy/snowboy-seasalt) # 使用相同环境录入你的语音,以提升唤醒成功率和准确率 hotword: 'snowboy.umdl' # 唤醒词模型,如要自定义请放到 $HOME/.wukong 目录中 silent_threshold: 20 # 判断为静音的阈值。环境比较吵杂的地方可以适当调大 recording_timeout: 15 # 录制的语音最大长度(秒) snowboy_token: your_token # 你的token,用于 train 命令训练语音
以下是训练唤醒词的工程项目,可以录入自己的语音训练模型。
- 效果 也可直接提示进入极客模式,即可无需唤醒词对话,犹如真人对话。比ChatGPT接入小爱音箱后让其进入无需唤醒词模式更加丝滑些,不会掺杂小爱同学的回答了。同样的,让ChatGPT扮演角色再进行对话,比如让他作为一名英语老师教我学英语之类的,可太香了。 TODO:[极客模式.mp4]
- 实现过程 提示进入极客模式。
- 效果 TODO: 【小爱联动拍照】
- 实现过程 配置enable为true。
# 拍照 # 需接入摄像头才能使用 camera: enable: true
- 效果 TODO:【播放本地音乐】
- 实现过程 配置本地音乐路径,并且在对应路径存放mp3音乐文件。
## 本地音乐插件 LocalPlayer: path: "/Users/echo/Music" # 本地音乐存放路径
- 效果 可以直接询问地方天气,会调用天气接口返回数据。完美实现小爱同学的查询天气功能。
- 实现过程 前往心知天气官网,可免费开通天气接口,填充对应key即可调用。
# 天气 # 使用心知天气的接口 # https://www.seniverse.com/ 【【微信】】: enable: true key: ''
key即为下图的私钥。
- 效果 可以实现在QQ中发送给频道机器人,会返回wukong相同的信息,即实现远程控制。
- 实现过程 克隆项目:,进行配置后运行。
# 后台管理端的地址 host: 'http://' // 输入自己的ip地址 # 后台管理端的端口 port: 5001 # 后台管理端的验证码 # 需与wukong的 config.yml 里的设置相同 【【微信】】: '' # 频道机器人token bot: appid: "" token: ""
频道机器人token可用私域机器人,直接邮箱注册申请: appid和token即为下图所示。
直接在开发菜单中配置指令即可。
之后添加到自己的频道里即可艾特其进行对话。
可直接对话或者发送快捷指令,远程控制给我们的贾维斯控制插上了翅膀!
QQ频道机器人具体说明文档为:
- 效果 智能音响最重要的功能自然是控制智能家居啦,得益于homeassistant,不需要树莓派我们也可以控制家居设备,wukong通过接口调用实现控制homeassistant控制风扇开关: TODO:【智能家居】
- 实现过程 电脑借助homeassistant实现控制,还需要支持wukong语音交互控制。 一个方案是电脑安装【【微信】】(即为虚拟机),之后在虚拟机中安装homeassistant,才能有hass插件(有对应的网络接口api),wukong则可通过接口api实现控制homeassistant控制智能家居。
安装homeassistant 【【微信】】 linux镜像:
【【微信】】 安装镜像教程:
运行无误后在mac浏览器地址栏输入:
创建用户账户,设置家庭相关信息。(可能因为网络原因初始化比较久,需耐心等待10分钟左右) 进入系统后,选择左下角的「配置」,接着选择「设备和服务」。
选择集成页面右下角的「添加集成」。
在列表中找到「Xiaomi Miio」。
设置账号后,米家的设备会自动同步到HomeAssistant
登录小米账户后,在列表中可以看到当前账户下绑定的米家设备,添加自己要绑定的设备
之后便可以在开发者工具的服务里面找到对应的服务啦
在wukong配置对应的服务指令,即可通过hass实现调用。
原文档还需要自己写hass脚本,本人简化成了通过配置动态匹配小米插件Xiaomi Miio安装后内置的服务(比如fan.turn_off)来实现调用。
hass: url: "http://127.0.0.1" #切记加上http://,ip或者域名为你的HomeAssistant的主机 port: "8123" # 端口为你的HomeAssistant的端口和网页端口一样 key: "Bearer XXXXXXXXXX" # 密钥,注意 Bearer 不可少 【【微信】】s:[ { 【【微信】】: 'fan/turn_off', # 对应调用的服务,用/替代. entity_id: 'fan.feng_shan', # 实体 data:{entity_id: 'fan.feng_shan'}# 传参,可在homeassistant中可视化调用确定参数后配置在这里 }] patterns: - ".*开.*灯" - ".*关.*灯" - ".*灯.*开" - ".*灯.*关" - ".*水质.*" - ".*开.*风扇" - ".*关.*风扇" - ".*风扇.*开" - ".*风扇.*关"
可克隆本人项目应用Hass.py文件的改动到根目录的.wukong/contrib/Hass.py中。
- 效果 可以自行训练音色对话,配合上角色设定,极客模式对话,感觉就很到位了! TODO:【ai变声】
- 实现过程 配置tts朗读为vits
# 语音合成服务配置 # 可选值: # han-tts - HanTTS # baidu-tts - 百度语音合成 # xunfei-tts - 讯飞语音合成 # ali-tts - 阿里语音合成 # tencent-tts - 腾讯云语音合成 # azure-tts - 微软语音合成 # mac-tts - macOS 系统自带TTS(mac 系统推荐) # edge-tts - 基于 Edge 的 TTS(推荐) # VITS - 基于 VITS 的AI语音合成 【【微信】】: VITS
之后启动服务器即可,可直接用本人运行的项目:。
# 基于 VITS 的AI语音合成 VITS: # 需要自行搭建【【微信】】服务器:【【网址】】/Artrajz/【【微信】】 # ser【【微信】】: 服务器url(格式为http://{IP地址}:{端口},不带最后的斜杠),如http://127.0.0.1:23456 # api_key: 若服务器配置了API Key,在此填入 # speaker_id: 说话人ID,由所使用的模型决定 # length: 调节语音长度,相当于调节语速,该数值越大语速越慢。 # noise: 噪声 # noisew: 噪声偏差 # max: 分段阈值,按标点符号分段,加起来大于max时为一段文本。max<=0表示不分段。 # timeout: 响应超时时间(秒),根据【【微信】】服务器性能不同配置合理的超时时间。 ser【【微信】】: "http://127.0.0.1:23456" api_key: "api_key" speaker_id: 0 length: 1.0 noise: 0.667 noisew: 0.8 max: 50 timeout: 60
model是先从hugging face拿现成的:,下载pth文件后放入Model/Nene_Nanami_Rong_Tang/中即可,也可参考项目自己训练。
- 效果 实现小爱询问wukong进行联动。跟之前实践的小爱音响注入ChatGPT效果一致,就多了个询问悟空的唤醒词。 TODO:【小爱联动拍照】
- 实现过程 克隆运行项目:,之后跟之前小爱音箱接入ChatGPT的配置基本类似。
HARDWARE: "L06A" # 你的小爱音箱设备型号(贴在小爱音箱底部) MI_USER: "" # 你的米家账号 【【微信】】: "" # 你的米家密码 WUKONG_HOST: '127.0.0.1' # wukong-robot 的服务地址 WUKONG_PORT: '5001' # wukong-robot 的端口号 【【微信】】: "" # 你的 wukong-robot 【【微信】】 KEY_WORD: "问下悟空" # 小爱联动wukong的触发词
- 效果 可执行人脸、声音识别情绪变化,自动调用api,如天气热调用风扇、心情不好给一首甜歌等等,便有贾维斯的味道了!以下演示自动调用发邮箱api:
- 实现过程 配置传入函数回调以及指定模型。
# 参数指定将生成文本的模型类型。目前支持 gpt-3.5-turbo 和 gpt-3.5-turbo-0301 两种选择 #model: 'gpt-3.5-turbo' model: 'gpt-3.5-turbo-0613' # 函数调用,model: 'gpt-3.5-turbo-0613'才支持 functions:[ { "name": "searchMusic", "【【淘密令】】": "通过用户给出的英文关键字,搜索相关音乐", "【【淘密令】】":{ "type": "object", "properties":{ "value":{ "type": "string", "default": "快乐", "【【淘密令】】": "分析用户输入的文本,得出用于搜索音乐的关键字" } }, "【【淘密令】】":[ "value" ] } }, { "name": "searchWheather", "【【淘密令】】": "通过传递地区名,返回天气数据", "【【淘密令】】":{ "type": "object", "properties":{ "city":{ "type": "string", "default": "深圳", "【【淘密令】】": "城市关键字,如果没法得到城市关键字,默认为“深圳”" }, "province":{ "type": "string", "default": "广东", "【【淘密令】】": "省份关键字,如果没法得到省份关键字,默认为“广东”" } }, "【【淘密令】】":[ "city" ] } }, ]
返回具体函数,之后再进一步调用及编写函数体即可。
以上的功能展示即为其优点。因为基于电脑实现,因此能够利用电脑强大的性能,实践下来也发现其软件(控制本地音乐播放)、硬件(控制摄像头)、接口请求(请求天气)、本地项目联动(AI变声)以及智能家居控制样样齐全,因此配合上ChatGPT这个大脑中枢,以及函数调用功能,虚拟管家贾维斯已经无所不能了~
可试想类似钢铁侠那样,配合机械臂(可本地启动服务开放控制api),以及电脑摄像头识别人的动作情绪(同样类似频道机器人开放webhook api供wukong调用),即可做出一系列管家服务,未来是不是已来?
ps:函数回调功能给ChatGPT接入各项服务插上了翅膀,返回的数据更可控了,实现类似AutoGPT的那种拆解任务分别执行也更方便了,有助于ChatGPT联合各项服务做联动
虽然我们已经通过集成了多种功能和服务,实现了一个类似于虚拟管家贾维斯的智能音响,但在实践过程中,我们还是发现了一些缺点和问题需要解决:
- 唤醒词识别精度需要提升 在当前的项目中,唤醒词的识别还有待提升。虽然提供了自行训练的功能,但是在现实使用中,唤醒词的识别准确度和成功率并不能达到小爱音响的水平。这就意味着在使用过程中,可能会存在误唤醒或者无法唤醒的情况,影响用户体验。
- 配置过程较为繁琐 虽然我们提供了详细的配置说明和步骤,但是在实际操作过程中,用户可能还是会觉得配置过程较为繁琐。特别是在实现远程控制和AI变声等功能时,需要用户进行一些额外的配置操作,这可能会对一些非技术背景的用户造成一定的困扰。
- 依赖硬件设备和网络环境 这个智能音响的功能实现,很大程度上依赖于硬件设备和网络环境。例如,摄像头、音响设备、智能家居设备等,如果用户的硬件设备不支持或者网络环境不稳定,可能会影响到智能音响的正常运行。
- 功能集成和联动需要进一步优化 虽然我们已经实现了多种功能的集成和联动,但是在实际使用过程中,可能还会存在一些问题。例如,各个功能之间的联动可能还不够顺畅,用户在使用过程中可能需要进行多次操作才能实现某个功能。这就需要我们在后续的开发中,进一步优化功能的集成和联动,提升用户体验。
总的来说,虽然这个智能音响在功能上已经相当丰富,但是在实际使用过程中,还存在一些需要改进和优化的地方。我们需要在后续的开发中,根据用户的反馈和需求,不断进行优化和改进,提供更好的用户体验。
- 更强大的计算能力 贾维斯基于电脑实现,可以充分利用电脑强大的性能,无论是控制本地音乐播放、控制摄像头、请求接口,还是启动各种服务进行联动,都可以实现。这是普通智能音响无法比拟的。
- 更丰富的功能 贾维斯集成了多种功能和服务,包括音乐播放、摄像头控制、天气查询、本地项目联动等。配合上ChatGPT这个大脑中枢,以及函数调用功能,实现了类似于虚拟管家的效果。而普通的智能音响功能相对较少,主要集中在音乐播放、天气查询等基础功能上。
- 更个性化的体验 贾维斯可以自行训练音色对话,配合角色设定,实现个性化的AI变声。而普通的智能音响通常只有固定的音色和语调。
- 更主动的智能识别 通过人脸、声音识别情绪变化,贾维斯可以主动调用API,例如,天气热自动调用风扇,心情不好自动播放一首甜歌等。这种主动交互的方式,让贾维斯更像一个真正的虚拟管家。
- 更广泛的应用场景 贾维斯可以应用在家庭生活、办公环境、教育培训、娱乐休闲等多种场景,其应用范围和深度都超过了普通的智能音响。
- 线下活动可以直接外接显示屏,让用户跟虚拟人对话,虚拟人可以根据用户形态控制硬件等交互,更富形象化
- 家庭中作为虚拟管家存在,比智能音响更人性化,且具备主动调用能力,不用预先配置繁琐的传感器等
总的来说,贾维斯在计算能力、功能丰富性、个性化体验、智能识别以及应用场景等方面,都优于普通的智能音响,为用户提供了更高级、更智能的体验。
虽然该方案功能强大,但还存在一些值得改进的空间:
- 唤醒词识别初始模型存在误识别、自唤醒、识别率低等问题,需要进行一定的训练才能到达比较理想的状态。
将语音训练配置化,或者预置更多训练好的识别模型,同时也提供更多的音色模型,现在主要面向开发者训练成本、门槛会比较高。
- 配置流程可进一步简化,研究让非技术人员也能轻松上手使用。
可以设计一个简易的图形界面,通过可视化的流程引导用户配置,无需手动修改配置文件。也可以实现一键导入配置的功能。
- 功能模块之间的串联可以更加紧密,提升使用流畅度。可研究基于任务的管道工作流,实现场景化联动(比如利用ChatGPT函数调用,借助AutoGPT思想)。
- 可探索基于自监督的方式实现智能识别,减少手动配置需求。
- 未来可考虑与更多硬件和外部系统对接,拓展应用场景。如服务机器人等。
可构思一下该虚拟智能助手的未来展望:
- 功能扩展 可以继续扩展它的功能模块,实现更复杂的场景化交互。例如结合计算机视觉技术,实现人脸识别和情感分析,让助手能够主动关心用户心情。或集成语音合成,实现更自然的语音交互。
- 接入更多设备 可以研究让助手支持连接和控制更多类型的智能硬件设备,如服务机器人、智能门锁、健康监测设备等,拓展其应用场景。
项目作者其实也尝试了挺多不同设备的接入,比如行空板、树莓派、脑机、siri、Google AIY 【【微信】】等等:
- 协同多个系统协作 可以探索让虚拟助手与其他系统进行协同,例如与日程管理应用结合,实现智能提醒日程事项等功能。
- 提升自主学习能力 通过引入增强学习等技术,使虚拟助手从交互中不断学习和进步,减少人工编码,实现更高的智能化。
- 小批量应用实践 可以在校园、办公场所等进行小规模的部署应用,收集用户反馈意见,指导未来产品路线。
- 推进商业化发展 在功能和性能足够成熟后,可以考虑将其产品化,面向智能家居、个人助理等方向推进商业化发展。
GPT刚出来的时候讨论硬件的结合就已经令人激动人心,因此看到此项目的时候自己的兴趣也是十分浓厚,业余实现的时候也动力满满,自己动手实现想法是真的很快乐~
通过这个项目,我实现了一个集语音交互、智能控制等多种功能的虚拟智能助手。整个实现过程充满乐趣,同时也让我对智能音箱、语音交互等技术有了更深入的理解。
虽然这个虚拟助手还有很多不完善之处,比如唤醒词识别率不高、功能模块之间联系不够紧密等。不过通过这个实践exercise,我收获了宝贵的经验(比如频道机器人的联动远程控制、智能家居homeassistant的控制、AI变声、函数调用等等),相信对之后的业务工作会有一定的启发、联想。
计划在未来继续增强它的智能识别和交互能力,实现像贾维斯那样智能、人性化的助手。在此
储物柜宜家置物架 宜家墙壁货架置物架
作者:差不多玩笑
我是兴趣一大堆的差不多玩笑
有差吗?!
我一直没有买那种家具店组装好的、一体的电脑桌,就一张大平板桌上放上电脑。为了主机和音箱不在桌面占用空间也不放地方容易被自己踢到,把家里闲置的宜家置物架利用了起来。
之前放在主卧给老婆摆放书籍和一些零碎物件的,后面养绿箩的时候也用上了,刚好一层放一盆。金属的,浇水的时候还是不敢太放肆,换了塑料的支架放绿箩,这个置物架就闲置下来了。
刚好,电脑桌换地方,就把这个置物架用上了
最下层防止电脑主机,各种电源线都可以隐藏在下面,用扎带捆起来,不裸露太多线在外面。
第二层,放了音响。
平时常用的两个笔记本也放在音响上。还可以放一些零碎的小物件。
第三层放置的日历。这是我的生产力工具。
最上面一层,放置了几个数码产品的盒子。里面还有一些零部件。
无法增加平面的横向空间,那就只能立体空间。
我是兴趣一大堆的差不多玩笑
码文不易,欢迎点赞,留言,打赏,关注,谢谢
查看文章精彩评论,请前往什么值得买进行阅读互动