×

会说话的机器人玩具开源分享

消耗积分:0 | 格式:zip | 大小:0.12 MB | 2022-10-26

绝代双骄

分享资料个

描述

当今可用的大多数教育机器人都在小型计算机上运行,​​其中包括最受欢迎的raspberry pi Jetsonarduino 。

我们将要研究的一些附加功能是人脸识别对话式人工智能

在 Raspberry Pi Model 3、4 上安装 Virtualenvwrapper

在我们在树莓派上开始任何 AI/ML 项目之前,我们必须先设置环境。

最好的做法是始终创建虚拟环境,这样我们的基础环境就不会受到影响,仅将其用于管理目的。
另一个原因是避免不同应用程序之间的冲突。应用程序使用同一模块的不同版本是很常见的,因此为了避免这些冲突,我们使用不同的环境。

poYBAGNYhamAZfN-AACAHoHzsVI847.png
 

我们将使用 virtualenvwrapper:

我们将调用环境 1 – facrec (人脸识别的缩写)

环境 2 – cbot (聊天机器人的缩写)

virtualenvwrapper 5.0.1.dev2

首先,一些初始化步骤。其中大部分只需要完成一次。您需要将该命令添加source /usr/local/bin/virtualenvwrapper.sh到您的 shell 启动文件中,根据 pip 或包管理器的安装位置更改 virtualenvwrapper.sh 的路径。

$ pip install virtualenvwrapper
...
$ export WORKON_HOME=~/Envs
$ mkdir -p $WORKON_HOME
$ source /usr/local/bin/virtualenvwrapper.sh
$ mkvirtualenv facrec
Installing
setuptools..........................................
....................................................
....................................................
...............................done.
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/facrec/bin/predeactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/facrec/bin/postdeactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/facrec/bin/preactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/facrec/bin/postactivate  New python executable in facrec/bin/python
(facrec)$ ls $WORKON_HOME
facrec hook.log

创建另一个环境,称为 cbot

(facrec)$ ls $WORKON_HOME
facrec            hook.log
(facrec)$ mkvirtualenv cbot
Installing setuptools...............................
....................................................
....................................................
........... ...............................done.
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/cbot/bin/predeactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/cbot/bin/postdeactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/cbot/bin/preactivate
virtualenvwrapper.user_scripts Creating /Users/dhellmann/Envs/cbot/bin/postactivate  New python executable in cbot/bin/python
(env2)$ ls $WORKON_HOME
facrec            cbot            hook.log

在环境之间切换workon

(cbot)$ workon facrec
(facrec)$ echo $VIRTUAL_ENV
/Users/dhellmann/Envs/facrec
(facrec)$

列出所有环境:

lsvirtualenv [-b] [-l] [-h]

显示单个 virtualenv 的详细信息:

showvirtualenv [env]

在 WORKON_HOME 中删除一个环境:

rmvirtualenv ENVNAME

在删除当前环境之前,您必须使用 deactivate。

(mynewenv)$ deactivate
$ rmvirtualenv mynewenv
$ workon
$

从虚拟环境切换到系统安装的 Python 版本:

deactivate

环境位于:

cd ~/.virualenvs

现在我们可以开始在环境中安装了 :))

 

在 Raspberry Pi Model 3、4 上设置人脸识别

现在我们的虚拟环境已经设置好了,让我们继续在虚拟环境(facrec)中安装人脸识别包。

步骤1

在(facrec)环境中,安装 OpenCV。这是一个记录在案的链接:

https://www.pyimagesearch.com/2019/09/16/install-opencv-4-on-raspberry-pi-4-and-raspbian-buster/

第2步

安装dlib、face_recognition、imutils:

https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/

哎呀,这是一些工作!

现在我们的树莓派可以检测到我们的脸,我们可以让它打个招呼并开始与我们交谈!

 

在 Raspberry Pi 模型 3、4 上设置 Python 聊天机器人(第 1 部分,共 2 部分)

