【DigiKey好物畅享】Arduino UNO Q “你好得捷”唤醒——使用Edge Impulse实现

UNO Q开发板的App Lab例程中自带了“Hey arduino”语音唤醒程序,喊一声“Hey arduino”,开发板的LED matrix就会有图案动画。

前提是:开发板连上type-C HUB,并插入USB声卡设备(我使用的是倍思type-C手机耳麦,自带声卡)

可以使用 aplay -l 命令查看

下面的第一个就是识别到的USB声卡

arduino@cc:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Audio [USB Audio], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ArduinoImolaHPH [Arduino-Imola-HPH-LOUT], device 0: MultiMedia1 () []
Subdevices: 1/1
Subdevice
#0: subdevice #0*
card 1: ArduinoImolaHPH [Arduino-Imola-HPH-LOUT], device 1: MultiMedia2 () [ ]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ArduinoImolaHPH [Arduino-Imola-HPH-LOUT], device 2: MultiMedia3 (
) []
Subdevices: 1/1
Subdevice* #0: subdevice #0*
card 1: ArduinoImolaHPH [Arduino-Imola-HPH-LOUT], device 3: MultiMedia4 (*)
Subdevices: 1/1
Subdevice #0: subdevice #0

此例程主要使用了Keyword Spotting Bricks(程序块)

主程序如下:

from arduino.app_utils import *
from arduino.app_bricks.keyword_spotting import KeywordSpotting

def on_keyword_detected():
“”“Callback function that handles a detected keyword.”“”
Bridge.call(“keyword_detected”)

spotter = KeywordSpotting()
spotter.on_detect(“hey_arduino”, on_keyword_detected)

App.run()

但是,有个问题是,目前只支持“Hey arduino”关键词唤醒,那就太单一了。

直到查到查到一篇文章,来自Edge Impulse官网。

Edge Impulse简介

Edge Impulse是一个基于云的边缘AI平台,旨在简化AI算法的开发和部署。它提供了一个易于使用的图形化界面,让开发者无需具备深厚的AI背景也能快速实现AI应用。Edge Impulse的主要特点如下:

  • 云端开发,边缘部署:在云端构建AI模型,然后在边缘设备上运行。

  • 图形化界面:无需编写代码,通过拖拽和配置即可完成AI模型的开发。

  • 跨平台支持:支持多种边缘设备,包括树莓派、ESP32等。

  • 丰富的API:提供丰富的API接口,方便与其他系统集成。

补充说明一下,2025年Edge Impulse已被高通收购。

官方网站如下:

本篇主要实现功能是“你好得捷”唤醒UNO Q。

主要通过Edge Impulse平台,实现语音识别AI大模型训练,生成nihao_dejie-linux-aarch64-v2.eim模型文件,将nihao_dejie-linux-aarch64-v2.eim模型文件下载到UNO Q,并关联,然后就可以实现自定义语句唤醒了。

Edge Impulse平台的使用方法不再赘述,可搜索学习。

下面贴几张图感受下, 还是非常简单的,照着图文流程一步步走就行了。

需要提前录多段语音:“你好得捷”,以及环境背景噪声,并标注好。

素材采集:

下图的4个突起波形块,分别对应 你 好 得 捷

模型搭建:

生成模型文件:

接下来,将上述生成的nihao_dejie-linux-aarch64-v2.eim

上传至UNO Q的目录 /home/arduino/.arduino-bricks/ei-models/

修改app的yaml文件(必须使用SSH工具,App Lab可以打开但修改不了)。

将生成的模型文件与本程序产生关联,否则程序就使用默认的“Hey arduino”唤醒词。

app.yaml主要告诉程序自定义的模型文件是什么类型(EI_KEYWORD_SPOTTING_MODEL),放在哪(/home/arduino/.arduino-bricks/ei-models/nihao_dejie-linux-aarch64-v2.eim)

name: Copy of Hey Arduino!
description: When “Hey Arduino!” keyword is detected by the microphone, the led matrix will react
ports:
bricks:

  • arduino:keyword_spotting: {
    variables: {
    EI_KEYWORD_SPOTTING_MODEL: /home/arduino/.arduino-bricks/ei-models/nihao_dejie-linux-aarch64-v2.eim
    }
    }
    icon: :heart:

运行后就可以实现“你好得捷”唤醒了!