淘姐妹

淘姐妹

贾维斯虚拟智能管家 像贾维斯一样的智能管家

电脑 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】


继上文《ChatGPT+小爱音响能擦出什么火花?》可以看出大伙对AI+硬件的结合十分感兴趣,但上文是针对市场智能音响的AI植入,底层是通过轮询拦截,算是hack兼容,虽然官方有提供开发者接口,也免不了有许多局限性(比如得通过特定指令唤醒),不利于我们去探索研究。

那不如我们自己开发一个智能音响?甚至尝试去实现我们之前的讨论“给GPT4一个完善的硬件环境,比如接一个摄像头,周围景象根据摄像头的图片帧数据流识别内容,转换成肢体语言,操控硬件肢体”。这样仔细想想,是不是有点类似漫威钢铁侠中贾维斯的味道?

因此需求确定了,尝试做一个虚拟管家。让电脑成为一个贾维斯,具备智能音响的所有功能的同时,更AI化:「充分利用电脑强大的性能(本地操作文件、摄像头及语音设备、请求接口能力、启动各种服务做联动等等),接入ChatGPT做大脑中枢进行控制,实现类贾维斯效果。」

有幸发现了@wzpan开发的一个开源智能音响项目: wukong-robot,已获4.8k star,含有的功能十分强大:

本文即基于此做了探索实践,研究智能音响的效果以及局限性。 可按照文档指示运行项目。

安装、配置以及功能示例都十分齐全。

? 相关项目:
  1. 频道机器人联动wukong:
  2. 小爱音响联动wukong:
  3. VITS AI变声:
  4. 插件:

?

  • 效果 实现了调用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联合各项服务做联动

虽然我们已经通过集成了多种功能和服务,实现了一个类似于虚拟管家贾维斯的智能音响,但在实践过程中,我们还是发现了一些缺点和问题需要解决:

  1. 唤醒词识别精度需要提升 在当前的项目中,唤醒词的识别还有待提升。虽然提供了自行训练的功能,但是在现实使用中,唤醒词的识别准确度和成功率并不能达到小爱音响的水平。这就意味着在使用过程中,可能会存在误唤醒或者无法唤醒的情况,影响用户体验。
  2. 配置过程较为繁琐 虽然我们提供了详细的配置说明和步骤,但是在实际操作过程中,用户可能还是会觉得配置过程较为繁琐。特别是在实现远程控制和AI变声等功能时,需要用户进行一些额外的配置操作,这可能会对一些非技术背景的用户造成一定的困扰。
  3. 依赖硬件设备和网络环境 这个智能音响的功能实现,很大程度上依赖于硬件设备和网络环境。例如,摄像头、音响设备、智能家居设备等,如果用户的硬件设备不支持或者网络环境不稳定,可能会影响到智能音响的正常运行。
  4. 功能集成和联动需要进一步优化 虽然我们已经实现了多种功能的集成和联动,但是在实际使用过程中,可能还会存在一些问题。例如,各个功能之间的联动可能还不够顺畅,用户在使用过程中可能需要进行多次操作才能实现某个功能。这就需要我们在后续的开发中,进一步优化功能的集成和联动,提升用户体验。

总的来说,虽然这个智能音响在功能上已经相当丰富,但是在实际使用过程中,还存在一些需要改进和优化的地方。我们需要在后续的开发中,根据用户的反馈和需求,不断进行优化和改进,提供更好的用户体验。

  1. 更强大的计算能力 贾维斯基于电脑实现,可以充分利用电脑强大的性能,无论是控制本地音乐播放、控制摄像头、请求接口,还是启动各种服务进行联动,都可以实现。这是普通智能音响无法比拟的。
  2. 更丰富的功能 贾维斯集成了多种功能和服务,包括音乐播放、摄像头控制、天气查询、本地项目联动等。配合上ChatGPT这个大脑中枢,以及函数调用功能,实现了类似于虚拟管家的效果。而普通的智能音响功能相对较少,主要集中在音乐播放、天气查询等基础功能上。
  3. 更个性化的体验 贾维斯可以自行训练音色对话,配合角色设定,实现个性化的AI变声。而普通的智能音响通常只有固定的音色和语调。
  4. 更主动的智能识别 通过人脸、声音识别情绪变化,贾维斯可以主动调用API,例如,天气热自动调用风扇,心情不好自动播放一首甜歌等。这种主动交互的方式,让贾维斯更像一个真正的虚拟管家。
  5. 更广泛的应用场景 贾维斯可以应用在家庭生活、办公环境、教育培训、娱乐休闲等多种场景,其应用范围和深度都超过了普通的智能音响。
  • 线下活动可以直接外接显示屏,让用户跟虚拟人对话,虚拟人可以根据用户形态控制硬件等交互,更富形象化
  • 家庭中作为虚拟管家存在,比智能音响更人性化,且具备主动调用能力,不用预先配置繁琐的传感器等

