×

使用Elechouse V3和Arduino进行语音识别

消耗积分:0 | 格式:zip | 大小:0.40 MB | 2023-02-06

ejlwj

分享资料个

描述

过去几年,语音识别技术已经问世。我们仍然记得与第一部支持 Siri 的 iPhone 交谈时的兴奋之情。从那时起,语音命令设备在很短的时间内就发展到了超出我们预期的非常先进的水平。随着许多高级语音识别系统的推出,出现了许多其他语音助手,如谷歌助手和亚马逊 Alexa。仅亚马逊 Echo 的快速成功就证明我们正在逐渐适应与机器对话。

因此,让我们从基础开始。在本教程中,我将向您介绍Elechouse V3 语音识别模块以及如何使用语音命令打开/关闭 LED。还有其他几种方法可以在您的项目中实现语音识别,从 Android 手机到 Alexa 或 Raspberry Pi 或其他一些技术。但是我收到了很多朋友发来的消息,询问我如何将这个特定模块与 Arduino 一起使用。因此,我将编写本教程作为 Elechouse V3 模块的基本指南。我想让这篇文章对所有初学者来说尽可能简单,所以我们不会讨论模块的完整特性和功能,但最后,我相信你会为你的下一个项目。

Elechouse V3语音识别模块

 
 
 
 
intro_1_VyK6zNtLuW.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
1 / 2
 

Elechouse V3 是市场上最紧凑和易于控制的语音识别模块之一。

该模块有两种使用方式,使用串口或通过内置 GPIO 引脚。V3 板能够存储多达 80 个语音命令,每个命令的持续时间为 1500 毫秒。这个不会将您的命令转换为文本,但会将其与一组已录制的声音进行比较。因此从技术上讲,使用该产品不存在语言障碍。您可以用任何语言记录您的命令,或者可以记录任何声音并将其用作命令。所以你需要先训练它,然后再让它识别任何语音命令。

如果您将模块与它的 GPIO 引脚一起使用,模块将只为 80 个命令中的 7 个命令提供输出。对于这种方法,您需要选择 7 个命令并将其加载到识别器中,识别器会将输出发送到相应的如果这些语音命令中的任何一个被识别,则 GPIO 引脚。当我们将它与 arduino 一起使用时,我们不需要担心有限的功能。

该设备在 4.5 - 5 伏的输入电压范围内工作,消耗的电流小于 40 毫安。如果在理想条件下使用,该模块可以达到 99% 的识别准确率。麦克风的选择和环境中的噪声对影响模块的性能起着至关重要的作用。最好选择具有良好灵敏度的麦克风,并在发出命令时尽量降低背景噪音,以发挥模块的最大性能。

将模块连接到 Arduino

 
 
 
 
apparatus_FfYzIFWlce.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
1 / 2面包板原型
 

如下所述给出所有连接。

  • GND - 地面
  • VCC - 5 伏
  • RXD - Arduino 的数字引脚 3(这是用户定义的引脚。示例代码将引脚 3 作为 Tx。)
  • TXD - Arduino 的数字引脚 2(这也是用户定义的引脚。)

LED 连接到 Arduino 的数字引脚 13,如示例代码中所定义。将 470 欧姆电阻串联连接到 LED。

将麦克风插入板上的 3.5 毫米插孔。如果没有 3.5 毫米插头,请将其焊接到模块中的麦克风引脚。这就是关于连接的全部内容。现在让我们看一下代码。

设置代码

此处提到的所有代码和库都是开源的,开发它们的功劳属于各自的作者。在将模块与 Arduino 一起使用之前,您应该下载并安装“voicerecognitionv3.h”Arduino 库。

从这里下载库。

我们需要的所有代码都在库 zip 文件中作为示例程序。

训练 V3 模块

