Funpack第二季第一期 Syntiant TinyML
我完成了任务一通过语音控制灯光的项目并且学会了机器学习的用法以及部署方法
标签
嵌入式系统
MPU
机器学习
人工智能
weiguoqian
更新2022-07-11
434

1)功能

用自带的麦克风,搭建机器学习模型,使板卡上的LED灯根据中文语音指令:蓝灯,绿灯,关灯

2)说明
Fs-Y8xbzIeKnxPHBAvbmGspQfsAM

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

本项目的主要开发工作可分为模型构建和应用开发两个阶段。

首先,使用 Edge Impulse 平台完成口型同步音频数据采集、特征提取、模型训练并生成可部署在 Arduino 上的神经网络推理库。

然后,在 Syntiant TinyML Board 上,使用麦克风收集用户的声音并进行识别。同时闪烁灯光

2.1 模型

Edge Impulse提供了现成的模型可以使用, 根据提示一步步构建自己的模型可以了。该项目的神经网络模型使用 Edge Impulse 平台,这是一个涵盖完整机器学习过程的嵌入式 TinyML 开发平台。 可以帮助嵌入式工程师轻松完成数据采集、特征提取、模型训练等机器学习任务! Edge Impulse 在 Coursera 上提供免费的嵌入式机器学习入门课程,涵盖嵌入式机器学习和使用 Edge Impulse 平台帮助初学者快速入门嵌入式机器学习。上手起来非常的容易

2.1.1 数据集

FiL3oV-TzKYXtA-r1HJP3xHcoDhq

使用 Edge Impulse 轻松预览、标记和裁剪数据。可以一次性录比较长的音频,之后再一点点的剪出来

2.1.2 模型设计

这里需要注意时间序列数据的窗口大小不可以大于968毫秒

Edge Impulse 提供了多种内置的预处理和学习模块。 本项目选用MFE预处理模块和神经网络学习模块。 MFE用于提取口型同步音频数据中的Mel能量特征,神经网络用于对MFE提取的特征进行学习和分类。

FsDwANzPo24OU6hXiMA2KmnPuwju

2.1.5 模型部署

在训练和验证您的模型之后,我们现在可以将其部署到任何设备上。 这使得模型在没有互联网连接的情况下运行,最大限度地减少延迟,并以最低的功耗运行。
部署页面包含多种部署选项,可根据您的目标设备进行选择。 无论您是否使用完全支持的开发板,Edge Impulse 都通过 C++ 库提供部署选项,您可以在其中将模型部署到任何目标上

FmoxOJ5QcZYOn5H5wdJg2dAxTQHs

 

2.2 应用开发

使用Arduino对项目进行开发, 使用库可以轻松的对指令进行识别,从而进行动作

syntiant_ndp10x_micro_poll(struct syntiant_ndp10x_micro_device_s *ndp,
                           uint32_t *causes, int clear)
{
    int s;
    uint8_t intsts, mbout, mbin;
    uint32_t addr;
    uint32_t v[2];
    uint32_t c = 0;

    s = syntiant_ndp10x_micro_transfer(ndp, 0, NDP10X_SPI_INTSTS, NULL, &intsts,
                                       1);
    if (s) {
        return s;
    }
    if (clear) {
        s = syntiant_ndp10x_micro_transfer(ndp, 0, NDP10X_SPI_INTSTS, &intsts,
                                           NULL, 1);
        if (s) {
            return s;
        }
    }

    if (intsts & NDP10X_SPI_INTSTS_MBIN_INT(1)) {
        s = syntiant_ndp10x_micro_transfer(ndp, 0, NDP10X_SPI_MBIN_RESP, NULL,
                                           &mbout, 1);
        if (s) {
            return s;
        }
        if ((mbout ^ ndp->mbout) & NDP10X_MB_MCU_TO_HOST_OWNER) {
            c = SYNTIANT_NDP10X_MICRO_NOTIFICATION_DNN;
            s = syntiant_ndp10x_micro_read_fw_state(ndp);
            if (s) {
                return s;
            }
            addr = ndp->fw_state_addr + NDP10X_FW_STATE_MATCH_RING_SIZE_OFFSET;
            s = syntiant_ndp10x_micro_transfer(ndp, 1, addr, NULL, v,
                                                sizeof(v));
            if (s) {
                return s;
            }
            ndp->match_ring_size = v[(NDP10X_FW_STATE_MATCH_RING_SIZE_OFFSET
                                      - NDP10X_FW_STATE_MATCH_RING_SIZE_OFFSET)
                                     / sizeof(uint32_t)];
            ndp->match_producer = v[(NDP10X_FW_STATE_MATCH_PRODUCER_OFFSET
                                     - NDP10X_FW_STATE_MATCH_RING_SIZE_OFFSET)
                                    / sizeof(uint32_t)];
            mbin = (mbout & NDP10X_MB_MCU_TO_HOST_OWNER)
                | (NDP10X_MB_RESPONSE_SUCCESS << NDP10X_MB_MCU_TO_HOST_S);
            s = syntiant_ndp10x_micro_transfer(ndp, 0, NDP10X_SPI_MBIN, &mbin,
                                               NULL, 1);
            if (s) {
                return s;
            }
        }
        ndp->mbout = mbout;
    }

    if (ndp->match_producer != ndp->match_consumer) {
        c |= SYNTIANT_NDP10X_MICRO_NOTIFICATION_MATCH;
    }

    *causes = c;

    return SYNTIANT_NDP_ERROR_NONE;
}

 

 
 

3)功能展示及说明

  1. 默认状态

FgL8Y4Sq_QVTEzB_LPIGRh2Zb6Pd

   2. 开蓝灯:用户说蓝灯

FmnIwZPdkesGHNqw-cBrbrhffL0Z

   3. 开蓝灯开绿灯:用户此时说绿灯

FuT1OeU_bYD-kQzFKipQvO3FmEfF

4. 关灯状态:用户说关灯

FgL8Y4Sq_QVTEzB_LPIGRh2Zb6Pd

4) 对本活动的心得体会

1. Arduino 开关灯的方法,通过电频控制

2. Arduino 连接电脑做麦克风的方法,通过nodejs的插件将开发板识别成为麦克风

3. Arduino 编译上传到单片机上面的方法

4. 在Uubuntu上面开发单片机程序的体验

附件下载
Source (2).zip
程序
团队介绍
钱卫国
团队成员
weiguoqian
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号