33727| 4
|
[入门教程] 【语音识别与合成+Micro:bit】 第二课 语音贪吃蛇 |
本帖最后由 ki123456 于 2023-4-6 10:21 编辑 第二课 语音贪吃蛇 你玩过声控游戏吗?你可以用声音的高低来控制游戏中角色跳跃的高度,躲避前面的障碍物,“一声不慎”,游戏就又要重新开始了。但是只有简单的音调高低操作不免还是有些单调,如果声音有了不同的含义,声控游戏就可以拥有更加丰富的操作效果,比如上下左右变化。而语音识别模块就能轻松完成这类操作,我们以经典的贪吃蛇游戏为例,用左和右两个命令轻松让贪吃蛇寻找苹果。如何实现呢,接下来我们一起看看吧! 功能介绍 在这个项目中,我们将继续使用离线语音识别模块,利用其识别关键词的功能,分辨“左”和“右”语音命令,控制贪吃蛇角色左右旋转去吃苹果,同时通过分数的变化增加蛇身体的长度。 知识点
硬件清单: 软件使用:Mind+编程软件x1 知识园地 上节课我们已经知道了计算机是如何储存声音(声波)以及语音识别的基本单元,本节课我们就来了解一下语音识别技术和它工作的基本过程。 语音识别技术 语音识别技术就是让机器听懂人类语音的一种技术,工作原理可以理解为把声音录入计算机(得到声波),计算机经过一定的方式处理,然后再在原来就有的“声音文件”中去寻找“最像”的语音。 再详细一点,语音识别技术的基本工作过程可以被分为两步:特征提取和模型匹配,工作流程可参考下图。 特征提取,是计算机对语音信号进行分析和处理,目的是去除多余的信息,提取可表示该语音本质的特征参数,获得计算机可以理解的数字信息,即声音样本。 模型匹配,也就是处理得到的声音样本与事先已处理好的样本模型进行匹配,这里“事先已处理好的声音样本模型”,又被称为模型库,组成它的模型是已知文本的语音通过不断训练而获得的“规则”。在模型匹配中,将待测语音样本输入模型就可以得到识别的结果。 我们使用的语音识别模块自带训练好的模型库,使用的时候程序会自动处理语音并在模型库中进行匹配,然后搭配我们设定好的编号,就可以很方便的使用识别到的语音啦。 项目实践 学习了解完基础知识以后,让我们一起来使用离线语音模块完成语音贪吃蛇吧~ 本项目我们将使用语音命令,控制贪吃蛇角色向左右方向旋转,去吃随机出现的苹果,完成贪吃蛇小游戏。整个项目我们将分为如下两个任务来完成: 任务一:贪吃蛇接收语音改变移动方向 在这步我们先应用语音识别模块识别”zuo“和”you“两语音,并学习上传模式和实时模式的通信方法,实现语音控制贪吃蛇的头改变移动方向。 任务二:苹果随机出现及蛇身得分变长 在实现了对贪吃蛇的控制后,我们将一起学习如何让苹果随机出现,并巧用等待和克隆知识,实现得分让蛇身变长。 任务一:贪吃蛇接收语音改变移动方向1、硬件连接STEP1:将micro:bit插入I/O扩展板,注意micro:bit 与扩展板正确结合方式,micro:bit 的点阵屏的那一面,对着micro:bit文字方向插入如图: STEP2:按照接线图将语音识别模块和I/O扩展板接好 2、程序设计 在正式编程前,通过以下4步先进行程序设计。 STEP1:Mind+软件设置 打开 Mind+ 软件(1.62 或以上版本),切换到“上传模式”,点击“扩展”,在“主控板”下点击加载“micro:bit”,在“传感器”下点击加载“语音识别模块”。 由于贪吃蛇游戏是在实时模式下完成的,所以上传模式下获得的语音识别结果需要传输给实时模式。这需要在上传模式下,在”扩展“里的”功能模块“下,点击加载”发送数据至实时模式“来实现上传模式向实时模式传递消息。 在实时模式下也需要对应的模块,实现实时模式接收上传模式消息。切换至”实时模式”,点击”扩展”,在”功能模块”下点击添加“接收上传模式数据”扩展模块。 STEP2:绘制角色 删除角色”mind+“,点击角色库中的“绘制“,准备绘制蛇的”头部“角色。 蛇头的形状是圆形的,你可以使用圆形工具绘制蛇头外形,并用不同颜色的圆给蛇头添上眼睛。绘制完成以后,别忘了组合他们并将造型中心点对齐。 STEP3:指令学习 来分别认识一下上传模式下和实时模式下主要用到的几条指令。 STEP4:流程图分析 [size=9.0000pt]3、程序示例 [size=9.0000pt]4、运行效果 (1)运行代码 先在上传模式下,上传代码。然后,切换至实时模式,在”功能模块“分类下,点击感叹号,实时模式连接上传模式。 接收上传模式数据窗口出现,点击连接。成功连接上传模式后原功能模块指令处感叹号会变成绿色的对勾(如下右图)。 (2)程序效果 点击绿旗,蛇头向前移动,当语音识别模块识别到“zuo”,点阵屏显示向左的箭头,蛇头向左转60度后,沿当前方向移动;当语音识别模块识别到“you”点阵屏显示向右的箭头,蛇头向右转60度后,沿当前方向移动。 任务二:苹果随机出现及蛇身得分变长 在实现了对贪吃蛇的语音控制后,我们将一起学习如何让苹果随机出现,并通过计分,实现蛇身变长。 1、程序设计 在任务一中,蛇头已经可以被语音指令操纵左右转向,贪吃蛇游戏中,蛇需要不断旋转追逐随机出现的苹果,吃到得分,蛇身边长,碰到舞台边缘游戏结束。接下来我们就开始逐步完成程序。 (1)如何出现多个随机位置的苹果? 首先我们需要在角色库中找到苹果,点击角色库,食物分类下的第一个就是苹果了。 游戏中的苹果是慢慢出现在随机位置的,显然这些苹果不止有一个,要出现多个一样的苹果就要使用到【克隆】相关指令,一共有三个分别是【克隆自己】、【当作为克隆体启动时】、【删除此克隆体】。 现在,只要让苹果本体隐藏,等待一段时间克隆一次,不断重复这个过程,就可以实现克隆多个苹果。 对于克隆体,需要让克隆出来的苹果出现在随机位置,等待碰到头部克隆体消失即可。 (2)如何判断得分和游戏结束? 得分规则:蛇头碰倒了苹果得分加1,你可以建立【得分变量】,完成变量的加分操作。 游戏结束:如果蛇头碰到了舞台边缘游戏结束,停止全部脚本。 (3)蛇的移动以及根据得分蛇身边长? 参考蛇头的绘制,首先需要用圆形绘制蛇的身体。 在游戏中,我们看到的蛇身是跟着蛇一起移动的,但是为了方便增加蛇身长度,这里并没有让克隆出来的蛇身跟随蛇头一起移动,而是采取蛇身克隆体不动,新旧克隆体出现消失动态进行的方法。具体如何实现呢,我们一起来看一看。 (a)蛇身出现 蛇身应该出现在蛇头的后面,也就是说蛇身克隆体开始出现的位置应该在蛇头位置,即【移到头部】。 (b)蛇身固定长度移动 我们以蛇身长2为例,由于蛇头在移动,而蛇身克隆体不动,所以较后出现的克隆体一定比较靠近蛇头,标记克隆体出现顺序(1表示第一个克隆体,2表示第二个克隆体),如下图。 然后,固定身长为2,让蛇动起来。已经出现的1和2号蛇身克隆体不移动,等待一会,新的蛇身克隆体3号出现,让1号蛇身克隆体消失,就可以保证长度依然为2。 这里出现了一个不确定量,等待一会,是多久呢?其实这里等待克隆体消失的时间适当长于克隆体出现的时间就可以了。为了持续出现蛇身,而不是只出现一次就很快消失,需要不断克隆,即【循环执行】+【克隆自己】。 (c)蛇身得分变长 那如果想要蛇身持续变长,只要让等待克隆体消失的时间变的更长,游戏规定蛇的身长和“得分变量”相关,也就是在基础时间上加上“得分变量”,如果你觉得变得太长,可以给“得分变量”乘以一个小数,适当减少等待时间。 2、程序示例 头部程序示例: 身体程序示例: 苹果程序示例: 3、运行效果 点击绿旗,喊出“zuo”和“you”控制贪吃蛇去吃随机出现的苹果,吃到加分,蛇身边长,碰到舞台边缘游戏结束。 通过语音贪吃蛇项目,我们再一次应用语音识别模块,通过上传模式和实时模式传递消息,控制实时模式下的游戏角色的移动。你学会了吗?现在不妨动手试试制作你自己的语音控制游戏吧。 知识点回顾 1、了解语音音识别技术的基本工作过程 2、熟练使用语音识别模块 3、掌握语音控制实时模式角色的方法 4、了解克隆和等待相关指令的操作技巧 项目拓展 1、尝试添加更多的食物增加不同的分数,也可以增加炸弹类的障碍物,让你的贪吃蛇更难吃到它想吃的食物,或者设定游戏时长,看看你的贪吃蛇最后能变得多长。 2、如果你想和朋友一起来玩这个游戏,可以再增加两个语音关键词来控制另一条蛇,比一比谁的蛇能吃到更多的苹果吧。 |
1.9 MB, 下载次数: 2695
项目程序文件
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed