Funpack第二季第一期:Syntiant TinyML Board项目,中文语音指令识别,识别词:开卧室灯,开床头灯,小王同学
Funpack第二季第一期:Syntiant TinyML Board项目中文语音指令识别,识别词:开卧室灯,开床头灯,小王同学
标签
嵌入式系统
机器学习
神经网络
语音识别
six
更新2022-07-06
河南科技大学
526

Funpack第二季第一期:Syntiant TinyML Board项目

本次任务选择任务一:
用自带的麦克风,搭建机器学习模型,使板卡上的LED灯根据中文语音指令(不少于三个指令)呈现出不同效果,如开灯、关灯、闪烁、SOS、呼吸等。

结合家中实际需求,制定了三个关键词,分别为:开卧室灯,开床头灯,小王同学。

 

一、开发版介绍

配备超低功耗 Syntiant ® NDP101神经决策处理器™,可以使语音和传感器应用程序分别在 140 和 100 微瓦以下运行,与基于 MCU 的传统 MCU 相比,吞吐量提高 20 倍,系统效率提高 200 倍。

Syntiant TinyML 板的尺寸为 24 毫米 x 28 毫米,是一个小型的独立系统,通过微型 USB 连接通过 Edge Impulse 轻松下载经过训练的模型,而无需任何专用硬件。

Syntiant TinyML板的框图如下图所示。

FupdvkSwO_twRV7aetgLhBBJuhiU

Syntiant TinyML 板框图 Syntiant TinyML 板卡的主要特点包括:

• 神经决策处理器: NDP101

• 主机处理器: SAMD21 Cortex-M0+ 32位低功耗 ARM MCU, 包含256KB flash 和32KB SRAM

• 板卡电源支持: 5V micro-USB 或 3.7V 锂离子电池

• 数字 I/O 兼容 Arduino MKR 系列板卡

• 1 UART 接口 (包含在 I/O 引脚中)

• 1 I2C 接口 (包含在 I/O 引脚中)

• 2MB 板载串行flash

• 48MHz 系统时钟

• 一个 用户定义的RGB LED

• μSD卡槽 (不包括μSD )

• BMI160 六轴运动传感器

•SPH0641LM4H 麦克风

FmOHvYwRNy_DU51hwtTHQCOFbmQw

RGB灯电路连接原理图

从原理图可以看出RGB三个引脚分别接在MCU的PA08、PA06、PA05。

 

二、开发环境准备

1.EDGE IMPULSE平台,用于训练语音数据

2.Arduino平台,用于编写代码

3.Arduino-cli软件,同于编译上传固件

 

三、根据教程熟悉Syntiant TinyML板卡

1.TinyML Tutorial for Windows文档,介绍板卡内容和EDGE IMPULSE平台基本操作

2.https://docs.edgeimpulse.com/docs/edge-impulse-cli/cli-installation,介绍板卡

3.https://docs.edgeimpulse.com/docs/tutorials/hardware-specific-tutorials/responding-to-your-voice-syntiant-rc-commands-go-stop,介绍EDGE IMPULSE平台和板卡的联合使用

4.https://docs.edgeimpulse.com/docs/development-platforms/officially-supported-mcu-targets/syntiant-tinyml-board,介绍Edge Impulse CLI的使用(似乎没怎么用到)

 

四、训练语音模型

在这里我就没有使用新建工程的办法,而是直接克隆了例程的工程,再将它的数据集删除掉,加入我自己的数据集,重新进行模型训练即可,这样也避免一些奇怪的问题发生(别问我怎么知道,因为我试过新建工程。。。)

下面开始说明

克隆完成例程后,点击Data acquisition,选择复选框,将其全部删去即可。

Fieo8MV0T2acDSnZeUxNrzRif8bN

再点击Devices,选择连接设备,当使用USB数据线将开发板与电脑相连时,我们可以直接选择电脑作为设备,此时使用的便是开发板上的麦克风,当然也可以选择使用手机(也试过,但是效果不太好),便可以开始激情的念关键词啦。

FgjFcQ1Fd2QCuHbRgtjez6sQjuqk

采集好声音后,便需要先对声音进行预处理,将每个指令语句分开为单独的一条(我选择使用1秒时间长度作为一条数据)。

之后就可以进行数据的训练,在Impulse design中的Create impulse,按下图所示进行添加组件,并点击Save Impulse。

Fo3p8hYfDTzSfkM7nb4YS3Hibqze

