|
; J; b& t; x3 \: @7 Y4 j0 M 继续昨天的分享。打开NanoEge AI studio后,单击n-Class Classification选择它作为项目类型,新建项目;然后单击“CREATE NEW PROJECT”来创建项目。不同的软件版本,界面会有一些差别。建立新的项目名称,如图1所示:
图1 1 w0 b) k7 k7 ^" _4 b2 u Name中输入项目名称,暂输入STWIN-DTMF。 选择板卡,选择麦克风,点击Next,进入第二步signals,点击Add signals,弹出的对话框中选择From serial(USB).然后弹出import signal窗口,如图2所示:
图23 T" P' p6 Y7 i" q& F 选择端口,波特率选择921600,maximum number of lines 选择200,采样数选大一点会更好。class name 修改为key1,如果这个地方是file name,可能有些步骤有点问题,会影响会面的程序。OK,打开手机音频发生器,长按1,放到板卡的麦克风附近,静止或移动都可以。点击软件的START/STOP开始采样,直到采样完毕,点击Continue。采样完毕如图3所示:1 E* v$ d+ I4 L' z8 F4 w }
图3 这里暂时之采样1和2的声音。 进入第三步benchmark,如图4所示:
图4( s3 [- [' p& ^( E# ]% z# { 点击开始,自动基准测试,当达到所需性能时,可以停止基准测试。进入第四步Validation,选择最好的一个可以进行验证,这里测试跳过。' M: {9 L1 A1 Y6 p 进入第五步,Deployment,选择如图5所示:* M4 A9 \6 q2 H" R# k+ I# ~2 Q
图5 点击compile library,在弹出的对话框出保存库文件。' G0 Q4 `6 |. h0 e) H- k. Q 解压缩库文件后,如图6所示:
图11 用于分类的 NanoEdge AI 静态库是包含 AI 模型(例如,作为信号处理、机器学习模型、优化调整的超参数等的集合)的代码,旨在识别某一类中的传感器模式。所有类别均由用户在 NanoEdge™ AI Studio 中定义,并在 AI 模型的训练过程中使用。7 y7 t' F* g. e2 p( G3 ~ 文件里libneai.a是分类器的C/C++静态库,knowledge.h是包含知识缓冲区声明的头文件,NanoEdgeAI.h是包含函数原型和示例声明的头文件。copy这三个文件替换掉下载STWIN_DTMF_Classifier\Core里的文件。使用STM32CubeIDE打开项目。! o6 ?# }! {6 w3 ~ 将NanoEdgeAI.h中的部分代码copy到main函数/* USER CODE BEGIN PV */和/* USER CODE END PV */之间,如图7所示:3 F5 X$ k5 Q* T1 u5 Y. P* }5 W9 C
图7 0 l! t, H; l6 N 然后进行编译,这里花了不少时间,一直提示no st-link detected。更新libusb-1.0.dll也不管用,最后AI提示在IDE的Help中有一个ST-LINK Upgrade,如图8所示:
图8" F2 t8 A" [4 m/ v$ W. s) m 更新后就OK了。3 n. e/ w% Y* S [5 }% n8 ] download程序后,打开Tera term,在选项用有一个串口,选择端口,波特率,如图9所示:
图9$ ?0 \3 A# H; j1 M 点击连接,可以看到不断的在输出。如图10所示:
图10( V& _6 p F; ~8 R+ S' {2 \1 \ * y' f# g9 S2 \ 打开声音发生器,靠近板卡,播放1,就会key1的位置,播放2,就会听到key2的位置。; U* w* u& c/ D& ?2 }) Y5 y 这就是整个的音频分类器的实现过程,可扩展性很强,代码可以自己继续修改,实现更好的显示和功能,也可以使用其他传感器,比如加速度,比如震动传感器继续学习,测试。期待下一个测试项目。% E' _) D- Y6 c# F5 E8 w# N0 H+ f4 I |
STM32L4R9 QuadSPI Flash通讯速率优化解析 32位总线的DMA传输适配核心方案
【STEVAL-STWINKT1B评测】运行Datalog固件并记录运行时间
【STEVAL-STWINKT1B评测】数字麦/模拟麦对比测试+音频配套上位机软件开发
【板卡评测】STEVAL-STWINKT1B读取 ACC/GYRO/MAG 实时数据
小白也能明白的STM32的低功耗与唤醒机制
【STM32入门学习路径指南】(四步走)
STM32和Arduino对比,谁更耐打?
STM32系统中2种数据掉电保护的方法
STM32 LL为什么比HAL高效?
STM32小白入门指南:从基础到OTA实现方案
微信公众号
手机版