1、前言
这段时间,垃圾分类是个全民的高度关注的问题。在羡(TONG)慕(QING)上海的小伙伴时,惊闻全国42城在2020年都要开展试点 !天了噜~快快写个垃圾分类APP压压惊!
上述是个玩笑,其实想看看用教孩子用APP Inventor能否快速写个垃圾分类,程序不要复杂,但一定要好玩,特别是对孩子有足够的吸引力。为了能解释给孩子听,所以写得会比较详细。
整个项目分为两篇,第一篇是基本功能实现,第二篇是微数据库及彩蛋实现。
2、程序原理
1)把需查询的垃圾与程序中预设好的内容进行对比,找出所属垃圾分类;
2)利用百度的语音合成以语音识别进行交互;
3)垃圾分类存储在网络微数据库中(Wxbit自带),实现远程获取和数据更新;(见二)
4)写一段小彩蛋,增加可玩性!(见二)
3、界面设计
1)主界面
包括:两个图像框,用于机器人表情及垃圾桶样式展示。其中垃圾桶的图像初始化选为不显示。
一个按钮,用于测试,后期删除或隐藏。
百度语音三套件,语音合成、识别、唤醒。
一个网络微数据库。
2) 表情包
下载或自已做一个机器人表情包,切成一个个对应的jpg文件来保存。(下面图片来源于网络,仅用于学习)
然后上传到App inventor素材中备用。
3)垃圾分类标识
同样也把垃圾分类的图片下载并用jpg保存,然后上传到素材中备用。
4)素材上传
四、逻辑设计
1) 变量设计
设计4个全局变量,对应4个垃圾的分类。
为了录入方便,我们在垃圾分类中用","分割,一次性录入多条信息。这样也利于我们用微数据库存放和读取。
同时,我们设计4个全局列表变量(空),用于分割后的垃圾名称。
然后在程序初始化时,把不同垃圾名称,用文本的分割功能,分别装入对应的垃圾列表中。
此外,我们还得设置“语音开关”及“无法识别”两个逻辑变量,其作用将在后文讲述。
2)语音三件套
wxbit已经集成了默认的百度语音三套件的Appid,AppKey以及SecretKey,默认就好了。但需要把在界面设计中,程序包名称改为baidu。
程序 已默认了10个唤醒词,分别是:小宝同学、拍照、播放、暂停、上一首、下一首、增大音量、减小音量、打开电灯、关闭电灯。我们这次只用“小宝同学”做为唤醒词。详细可参考:
https://www.wxbit.com/?p=335
如果想自己订制唤醒词,请看以下链接:
http://ai.baidu.com/tech/speech/wake
代码块如下,超级简单。不过,马上会有点点小问题,一会解决。
3)识别和处理:
当语音结束时,我们逐项与垃圾列表中的内容进行逐个对比。如果在里面就用语音读出来。
等等,这样的话,不是每次朗读完,都会启动百度语音识别吗?我们需要在读垃圾分类时,不需要再次启动百度语音识别。所以我们还得设置一个语音开关的变量。
用它来打开识别的开关。
程序块变成了:
语音识别后,先关了语音识别的开关符; 对比完成后,再把语音识别符打开。
4)未认识的垃圾处理
OK,快完成了。还有一个问题:如果有不认识的垃圾怎么办?
这里使用一个未知垃圾变量来处理。
当我们辨识出一种分类后,就把这个未知垃圾的变量设成假; 如果一直认不出来,那这个变量就会是直。用这个变量来判断是否是不认识的垃圾。
现在完整的程序模块变成这样了:
五、测试
由于用到唤醒,不能用Ai伴侣。为了进行测试。我们增加以下代码,代替语音唤醒,然后用Ai伴侣进行测试。
好吧,现在调试吧。
下一篇,我们将看看怎么用网络微数据库来实现垃圾库的更新。