1.任务目的
用自带的麦克风,搭建机器学习模型,使板卡上的LED灯根据中文语音指令(不少于三个指令)呈现出不同效果,如开灯、关灯、闪烁、SOS、呼吸等
2.硬件介绍
· 主机处理器:SAMD21 Cortex-M0+ 32位低功耗48MHz ARM MCU
· 内置256KB FLASH和32KB SRAM
· 5个数字I/O,与Arduino MKR系列板兼容
· 其中包含1路UART接口和1路I2C接口(包括在数字I/O引脚中)
· 2MB板载串行闪存
· 一个用户定义的RGB LED
· uSD卡插槽
· 神经决策处理器使用NDP101,连接了两个传感器:
· BMI160 6轴运动传感器
· SPH0641LM4H麦克风
· NDP101支持多达 560k 个参数和 64 种输出分类
· 电路板可使用5V micro-USB或3.7V LiPo电池供电
3.训练配置
这里我的主要配置如下:
流程设置
滤波器参数
输出特征
神经网络配置
训练效果
测试集测试效果
4.主要代码
主要函数
当接收到ndp101产生的中断的时候,根据不同的命令去处理
#include "src/syntiant.h"
#include <NDP.h>
#include <NDP_utils.h>
#include <Arduino.h>
int led_flicker_flag = 0;
/**
* @brief Called when a inference matches 1 of the features
*
* @param[in] event The event
* @param[in] confidence The confidence
* @param[in] anomaly_score The anomaly score
*/
void on_classification_changed(const char *event, float confidence, float anomaly_score) {
if (strcmp(event, "open") == 0) {
digitalWrite(LED_BLUE, HIGH);
led_flicker_flag = 0;
}
if (strcmp(event, "close") == 0) {
digitalWrite(LED_BLUE, LOW);
led_flicker_flag = 0;
}
if (strcmp(event, "flicker") == 0)
{
led_flicker_flag = 1;
}
}
void setup(void)
{
syntiant_setup();
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
}
void loop(void)
{
syntiant_loop();
}
配置
#ifndef _EI_CLASSIFIER_MODEL_VARIABLES_H_
#define _EI_CLASSIFIER_MODEL_VARIABLES_H_
#include <stdint.h>
#include "model_metadata.h"
const char* ei_classifier_inferencing_categories[] = { "close", "flicker", "_noise", "open" };
uint8_t ei_dsp_config_9_axes[] = { 0 };
const uint32_t ei_dsp_config_9_axes_size = 1;
ei_dsp_config_audio_syntiant_t ei_dsp_config_9 = {
1,
1,
0.03200f,
0.02400f,
40,
512,
0,
0,
0.96875f
};
#endif // _EI_CLASSIFIER_MODEL_METADATA_H_
5.实际演示
接到电脑上时会出现串口设备,识别到语音指令时会打印出来。
6.总结感想
作为一款小型跑神经网络的芯片,它设计的很小巧,而且功能也很强大,就是对外开放程度不够,也可能是芯片比较新,大量资料没有放出来,把它的用途仅仅局限在语音与姿态两部分。不过这款芯片让我看到了对神经网络可能性的探索,很期待以后的发展会是怎么样的。
吐槽一下,对于个人玩家很难去录到各种环境下、大量的数据源,只能在安静的环境下录一些区别度大的数据,才能把效果做的还可以。神经网络,没有一定规模的数据库,确实是玩不转,也难怪目前相关领域的推动者全是大公司。
7.意见建议
这次活动挺好的,就是一些在外的网页、资料希望能搬运进来,做成pdf什么的,这样看起来更加省事些。