所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

【AI】Maixduino轻松学系列 —— (6)基于ASR语音识别控制红绿灯

hmilycheng hmilycheng 2021-10-31 07:58:53
3
0
简单
材料清单 材料清单
1x
Maixduino AI 开发套件
1x
红绿灯模块
1x
type C数据线

1 红绿灯模块

如下图所示:

 

projectImage

笔者使用的红绿灯模块是一个共阴极红绿灯模块,也就是红黄绿3个LED等共用一个负极。

通过给模块的R、Y、G引脚脚通电,可以单独控制红黄绿led灯的点亮与熄灭。

尺寸:56*21*11mm

颜色:红 黄 绿

LED:5mm *3

亮度:普通亮度

电压:5V

输入:数字信号输出

接口:共阴极,红黄绿单独控制

2 接线

如下面接线图所示,连接红绿灯模块到Maixdunio。

projectImage

即:

直接将红绿灯模块G引脚插入至Maixduino的11引脚,将红绿灯模块Y引脚插入至Maixduino的12引脚,将红绿灯模块R引脚插入至Maixduino的13引脚,将红绿灯模块GNG引脚插入至Maixduino的GND引脚。

接好后,如下图所示:

projectImage

3 编写程序并运行

程序如下图所示,并“运行”,上传。

源程序可在附件下载、解压,打开后,直接运行。

projectImage

5 训练模型

打开代码区,出现“开始训练”,根据"speak: 红灯"等提示,对着Maixdunio说“红灯、红灯”,直至出现“complete”。

projectImage

出现“complete”,表示本词条训练完毕,然后出现“ready.”“speak:黄灯”,进行黄灯词条训练。

直至所有词条训练完毕,出现“训练完成”。

6  语音识别控制

随机说出“红灯”、“黄灯”、“绿灯”或者“关灯”,相应的“红灯”、“黄灯”、“绿灯”点亮或者熄灭。

7 总结与改进

(1)在我们训练一次模型后,我们可从主程序中的第一条积木块——ASR Training自定义函数删除,重新“运行”上传程序。这样可以直接语音识别控制红绿灯,不用每次开机都进行模型的训练。

(2)关于语音识别词条,只需要修改自定义函数“ASR Training”里的“初始化列表”积木里的元素,可实现对其他语音词条的识别。

(3)如果需要语音识别执行其他动作,只需要修改替换掉主程序里“设置数字引脚……输出……”的积木块。

代码 代码
	                    					# Maixduino轻松学系列 —— (6)基于ASR语音识别的红绿灯 by 豆爸 2021-10-28
from board import board_info
from ASR import asr
from pin import Pin
import lcd

# 自定义函数
def ASR_Training():
  lcd.init(freq=15000000, color=0, invert=0)
  model = asr.newModel()
  corpus = ['红灯', '黄灯', '绿灯', '关灯']
  print("开始训练")
  lcd.draw_string(42, 22, str("ASR Training"), 65535, 0)
  for order in corpus:
    asr.training(order, model)
  print("训练完成")
  lcd.clear(0)
  lcd.draw_string(42, 22, str("Training End"), 0, 65535)
  asr.save(model, "/flash/asr.json")


ASR_Training()
asr.run(asr.load("/flash/asr.json"))
while True:
  result = asr.recognize()
  if bool(result):
    print((str("识别到:") + str(result)))
  if (result == (str("绿灯"))):
    Pin.digital_write(board_info.PIN11, 1)
    Pin.digital_write(board_info.PIN12, 0)
    Pin.digital_write(board_info.PIN13, 0)
  if (result == (str("黄灯"))):
    Pin.digital_write(board_info.PIN12, 1)
    Pin.digital_write(board_info.PIN13, 0)
    Pin.digital_write(board_info.PIN11, 0)
  if (result == (str("红灯"))):
    Pin.digital_write(board_info.PIN13, 1)
    Pin.digital_write(board_info.PIN11, 0)
    Pin.digital_write(board_info.PIN12, 0)
  if (result == (str("关灯"))):
    Pin.digital_write(board_info.PIN11, 0)
    Pin.digital_write(board_info.PIN12, 0)
    Pin.digital_write(board_info.PIN13, 0)

	                    				
Makelog作者原创文章,未经授权禁止转载。
3
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]