版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目三基于语音识别实现语音控制机械臂创灵实验平台语音控制机械臂并实现执行任务状态应答功能实现任务三职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现了解掌握掌握语音控制机械臂并实现执行任务状态应答功能;掌握BNF文件的改写;完成应答功能逻辑实验;复习本章节所学语音合成,语音播报等功能。掌握语音控制机械臂并实现执行任务状态应答功能;掌握BNF文件的改写。职业能力目标01实验目的实验内容职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现
此任务要求同学们了解掌握掌握语音控制机械臂并实现执行任务状态应答功能,掌握BNF文件的改写,完成应答功能逻辑实验,并对本章知识进行复习巩固。在实验的过程中,能理解复习巩固语音合成、语音播报等知识的原理,将学习转化成应用。任务描述任务要求掌握语音控制机械臂并实现执行任务状态应答功能,并完成相关实验;完成机械臂语音唤醒实验,通过“小陆小陆”唤醒机械臂,在完成唤醒后,对机械臂进行测试,能完成语音合成播报的指定任务;了解BNF文件,并完成BNF文件的改写。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现任务分析思考一下在本项目的学习过程中,遇到了哪些难解决的点,是否都复习到了,在本项目的最后一个任务进行查缺补漏吧!根据自己的了解,要怎样去学习使用语音相关的知识,可以促进自己进一步地学习?任务分析与计划03任务计划表项目名称创灵实验平台任务名称语音控制机械臂并实现执行任务状态应答功能实现计划方式自主设计计划要求请用6个计划步骤来完整描述出如何完成本次任务序号任务计划1
2
3
4
5
6
通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现BNF文件204知识储备应答功能函数1应答功能函数04
应答功能函数,又称响应函数。响应函数(responsefunction)在网络的输入端加上激励信号,则在网络的输出端便可获得相应的响应信号。该响应信号称为响应函数。响应函数可以是电压响应函数,可以是电流响应函数,也可是功率响应函数。05任务实施BNF文件2应答功能函数1304BNF文件
巴科斯范式以美国人巴科斯(Backus)和丹麦人诺尔(Naur)的名字命名的一种形式化的语法表示方法,用来描述语法的一种形式体系,是一种典型的元语言。又称巴科斯-诺尔形式(Backus-Naurform)。它不仅能严格地表示语法规则,而且所描述的语法是与上下文无关的。它具有语法简单,表示明确,便于语法分析和编译的特点。04思考一下,我们在过去学习代码的时候有用到BNF吗?BNF文件
BNF表示语法规则的方式为:非终结符用尖括号括起。每条规则的左部是一个非终结符,右部是由非终结符和终结符组成的一个符号串,中间一般以“::=”分开。具有相同左部的规则可以共用一个左部,各右部之间以直竖“|”隔开。发展历史04BNF文件
约翰·巴科斯首次在ALGOL58中实现巴科斯范式。彼得·诺尔在ALGOL60之中,进一步发展它的概念并将它的符号加以简化,称其为巴科斯范式(BackusNormalForm)。但高德纳主张应称为巴科斯-诺尔范式(Backus–NaurForm),因为它不算是一种正规形式(Normalform)。BNF内容04大家在使用时可以根据需要去进行查百度百科等进行使用。职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现05任务实施机械臂语音应答2实验预览、实验流程介绍1语音唤醒实验3实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤一:根据提示打开项目3中的任务三、语音控制机械臂实现执行任务状态应答实验,并点击运行实验预览,如图:任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤二:运行机械臂控制函数代码块部分,预览效果,如图所示:任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤三:了解主函数组成:#机械臂等待函数defwait_for_what(dev,what):""":paramdev:设备:paramwhat:等待指令:return:None"""whileTrue:line=dev.readline()break#初始化机械臂位置defreset(tty):"""初始化机械臂位置:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y0Z60F90\n")#初始化位置wait_for_what(tty,b"ok")#等待指令任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤三:了解主函数组成:#左转运动defleft(tty):"""左转运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y-110Z60F90\n")#左转坐标wait_for_what(tty,b"ok")#等待指令#右转运动defright(tty):"""右转运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y110Z60F90\n")#右转坐标wait_for_what(tty,b"ok")#等待指令任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤三:了解主函数组成:#点头运动defup_down(tty):"""点头运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y0Z100F90\n")#抬头坐标wait_for_what(tty,b"ok")#等待指令tty.write(b"G0X200Y0Z50F90\n")#低头坐标wait_for_what(tty,b"ok")#等待指令tty.write(b"G0X200Y0Z60F90\n")#初始坐标wait_for_what(tty,b"ok")#等待指令任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤四:运行语音控制流程函数,预览效果,如图所示:任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤四:运行语音控制流程函数,预览效果,如图所示:deftty_reply(tty):speech=SpeechSolve()#创建对象whileTrue:try:reset(tty)ifspeech.get_device_id():result=speech.recognition()#语音识别ifresult=='点头':speech.broadcast('收到'+result)#语音合成speech.play_sound(speech.get_device_id())#语音播放print("点头")up_down(tty)#调用点头函数pass任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤四:运行语音控制流程函数,预览效果,如图所示:elifresult=='左转':speech.broadcast('收到'+result)#语音合成speech.play_sound(speech.get_device_id())#语音播放print("左转")left(tty)#调用左转函数passelifresult=='右转':speech.broadcast('收到'+result)#语音合成speech.play_sound(speech.get_device_id())#语音播放print("右转")right(tty)#调用右转函数passelse:print('无法识别')任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览(详细实验请参考第二章中任务三部分)我们该去如何完成实验呢?
步骤四:运行语音控制流程函数,预览效果,如图所示:else:print('无音频设备')time.sleep(2)exceptExceptionase:print(e)
if__name__=='__main__':tty=serial.Serial("/dev/ttyACM0",115200)time.sleep(5)tty_reply(tty)任务三语音控制机械臂并实现执行任务状态应答功能实现实验预览结果:(具体效果请参照实验演示)机械臂根据指令进行相应方向移动,并完成抬头、低头、复原初始坐标等指令。实验流程介绍相信大家已经通过实验预览了解了实验的具体功能,那么接下来就开始我们的实验。在开始实验之前,我们还要了解实验的流程内容,帮助大家更好地理解实验的步骤以及完成实验。首先我们要实例化机械臂(具体过程请参照任务一部分),用类函数创建对象,接着我们还要实例化语音设备,并获取音频设备的id,并设置初始化机械臂位置。在完成以上步骤后我们开始进行语音监听,对收集到的语音信号进行语音识别、语音合成,并在完成合成语音后进行相应的语音播报(具体步骤请参照任务一、任务二部分)。完成语音部分后,我们要设置相应的机械臂移动步骤来匹配我们所监听到的语音。例如:点头函数、左转函数、右转函数,机械臂位置初始化等来达到语音控制机械臂移动的目的,如图所示:
任务三语音控制机械臂并实现执行任务状态应答功能实现05任务实施213实验预览、实验流程介绍机械臂语音应答语音唤醒实验
这里与上一章【基于新大陆AI开发板实现离线TTS】(../2_基于新大陆AI开发板实现离线TTS/基于新大陆AI开发板实现离线TTS.ipynb)实验3.机械臂执行动作语音提示内容相同。设置机械臂动作05机械臂完成指令等待函数05l函数【wait_for_what(dev,what)】用于让机械臂在完成指令后进行等待
参数解释:
(1)【dev】选择等待的机械臂设备
(2)【what】用于等待的指令
l函数中用到的方法:
(1)【readline()】:读取整行,包括行结束符,并作为字符串返回。
特点:【readline()】方法每次读取一行;返回的是一个字符串对象,保持当前行的内存。
(2)【find()】:检测字符串中是否包含子字符串str。importreimportsubprocessimporttimeimportserial
defwait_for_what(dev,what):""":paramdev:设备:paramwhat:等待指令:return:None"""whileTrue:line=dev.readline()#print(line)ifline.find(what)>=0:#print("break")break将机械臂动作进行函数封装05步骤一:实例化机械臂并设置波特率。tty=serial.Serial("/dev/ttyACM0",115200)步骤二:设置机械臂对应的移动函数l初始化机械臂位置defreset(tty):"""初始化机械臂位置:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y0Z60F90\n")#初始化位置wait_for_what(tty,b"ok")#等待指令将机械臂动作进行函数封装05步骤一:实例化机械臂并设置波特率。tty=serial.Serial("/dev/ttyACM0",115200)步骤二:设置机械臂对应的移动函数l机械臂-左转运动defleft(tty):"""左转运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y-110Z60F90\n")#左转坐标wait_for_what(tty,b"ok")#等待指令将机械臂动作进行函数封装05步骤一:实例化机械臂并设置波特率。tty=serial.Serial("/dev/ttyACM0",115200)步骤二:设置机械臂对应的移动函数l机械臂-右转运动defright(tty):"""右转运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y110Z60F90\n")#右转坐标wait_for_what(tty,b"ok")#等待指令将机械臂动作进行函数封装05步骤一:实例化机械臂并设置波特率。tty=serial.Serial("/dev/ttyACM0",115200)步骤二:设置机械臂对应的移动函数l机械臂-点头运动defup_down(tty):"""点头运动:paramtty:机械臂对象:return:None"""tty.write(b"G0X200Y0Z100F90\n")#抬头坐标wait_for_what(tty,b"ok")#等待指令tty.write(b"G0X200Y0Z50F90\n")#低头坐标wait_for_what(tty,b"ok")#等待指令tty.write(b"G0X200Y0Z60F90\n")#初始坐标wait_for_what(tty,b"ok")#等待指令
接下来我们要介绍语音控制机械臂并实现应答功能函数,我们要怎么去使机械臂收到语音发出应答呢?语音控制机械臂并实现应答功能函数05设置相应的语音控制机械臂并实现应答功能函数,如图所示:语音控制机械臂并实现应答功能函数051.在<1>处,实例化语音类【SpeechSolve()】,赋值给变量【speech】。2.在<2>处,使用【reset()】函数,初始化机械臂【tty】位置。3.在<3>处,使用<1>处定义的变量【speech】调用类中函数【get_device_id()】获取音频设备ID。4.在<4>处,使用<1>处定义的变量【speech】调用类中函数【recognition()】进行语音识别,并将返回值赋值给【result】。5.在<5>处,仿照【if】判断语音识别结果为【点头】,完成【左转】逻辑编写。6.在<6>处,仿照【if】判断语音识别结果为【点头】,完成【右转】逻辑编写。deftty_reply(tty):<1>#请在此处添加代码whileTrue:try:<2>#请在此处添加代码if<3>:#请在此处添加代码<4>#语音识别ifresult=='点头':speech.broadcast('收到'+result)#语音合成
动手练习1语音控制机械臂并实现应答功能函数05speech.play_sound(speech.get_device_id())#语音播放print("点头")up_down(tty)#调用点头函数passelif<5>#请在此处添加代码elif<6>#请在此处添加代码else:print('无法识别')else:print('无音频设备')time.sleep(2)exceptExceptionase:print(e)
if__name__=='__main__':tty=serial.Serial("/dev/ttyACM0",115200)time.sleep(5)tty_reply(tty)动手练习105任务实施213实验预览、实验流程介绍机械臂语音应答语音唤醒实验语音唤醒实验教学分析我们要怎么设置语音唤醒实验,有什么思路?语音唤醒在生活中有哪些运用?语音唤醒实验05通过上面的思考,你是否对本任务要完成的任务有所了解?让我们一起来学习如何使用语音唤醒吧!语音唤醒实验05生活中的语音唤醒实例改写BNF文件:语音唤醒实验05动手练习21.在<1>处,增加一个【awaken】槽声明。2.在<2>处,增加一个主规则【awkControl】。3.在<3>处,主规则【awkControl】的引用【<awaken>】。4.在<4>处,槽的具体定义为【小陆小陆】。#BNF+IAT1.0UTF-8;!grammarcall;!slot<want>;!slot<buy>;//机械臂!slot<tty>;//唤醒<1>#请在此处添加申明
!start<callstart>;<callstart>:<wantbuy>|<ttyControl>|<2>#请在此处添加规则;<wantbuy>:<want><buy>|<buy>;<3>#请在此处添加引用<awaken><ttyControl>:<tty>;
<want>:我想|我要|请|帮我|我想要|请帮我;<buy>:买|添加|购买;//机械臂<tty>:点头|左转|右转;//唤醒<4>#请在此处添加定义改写BNF文件:语音唤醒实验05动手练习21.在<1>处,增加一个【awaken】槽声明。2.在<2>处,增加一个主规则【awkControl】。3.在<3>处,主规则【awkControl】的引用【<awaken>】。4.在<4>处,槽的具体定义为【小陆小陆】。
完成动手练习2后,点击这里进行【[BNF文件](./call.bnf)】改写,将上述代码复制粘贴至BNF文件内。
执行以下代码,将改写后的BNF文件拷贝至语音识别目录下。!cp./call.bnf/usr/local/speech/recognition/bin/编写语音线程(对应Jupytter中的实验5.2):语音唤醒实验05通过语音线程的方式,优先识别到【小陆小陆】来达到唤醒效果,再进行后续的流程实验。如图所示:选择编写语音线程实验:将语音线程迭代进上述流程中(对应Jupyter中的实验5.3):语音唤醒实验05实现通过呼叫“小陆小陆”来进行唤醒,收到“小陆”给回的提示“我在呢”,然后15秒内命令机械臂进行“点头”、“左转”、“右转”的实验流程,否则需要重新呼叫“小陆小陆”进行唤醒,详细步骤请查看Jupyter,如图所示:将语音线程迭代进上述流程中(对应Jupyter中的实验5.3):语音唤醒实验05实现通过呼叫“小陆小陆”来进行唤醒,收到“小陆”给回的提示“我在呢”,然后15秒内命令机械臂进行“点头”、“左转”、“右转”的实验流程,否则需要重新呼叫“小陆小陆”进行唤醒,详细步骤请查看Jupyter,如图所示:职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务三语音控制机械臂并实现执行任务状态应答功能实现任务检查与评价06序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,理解本次任务要求,制定详细计划,计划条理清晰,逻辑正确(20分)20分
理解相关理论知识,能根据本次任务要求、制定合理计划(15分)了解相关理论知识,有制定计划(10分)无制定计划(0分)2专业技能(40%)完成实验预览,能够掌握机械臂语音应答,完成语音唤醒实验。(40分)40分
完成实验预览,能够完成机械臂语音应答。(25分)完成实验预览。(1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026新版三级安全教育试题及答案(多行业、分行业工种版)
- 《中国人民志愿军战歌》教学设计2026-2027学年湘艺版六年级上册音乐
- 《系统的工作过程》同步练习及答案-2026-2027学年川教版(新版)小学信息科技六年级上册
- 2026年计算机二级考试试题及答案
- 2026年建筑结构设计与分析工程师试题及答案
- 2026年药品标签说明书变更识别培训试题(含答案)
- 2026年炭疽诊疗防控三基培训考核计划
- 2026年药物临床试验机构年度自查工作规范
- 2026年药品储存温度问题排查整改报告
- 2026年卫生经济学测试题(附答案)
- 2026年少先队辅导员技能大赛考试题库(含答案)
- 医务科医疗质量改进与安全管理工作计划
- 工业仿真软件基础教程245
- 2026年工伤事故预防培训试题及答案
- 实施指南(2026)《JBT 7364-2014倍速输送链和链轮》
- 【答案】《网球学习的根与魂》(西南交通大学)章节期末慕课答案
- 医院临床科研能力提升
- 三腔二囊管的护理查房
- 《理解媒介:论人的延伸》阅读札记
- 2025年大学《缅甸语》专业题库- 缅甸语口译实践与案例分析
- 浙江润彩新材料科技有限公司年产23000吨消泡剂和7000吨润湿剂项目环评报告
评论
0/150
提交评论