好的一塌糊涂 发表于 2023-3-11 06:53:38

WinUI(WASDK)使用ChatGPT和摄像头手势识别结合TTS让机器人更智能

前言

之前写过一篇基于ML.NET的手部关键点分类的博客,可以根据图片进行手部的提取分类,于是我就将手势分类和摄像头数据结合,集成到了我开发的电子脑壳软件里。
电子脑壳是一个为稚晖君开源的桌面机器人ElectronBot提供一些软件功能的桌面程序项目。它是由绿荫阿广也就是我开发的,使用了微软的WASDK框架。
电子脑壳算是本人学习WinUI开发的练习项目了,通过根据一些开源的项目的学习,将一些功能进行整合,比如手势识别触发语音转文本,然后接入ChatGPT结合文本转语音的方式,实现机器人的对话。
此博客算是实战记录了,替大家先踩坑。
下图链接为机器人的演示视频,通过对话,让ChatGPT给我讲了一个骆驼祥子的故事,只不过这个故事有点离谱,本来前部分还正常,后面就开始瞎编了,比如祥子有了一头驴,最后还成为了商人。
大家观看觉得不错的话给点个赞。

具体的实现方案

1. 方案思路叙述

整体的流程如下图,图画的不一定标准,但是大体如图所示:


[*]处理摄像头帧事件,通过将摄像头的帧数据处理进行手势的匹配。
[*]手势识别结果处理方法调用语音转文本逻辑。
[*]转的文本通过调用ChatGPT API实现智能回复。
[*]将回复结果文本通过TTS播放到机器人上的扬声器,完成一次对话。
2. 所用技术说明


[*]WASDK
[*]MediaPipe offers open source cross-platform, customizable ML solutions for live and streaming media.
[*]ML.NET 开放源代码的跨平台机器学习框架
上面的技术栈在我上面文章里有讲述,这里就不展开了,大家有兴趣的可以点击之前的文章查看。
WinUI(WASDK)使用MediaPipe检查手部关键点并通过ML.NET进行手势分类
代码讲解

1. 项目介绍

电子脑壳项目本身是一个标准的MVVM的WinUI项目,使用微软的轻量级DI容器管理对象的生命周期,MVVM使用的是社区工具包提供的框架,支持代码生成,简化VM的代码。

2. 核心代码讲解

个人感悟

个人觉得DotNET的生态还是差了些,尤其是ML.NET的轮子还是太少了,毕竟参与的人少,而且知识迁移也需要成本,熟悉其他机器学习框架的人可能不懂DotNET。
所以作为社区的一员,我觉得我们需要走出去,然后再回来,走出去就是先学习其他的机器学习框架,然后回来用DotNET进行应用,这样轮子多了,社区就会越来越繁荣。
我也能多多的复制粘贴大家的代码了。
参考推荐文档项目如下:


[*]电子脑壳有在使用的得意黑字体
[*]项目模板——TemplateStudio
[*]表盘参考项目——一个番茄钟
[*]社区工具集——CommunityToolkit
[*]控件库展示demo——WinUI-Gallery
[*]图像处理库——opencvsharp
[*]Emoji8 表情识别例子
[*]ChatGPTSharp
[*]WASDK文档地址
[*]MediaPipe
[*]MediaPipe.NET
[*]ML.NET
[*]hand-gesture-recognition-using-mediapipe
[*]Control DJI Tello drone with Hand gestures

来源:https://www.cnblogs.com/GreenShade/archive/2023/03/11/17201961.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: WinUI(WASDK)使用ChatGPT和摄像头手势识别结合TTS让机器人更智能