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次,發文人進小黑屋喔~

評論