下一步,点击Impulse design中的Syntiant,稍微等待加载完成,点击Save parameters。

继续,点击Impulse design中的NN Classifier,其中将一些选项改为如下所示,便可点击Start training,开始训练声音模型!

FgDeNviCL-WCzZ3MfLdgHQC5N3-o

等待训练完成后,选择Deployment,再选择Syntiant NDP101 library,在页面下方的Configure posterior parameters中,选择想要被识别的数据集标签名,便可点击Build来生成所需要的库文件,使用该库文件替换例程中的库文件,再进行Arduino的编程,将程序及模型文件上传到开发板中,开始回应你的声音!

 

四、编写程序及下载

在上一步中我们可以点击Syntiant TinyML开发板选项来直接生成一个固件,使用这个固件中的脚本可以很方便的将模型文件下载进开发板中,同时也可以更快速的(不用编程)进行板子的识别测试,测试结果将会通过串口发送至电脑上。

Fr7Ee2UHY5yYaH784rHh67gEk1tp

进行如上操作,再进行Arduino的编程下载,就可以不用再重新单独下载一遍模型文件。

我所使用的数据集标签及中文语音和对应亮灯情况分别为:

turn_bedroom,开卧室灯,绿灯;

turn_bedside,开床头灯,蓝灯;

wake ,小王同学,蓝灯和绿灯同时亮(青色)。

我所使用的源码是github上的fix-header-references 分支(第一个使用Arduino编译会找不到一个.h文件,但是文件就在工程中。。。)

使用下载好的model-parameters文件替换源工程中的同名文件。

再打开model_variables.h文件,在一个头文件引用中加入“../”,如下图所示,否则还会提示找不到文件。。奇奇怪怪的BUG。。。

Fo-b4TEFFC5_cTC47EBBnRl6zxnx

使用Arduino IDE打开firmware-syntiant-tinyml.ino文件。

选择开发板为Arduino MKRZERO。

在on_classification_changed函数中,

初级阶段我们只更改该函数中的判断条件即可。

如下图所示

①识别到”开卧室灯“关键字时,将红灯连接的引脚置低,绿灯连接的引脚置高;

②识别到”开床头灯“关键字时,将红灯连接的引脚置低,蓝灯连接的引脚置高;

③识别到”小王同学“关键字时,将红灯连接的引脚置低,绿灯和蓝灯连接的引脚置高;

FmM38nsAAqqGvAYL3FtcTM4sHPag

之所以要将红灯连接的引脚置低,推测是因为板卡识别到关键字后,会自动打开红灯(暂时没找到具体代码),如此一来,就需要先将红灯关闭,才能呈现出正确的颜色。

点击“上传”按钮,将程序下载进开发板中,即可进行测试!

结果如下

当说到,开卧室灯,绿灯便会打开;

Fo_ps80NkQURlW8Bl8uLrsEHMH7H

当说到,开床头灯,蓝灯便会打开;

Fneev56oREsYrsziTe1fJ2LiTNd-

当说到,小王同学,绿灯和蓝灯便会打开,呈现出青色;

FuyGgwGlmribAWoNIwpEn_dDEO8x

 

五、总结及问题汇总

      总的来说这次活动还是很不错的,由于这块板卡来自于海外,它的资料很少,需要一步步的去探索,特别是从无到有这个过程,很值得,即使过程很坎坷,也遇到无数的问题,但最终还是如期完成了此次项目。

1.看b站up主的视频,结果Arduino环境问题耽误了许久,最后还是使用SDK另一个分支的Github源码才能正常编译下载(主要问题)

2.选择使用板卡录音的时候,要选择自己的电脑,在电脑设置里,将麦克风设置为开发板即可

3.下载程序至下载了Arduino的几个文件,没有把模型文件下载进去

4.录音使用的手机麦克风,可能与开发板不一致,导致识别错误率/不识别概率很高。

5.发现匹配成功后,某些关键词会将红灯打开

六、参考资料

1.Tinyml机器学习简介

2.AI和IoT的殊途同归——微型机器学习(TinyML)

3.语音识别 特征提取(一)

4.语音特征提取方法 (二)MFCC

5.详解卷积神经网络(CNN)在语音识别中的应用

附件下载
firmware-syntiant-tinyml.zip
源文件
syntiant-audio-syntiant-ndp101-lib-v42.zip
库文件
syntiant-audio-syntiant-ndp101-v43.zip
edge impulse生成的固件
团队介绍
河南科技大学大三学生
团队成员
six
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号