在这篇文章中,我们将在我们的树莓派上创建一个聊天机器人,它将与我们进行对话,如下所示:

poYBAGNYhauAFLFpAACMY4LSEjk079.png
 

您可以使用任何麦克风。在第 4 步中,说明了上述麦克风的设置。只需编辑您可能拥有的任何其他麦克风的主要聊天机器人代码(本文的第 2 部分)。

在第 1 部分中,我们将首先设置环境。

在我们的虚拟环境 cbot(我们在之前的文章中创建)中,让我们按照以下步骤设置聊天机器人所需的必要软件包。

 

步骤1

我们必须安装 Tensorflow 2.x 版本但发出命令:

点安装张量流

只安装旧版本。因此,要安装最新版本,请运行以下命令:

sudo apt-get install -y libhdf5-dev libc-ares-dev libeigen3-dev

python3 -m pip install keras_applications==1.0.8 –no-deps

python3 -m pip install keras_preprocessing==1.1.0 –no-deps

python3 -m pip install h5py==2.9.0

sudo apt-get install -y openmpi-bin libopenmpi-dev

sudo apt-get install -y libatlas-base-dev

python3 -m pip install -U 六轮模拟

从https://github.com/lhelontra/tensorfl选择一个 tensorflow 版本…… (我选择了 2.0.0):

pYYBAGNYha2ADAzzAABTcZmTqLA295.png
 

现在复制相应的链接地址:

pYYBAGNYha-AOkNIAAAp7R_7ANk847.png
 

wget 'paste_link_address_here'

python3 -m pip 卸载张量流

python3 -m pip install 'whatever_package_name'

例如:

python3 -m pip install 'tensorflow-2.0.0-cp37-none-linux_armv7l.whl'

重新启动您的终端

TensorFlow 2.3 在 cbot 环境下安装成功

 

第2步

安装以下软件包:

pip install chatterbot==1.0.0

点安装正则表达式==2019.11.1

pip install python-dateutil==2.7

点安装 PyAudio

点安装 nltk

点安装 Keras

 

第 3 步

接下来,我们设置语音识别以将我们所说的内容转换为文本。这将输入到聊天机器人模型以生成响应。

迷你麦克风插入 USB 端口并调整设置:

运行以下命令记录音频 5 秒:

arecord -D plughw:1,0 -d 5 the_audio.wav

 

第4步

接下来我们安装 espeak ,用于语音输出(到耳机或扬声器)。
安装 espeak:

要测试 espeak,请创建文本文件,例如 speakthis.txt,然后在“hello my friend”中写下句子。

要从文件中说话,请运行以下命令:

espeak -f speakthis.txt –stdout |aplay

你应该听到你在 speakthis.txt 文件中写的任何内容(在我的例子中,它说“你好,我的朋友”)

有关 espeak 命令的列表,请参阅:

http://espeak.sourceforge.net/commands.html

万岁!我们的环境很好,现在我们可以继续创建 AI python 聊天机器人并将所有内容粘合在一起。

在 Raspberry Pi 模型 3、4 上设置 Python 聊天机器人(第 2 部分,共 2 部分)

现在我们的 python 聊天机器人环境已经在我们的树莓派上设置好了,让我们开始运行代码。

首先下载包含所有必要代码和文件的 trivchat 文件夹:

https://github.com/wajidahmad89/rexythebot/tree/main/trivchat

将其保存到桌面,因此位置将是桌面/trivchat

让我们快速浏览一下 trivchat 中的重要文件

1.首先我们有intents.json
这个文件将包含所有你能想到的问题和答案。继续添加它!

2. 其次我们有 trainchatbot.py
这个训练神经网络并创建 chatbot_model.h5

3. 第三,我们有 cbot_main.py
所有的听力、处理和口语都发生在 cbot_main.py

4. 第四,the_audio.wav 是音频输入,你所说的最后录音会覆盖在这个文件上。

5. 第五,userinput.txt 文件将转换后的语音转文本写入此处。botresponse.txt 里面有你演讲的答案。