正如我上面提到的,我们必须先训练模块,然后才能将其用于语音识别。按照以下步骤训练模块。

  • 将威廉希尔官方网站 连接到计算机。
  • 启动 Arduino IDE。
  • 检查您是否选择了正确的 Arduino 开发板。(工具 -> 板)
  • 检查是否选择了正确的 COM 端口。(工具 -> 端口)
  • 现在打开训练模块的示例程序。
  • 转到文件 -> 示例 -> VoiceRecognitionV3 -> vr_sample_train
 
code_1_lQup70ujMk.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
  • 将代码上传到 Arduino 并等待代码上传。(Ctrl + U)
  • 打开串行监视器。(Ctrl + Shift +M)
  • 确保波特率设置为115200并选择“换行”选项。
 
code_2_tV5whZSYJL.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
  • 如果一切正常,串行监视器上将显示一个菜单,如上图所示。
  • 您可以在串行监视器中输入几个命令来对模块进行编程,这里我们将使用“train”命令来训练模块。
  • V3 能够存储 80 个语音命令,每个命令的持续时间为 1500 毫秒。每个命令都存储在从 0 到 79 的地址中。
  • 通过使用“train”命令,我们将语音命令存储到特定地址,因此您应该在命令中指定地址。
  • 命令的语法如下:列车地址例如:列车 0、列车 20、列车 79。
  • 我们将需要两个语音命令来控制 LED。一个命令将其打开,另一个命令将其关闭。
  • 在串行监视器中输入命令,然后输入要存储的地址。例如:火车 20。
 
code_3_ZYHCQIEzhH.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
  • 输入命令后,等待串口监视器上出现“现在说话”的消息。现在向麦克风清晰大声地说出打开 LED 的命令。
  • 如果命令足够清楚,则会出现另一条消息,要求您再次讲话。再说一遍以注册命令。
  • 如果在录制过程中出现噪音或声音不够清晰,代码会要求您重复该命令。麦克风的质量在这里起着相当大的作用。如果您的麦克风不够好,您可能无法注册命令。还要在无噪音环境中训练威廉希尔官方网站 板。
  • 成功将语音输入模块后,重复相同的过程以输入关闭 LED 的语音命令。请记住将命令存储在不同的地址中。例如:火车 30。
  • 如果您已成功加载这两个命令,您现在就可以上传控制 LED 的代码了。

使用语音命令控制 LED

  • 打开用于控制 LED 的示例程序。
  • 转到文件 -> 示例 -> VoiceRecognitionV3 -> vr_sample_control_led
  • 在这个程序中,两条记录被定义为“onrecord”(用于打开 LED)和“offrecord”(用于关闭 LED)。
  • 将“onrecord”的值更改为您已训练用于打开 LED 的语音命令的地址。
  • 将“offrecord”的值更改为您已训练用于关闭 LED 的语音命令的地址。
 
code_4_c5BjOmhXO0.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
 
  • 现在将代码上传到 Arduino。(Ctrl+U)

仅此而已。现在您已准备好使用语音命令控制 LED。

结果

 

要测试威廉希尔官方网站 ,就像您训练它打开/关闭 LED 一样说出命令。请记住,麦克风的质量和周围环境的噪音确实会影响输出。尝试在无噪音环境中对其进行测试,或者如果您的语音命令未得到正确响应,请更换麦克风。同时打开串行监视器以检查设备是否响应您的语音命令。如果命令被识别,串行监视器将显示一条消息,其中包含已识别命令的地址。

恭喜!您已经学会了使用语音命令来控制 LED。现在您可以将任何此类设备转换为语音控制设备。将继电器模块连接到 Arduino 以控制交流设备,如灯泡或风扇。

在我们的日常生活中应用它的可能性有很多。在下面的评论部分分享您的想法。

我希望本教程能让您对使用 Arduino 的 Elechouse V3 语音识别模块有一个基本的了解。如果您有任何问题,请随时提出,我会尽力帮助您。

谢谢你。


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

评论(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.obk20.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:'使用Elechouse V3和Arduino进行语音识别',//标题 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.obk20.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);