【AI】Maixduino轻松学系列 —— (6)基于ASR语音识别控制红绿灯
Maixduino轻松学系列课程:
1、Maixduino轻松学系列 —— (1)初识Maixduino
2、Maixduino轻松学系列 —— (2)Mind+带你畅玩经典红白机游戏
3、Maixduino轻松学系列 —— (3)基于Mind+的简易NTP网络时钟
4、Maixduino轻松学系列 —— (4)基于Mind+的图像识别:人脸检测
5、Maixduino轻松学系列 —— (5)有屏幕的地方就有BAD APPLE

笔者使用的红绿灯模块是一个共阴极红绿灯模块,也就是红黄绿3个LED等共用一个负极。
通过给模块的R、Y、G引脚脚通电,可以单独控制红黄绿led灯的点亮与熄灭。
尺寸:56*21*11mm
颜色:红 黄 绿
LED:5mm *3
亮度:普通亮度
电压:5V
输入:数字信号输出
接口:共阴极,红黄绿单独控制

即:
直接将红绿灯模块G引脚插入至Maixduino的11引脚,将红绿灯模块Y引脚插入至Maixduino的12引脚,将红绿灯模块R引脚插入至Maixduino的13引脚,将红绿灯模块GNG引脚插入至Maixduino的GND引脚。
接好后,如下图所示:



出现“complete”,表示本词条训练完毕,然后出现“ready.”“speak:黄灯”,进行黄灯词条训练。
直至所有词条训练完毕,出现“训练完成”。
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)




