TinyML快速入门_使用Zilltek 麦克风实现TinyML语音辨识

  • 前言

在当今的物联网时代,语音辨识技术的应用日益广泛。本文将介绍如何部署TinyML语音辨识系统,并详细记录从资料收集到模型部署的过程。

 

  • TinyML快速入门:使用Zilltek 麦克风实现TinyML语音辨识

TinyML语音辨识在开发板上的部署 TinyML的实作始于资料的收集。在这一阶段,我们选择了speech_commands资料集进行模型训练。该资料集包含多个语音指令类别,如"down", "go", "left", "no", "right", "stop", "up", "yes"等,可在Tensorflow官方GitHub中找到。

开发环境方面,我们使用Tensorflow2.10和python3.10进行开发,硬体方面则选用了esp32s3-c1。麦克风使用Zilltek ZTS6672 mems mic,IDF使用ESP-IDF,建置project输入指令:

idf.py create-project-from-example "esp-tflite-micro:micro_speech"

会得到esp-tflite-micro的档案


我们使用example中的micro_speech,内容我们需要做一些修改,首先在audio_provider.cc中对i2s输入做一些设定。


另外模型经过训练量化并转成.tflite之后,我们需要将模型转换成二进制,在model.cc中将自己的模型放进去,同时修改g_model_len以匹配模型大小。



在micro_model_settings.h中,根据模型训练时的关键词设定label。例如,若有6个分类,则`constexpr int kCategoryCount`应设为6,并将要辨识的label放入`constexpr const char* kCategoryLabels[kCategoryCount]`中。

 


此外,若想添加语音辨识连动功能,如听到关键词便开灯等操作,在main_function.cc中进行添加即可。只要confidence值高于0.8,就会执行相应指令。


当一切都完成之后就可以进行build的工作,使用ESP-IDF进行,依序输入以下指令:

idf.py set-target esp32s3

idf.py build

idf.py -p /dev/ttyACM0 flash

idf.py -p /dev/ttyACM0 monitor

就可以看到辨识的部分


 

  • 结语

本文记录了笔者在esp32s3-c1上实作TinyML语音辨识的过程。从资料收集到部署实作,每一步都是宝贵的学习经验。希望本文能对同样对TinyML有兴趣的读者有所帮助。

 

  • Q&A
  1. Q:如果辨识不准确,该从哪里下手检查问题?

A:造成辨识不准确有很多可能,可以从麦克风、模型去看。

 

  1. Q:麦克风要怎么检查?

A:要确认收音没问题,可以使用UDP传送PCM给电脑,在使用Pyaudio   将音讯播出来聆听是否有问题。

 

  1. Q:如何确认模型是否准确?

A:从Tensorflow提供的tflite-micro中在tensorflow/lite/micro/examples/micro_speech中有提供evaluate.py,可以喂入wav查看是否准确。

 

  1. Q: 如果在build时遇到Didn't find op for builtin opcode 'CONV_2D' version '3'. An older version of this builtin might be supported. Are you using an old TFLite binary with a newer model?

Failed to get registration from op code CONV_2D该怎么解决?

 

A: main_function.cc检查op是否与模型符合,可以去netron看模型结构。

 

  1. Q:在执行py时遇到FLATBUFFERS_ASSERT(size < FLATBUFFERS_MAX_BUFFER_SIZE);相关问题如何解决?

 

A: /Documents/tflite-micro/tensorflow/lite/micro/build_def.bzl的def micro_copts():中加入    "-Wno-error=sign-compare",,执行时使用bazel build --copt="-Wno-error" evaluate来忽略比较错误便可正常执行。

 

 

  • 引用

micro_speech_dataset下载

tflite-micro github

esp-tflite-micro github

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论