回到顶部 回到顶部

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

头像 hmilycheng 2021.10.31 2682 3

Maixduino轻松学系列课程:

1、Maixduino轻松学系列 —— (1)初识Maixduino

2、Maixduino轻松学系列 —— (2)Mind+带你畅玩经典红白机游戏

3、Maixduino轻松学系列 —— (3)基于Mind+的简易NTP网络时钟

4、Maixduino轻松学系列 —— (4)基于Mind+的图像识别:人脸检测

5、Maixduino轻松学系列 —— (5)有屏幕的地方就有BAD APPLE

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

7、Maixduino轻松学系列 —— (7)超声波传感器的认识与使用

材料清单

  • Maixduino AI 开发套件 X1 链接
  • 红绿灯模块 X1
  • type C数据线 X1 链接

1 红绿灯模块

如下图所示:

 

project-image

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

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

尺寸:56*21*11mm

颜色:红 黄 绿

LED:5mm *3

亮度:普通亮度

电压:5V

输入:数字信号输出

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

2 接线

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

project-image

即:

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

接好后,如下图所示:

project-image

3 编写程序并运行

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

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

project-image

5 训练模型

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

project-image

出现“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)

评论

user-avatar
  • Forgotten

    Forgotten2022.05.14

    注意这里运行如果出现MAIXPY,no module named 'ASR',说明当前你用的不是mind+内置固件,缺少语音识别的库,需要按照mind+官方文档中maixduino的教程把固件刷成mind+内置固件

    0
    • 阿邱

      阿邱2022.02.25

      请问一下,3W的扬声器应该接在maixduino的那个位置?

      1
      • Forgotten

        Forgotten2022.05.14

        usb接口旁边一个2pin的白色接口上