Funpack第二季第一期-用Syntiant TinyML根据中文语音指令使LED呈现出不同效果
用自带的麦克风,搭建机器学习模型,使板卡上的LED灯根据中文语音指令(不少于三个指令)呈现出不同效果,如开灯、关灯、闪烁、SOS、呼吸等
标签
嵌入式系统
测试
数字逻辑
TinyML
MMA
更新2022-07-05
379
  1. 任务要求

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

      2. 任务分析与准备

      任务主要可以分为以下三个环节:

      Ftn7ViBqa8xphLfGos5TMhlnb4GI

  •     编程ARDUINO环境搭建。包括下载ARDUINO编辑器软件,Syntiant有一个EDGE Impulse环境搭建的准备网页:https://docs.edgeimpulse.com/docs/development-platforms/officially-supported-mcu-targets/syntiant-tinyml-board
  • 可以根据网页的内容指导进行编译环境的搭建。 主要包括:下载Githab的例程程序firmware-syntiant-tinyml;安装ARDUINO CLI和EDGE IMPULSE CLI;安装audio firmware;通过response to your voice例程了解EDGE IMPULSE编程的方式。
  • EDGE IMPULSE机器学习训练的过程是:连接开发板或用电脑麦克风进行数据采集,并对数据进行分类,数据采集的长度设为1秒;设定数据分析,创建Impluse,选择audio syntiant, keras;配置好修正数据,开始机器学习训练,查看训练的正确率
  • 在开发板上部署机器学习程序。这里可以选择用Arduino编译下载,也可以使用命令行编译的方式,包括:arduino-win-build.bat --build;arduino-win-build.bat --flash两个命令。


3. 程序部分。

     这部分的程序,主要是修改irmware-syntiant-tinyml的例程。

void on_classification_changed(const char *event, float confidence, float anomaly_score) {

    // here you can write application code, e.g. to toggle LEDs based on keywords
    if (strcmp(event, "lv") == 0) {
        // Toggle LED
        digitalWrite(LED_RED, LOW);
        digitalWrite(LED_BLUE, LOW);
        digitalWrite(LED_GREEN, LOW);
        
        digitalWrite(LED_GREEN, HIGH);
        delay(5000);
        digitalWrite(LED_GREEN, LOW);
    }

    if (strcmp(event, "lan") == 0) {
        // Toggle LED
        digitalWrite(LED_RED, LOW);
        digitalWrite(LED_BLUE, LOW);
        digitalWrite(LED_GREEN, LOW);
        
        digitalWrite(LED_BLUE, HIGH);
        delay(5000);
        digitalWrite(LED_BLUE, LOW);
    }

    if (strcmp(event, "hong") == 0) {
        // Toggle LED
        digitalWrite(LED_RED, LOW);
        digitalWrite(LED_BLUE, LOW);
        digitalWrite(LED_GREEN, LOW);
        
        digitalWrite(LED_RED, HIGH);
        delay(5000);
        digitalWrite(LED_RED, LOW);
    }

event是机器学习对声音的判断标识,也就是我们之前做的分类标签。当识别到了对应的标签就通过程序点亮相应颜色的灯。点亮5秒后熄灭对应颜色的灯。

4.功能展示。如下是实现的效果。

说:“绿”。 电路板上三色灯点亮绿色。

FpQK4nsgCzSvF9MfAcu7dxoQzBUX

说:“蓝”。 电路板上三色灯点亮蓝色。

FjFm3oQqD6C2ArplUFaN3r1JF4aR

说:“红”。 电路板上三色灯点亮红色。

FqPLDVP-d6RuQTE3ZtXDpd1H27d_

 

5.心得体会。

通过这块开发板学习了EDGE IMPULSE机器学习训练的步骤。也体会了机器学习中数据获取的重要性和困难,个人获取大量数据既是费时费力的工作,而且也不易获取高质量的数据。另外背景校准数据的使用有助于后面获取判断的准确性。整个开发板作为尝试边缘计算,起到了学习的作用。如果要进一步学习,这块开发板没有开放NDP101的datasheet, 无法进一步了解机器学习芯片里的实现原理。

 

附件下载
code.zip
代码
hong_lv_lan-syntiant-ndp101-lib-v7.zip
机器学习训练模型
团队介绍
嵌入式编程爱好者
团队成员
MMA
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号