6. 第六,我们有 hello_camera-output.txt,它启动与“Hello John”的对话,正如我们在其中所写的那样。同样,goodbye_camera-output.txt 有对话结束,所以我们在里面写了“再见约翰”。

笔记

当您编辑 intents.json 时,请确保不要留下任何错误!
Visual Studio 是查找错误的不错选择,例如:

pYYBAGNYhbKACoOqAADTzhGByVE439.png
 

步骤1

在命令提示符下:

pi@raspberrypi:~ $ cd 桌面/trivchat

pi@raspberrypi:~/Desktop/trivchat $ workon cbot

(如下图所示,cbot 环境已激活,其中包含必要的包)

(cbot) pi@raspberrypi:~/Desktop/trivchat $ pythontrain_chatbot.py

它应该打印“模型创建

第2步

现在我们运行 cbot_main.py

(cbot) pi@raspberrypi:~/Desktop/trivchat $ python cbot_main.py

poYBAGNYhbSAXZK5AABRYmWBfX8564.png
 

现在它应该显示“正在播放……”用于音频输出,因此您必须通过耳机/扬声器聆听它在说什么

“录音……”用于音频输入,这是当您说话时,它会听 5 秒钟。文件userinput.txt将包含您所说的所有语音,文件botresponse.txt将包含所有机器人响应
 

和你的树莓派聊天玩得开心
xD

笔记

如果您的麦克风与使用的麦克风不同,您可以在第 135 行编辑 cbot_main.py 以录制您的演讲并将其保存为 the_audio.wav

 

poYBAGNYhbaAL-2SAABVceOiQ7s173.png
 

 

在 Raspberry Pi 模型 3、4 上运行人脸识别和 Python 聊天机器人

在这篇文章中,我们将把人脸识别 + python 聊天机器人功能合并在一起。当有人被识别时,树莓派会说“你好”并开始对话。

步骤1

首先下载下面的fareg文件夹:

https://github.com/wajidahmad89/rexythebot/tree/main/fareg

将 FAREG 文件夹放在桌面上

用人名创建一个文件夹,
在 fareg/dataset
人的图片会位于这个文件夹中

在命令提示符下:

努力工作

cd 桌面/票价

python encode_faces.py –dataset dataset –encodings encodings.pickle –detection-method hog

这将在 fareg 文件夹中创建 encodings.pickle 文件

稍后我们将在脚本中运行 facrec_main.py。
facrec_main.py 的作用是将相机识别的名称写入 trivchat 文件夹中的 camera-output-raw.txt。如果一个名字重复超过 3 次(在 camera-output-raw.txt 内),这是一个很好的措施来识别正确的人,所以这个确认的名字被写入 hello_camera-output.txt ,说“你好%name%” ,
以及写到 goodbye_camera-output.txt ,说
“再见 %name%”

hello_camera-output.txt 和 goodbye_camera-output.txt 也位于 trivchat 文件夹中。

第2步

其次将rexy_master文件下载到桌面:

https://github.com/wajidahmad89/rexythebot/tree/main/rexy_master

最后运行人脸识别+python聊天机器人:

pYYBAGNYhbiAHhlnAABukn2oNsw853.png
 

下面显示一次

poYBAGNYhbqASfg7AAA_WDR1T7M811.png
 

转到“masterfile-initiate.sh”文件并双击执行它

poYBAGNYhb2AbLYKAACVyinCkbc647.png
 

与启动相机之前一样,一旦人脸被识别,机器人就会开始对话。

pYYBAGNYhb-AaBH-AADV6TZduXQ924.png
 

一旦人脸识别,聊天机器人将开始对话。

嘻嘻!

Seeed Fusion 团队正在启动一项 Raspberry Pi CM4 赞助计划,以支持基于 CM4 的设计。使用 Seeed PCB 组装服务制造您的定制 Raspberry Pi CM4 载板,最高可减 $500!


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'会说话的机器人玩具开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);