总的来说,贾维斯在计算能力、功能丰富性、个性化体验、智能识别以及应用场景等方面,都优于普通的智能音响,为用户提供了更高级、更智能的体验。

虽然该方案功能强大,但还存在一些值得改进的空间:

  1. 唤醒词识别初始模型存在误识别、自唤醒、识别率低等问题,需要进行一定的训练才能到达比较理想的状态。

将语音训练配置化,或者预置更多训练好的识别模型,同时也提供更多的音色模型,现在主要面向开发者训练成本、门槛会比较高。

  1. 配置流程可进一步简化,研究让非技术人员也能轻松上手使用。

可以设计一个简易的图形界面,通过可视化的流程引导用户配置,无需手动修改配置文件。也可以实现一键导入配置的功能。

  1. 功能模块之间的串联可以更加紧密,提升使用流畅度。可研究基于任务的管道工作流,实现场景化联动(比如利用ChatGPT函数调用,借助AutoGPT思想)。
  2. 可探索基于自监督的方式实现智能识别,减少手动配置需求。
  3. 未来可考虑与更多硬件和外部系统对接,拓展应用场景。如服务机器人等。

可构思一下该虚拟智能助手的未来展望:

  1. 功能扩展 可以继续扩展它的功能模块,实现更复杂的场景化交互。例如结合计算机视觉技术,实现人脸识别和情感分析,让助手能够主动关心用户心情。或集成语音合成,实现更自然的语音交互。
  2. 接入更多设备 可以研究让助手支持连接和控制更多类型的智能硬件设备,如服务机器人、智能门锁、健康监测设备等,拓展其应用场景。

项目作者其实也尝试了挺多不同设备的接入,比如行空板、树莓派、脑机、siri、Google AIY 【【微信】】等等:

  1. 协同多个系统协作 可以探索让虚拟助手与其他系统进行协同,例如与日程管理应用结合,实现智能提醒日程事项等功能。
  2. 提升自主学习能力 通过引入增强学习等技术,使虚拟助手从交互中不断学习和进步,减少人工编码,实现更高的智能化。
  3. 小批量应用实践 可以在校园、办公场所等进行小规模的部署应用,收集用户反馈意见,指导未来产品路线。
  4. 推进商业化发展 在功能和性能足够成熟后,可以考虑将其产品化,面向智能家居、个人助理等方向推进商业化发展。

GPT刚出来的时候讨论硬件的结合就已经令人激动人心,因此看到此项目的时候自己的兴趣也是十分浓厚,业余实现的时候也动力满满,自己动手实现想法是真的很快乐~

通过这个项目,我实现了一个集语音交互、智能控制等多种功能的虚拟智能助手。整个实现过程充满乐趣,同时也让我对智能音箱、语音交互等技术有了更深入的理解。

虽然这个虚拟助手还有很多不完善之处,比如唤醒词识别率不高、功能模块之间联系不够紧密等。不过通过这个实践exercise,我收获了宝贵的经验(比如频道机器人的联动远程控制、智能家居homeassistant的控制、AI变声、函数调用等等),相信对之后的业务工作会有一定的启发、联想。

计划在未来继续增强它的智能识别和交互能力,实现像贾维斯那样智能、人性化的助手。在此

储物柜宜家置物架 宜家墙壁货架置物架


  作者:差不多玩笑

  我是兴趣一大堆的差不多玩笑

  有差吗?!

  我一直没有买那种家具店组装好的、一体的电脑桌,就一张大平板桌上放上电脑。为了主机和音箱不在桌面占用空间也不放地方容易被自己踢到,把家里闲置的宜家置物架利用了起来。

  之前放在主卧给老婆摆放书籍和一些零碎物件的,后面养绿箩的时候也用上了,刚好一层放一盆。金属的,浇水的时候还是不敢太放肆,换了塑料的支架放绿箩,这个置物架就闲置下来了。

  刚好,电脑桌换地方,就把这个置物架用上了

  最下层防止电脑主机,各种电源线都可以隐藏在下面,用扎带捆起来,不裸露太多线在外面。

  第二层,放了音响。

  平时常用的两个笔记本也放在音响上。还可以放一些零碎的小物件。

  第三层放置的日历。这是我的生产力工具。

  最上面一层,放置了几个数码产品的盒子。里面还有一些零部件。

  无法增加平面的横向空间,那就只能立体空间。

  我是兴趣一大堆的差不多玩笑

  码文不易,欢迎点赞,留言,打赏,关注,谢谢

  查看文章精彩评论,请前往什么值得买进行阅读互动