資料介紹
描述
介紹
在這個項目中,我圍繞一個訓練識別單詞left 、right 、up和down的模型構建了一個應用程序。它所做的只是捕獲和處理音頻,將其輸入 TensorFlow Lite 模型,然后在 OLED 顯示器上顯示輸出。我將介紹如何使用 i.MXR1010 評估套件在邊緣設置和進行機器學習。
設置開發環境
任何機器學習和嵌入式電子項目都需要許多硬件和軟件才能使用。我正在使用 MacOS 進行開發。由于 Nvidia GPU 不支持 MacOS,所以我使用 Linux 桌面進行訓練和模型生成。
安裝 MCUExpresso IDE

下載 SDK 后,我們需要將下載的包拖放到 MCUExpresso IDE Installed SDKs區域,如下所示(紅色框)。

我們可以從 Quickstart Panel > New Project 創建一個新項目,它會顯示一個向導,我們可以在其中選擇 IMXRT1010 作為開發板。我們可以使用此向導配置所需的驅動程序/組件,如下所示。添加/刪除驅動程序和其他組件可以在此期間完成。發展。由于我們將使用 TensorFlow C++ 庫,所以我選擇了C++ Project 。

為微控制器安裝 TensorFlow Lite
用于微控制器的 TensorFlow Lite 能夠生成包含所有必要源文件的獨立項目。我的 MCUXpresso IDE 工作區位于 ~/Documents/MCUXpressoIDE_11.1.0/workspace/。您可能需要根據您的目錄結構更改路徑。我們還需要制作3.82 或更高版本。MacOS Catalina 上捆綁的make版本為 3.81。我們可以使用安裝所需的版本
brew install make
并且可以使用gmake命令運行它。
cd ~
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
gmake -f tensorflow/lite/micro/tools/make/Makefile generate_projects
cp -r tensorflow/lite/micro/tools/make/gen/osx_x86_64/prj/micro_speech/make/* ~/Documents/MCUXpressoIDE_11.1.0/workspace/IMXRT1010_Speech_Recognition/source
復制后,我們將擁有 TensorFlow C++ 庫以及其他一些用于音頻處理的第三方庫。我們需要使用Quickstart Panel > Edit Project Settings > C/C++ build > Settings > MCU C++ Compiler > Includes為不屬于 SDK 的庫(在下面的屏幕截圖中突出顯示)設置包含路徑。

應用程序將捕獲的音頻數據保存在運行時創建的緩沖區中,因此我們需要將默認堆大小(僅 2KB)調整為 14 KB。此外,一些緩沖區數據需要是不可緩存的。我們可以利用 i.MXRT1010 的FlexRAM功能。堆棧/堆大小和不可緩存數據可以使用Quickstart Panel > Edit Project Settings > C/C++ build > Settings > MCU C++ Linker > Managed Linker Script進行配置。

i.MXRT1010 具有有限的 128 KB 內存,分為 32 KB 庫。由于內存溢出,編譯失敗。
section `.heap' will not fit in region `SRAM_DTC'
arm-none-eabi/bin/ld: region `SRAM_DTC' overflowed by 15920 bytes
Memory region Used Size Region Size %age Used
BOARD_FLASH: 215432 B 16 MB 1.28%
SRAM_DTC: 48688 B 32 KB 148.58%
SRAM_ITC: 0 GB 32 KB 0.00%
SRAM_OC: 0 GB 32 KB 0.00%
NCACHE_REGION: 4748 B 32 KB 14.49%
多虧了FlexRAM ,我們可以使用下面的代碼配置變量聲明以選擇內存庫。__DATA(RAM3)用于告訴編譯器將大約 16 KB 的變量g_audio_capture_buffer保存到 FlexRAM 的 OCRAM 部分 (SRAM_OC) 中。
__DATA(RAM3) int16_t g_audio_capture_buffer[kAudioCaptureBufferSize];
編譯后,我們可以在下面看到內存分配的編譯器輸出。
Memory region Used Size Region Size %age Used
BOARD_FLASH: 231432 B 16 MB 1.38%
SRAM_DTC: 32688 B 32 KB 99.76%
SRAM_ITC: 0 GB 32 KB 0.00%
SRAM_OC: 16000 B 32 KB 48.83%
NCACHE_REGION: 4748 B 32 KB 14.49%
訓練數據集和模型生成
我們使用的模型是使用 TensorFlow Simple Audio Recognition 腳本訓練的,這是一個示例腳本,旨在演示如何使用 TensorFlow 構建和訓練音頻識別模型。該模型在帶有 eGPU(Nvidia 1080 Ti)的 Linux 桌面上進行了訓練,其中包含“上”、“下”、“左”、“右”四個詞。數據集中的其他詞被用作“未知”。將創建的模型轉換為 TensorFlow Lite 模型,并將轉換后的模型轉換為 C 數組文件,以便與推理代碼一起部署。TensorFlow Lite Micro SDK 用于在設備上運行推理。卷積神經網絡用于模型創建。
設備端推理
使用帶有增強型直接內存訪問 (eDMA) 控制器的同步音頻接口 (SAI) 捕獲音頻。該過程首先為給定的時間片生成快速傅立葉變換 (FFT),在本例中為 30 ms 的捕獲音頻數據。TensorFlow Lite 模型不接收原始音頻樣本數據。相反,它適用于頻譜圖,頻譜圖是由頻率信息切片組成的二維數組,每個切片取自不同的時間窗口。我們可以將頻譜圖視為輸入模型進行推理的圖像數據。OLED 顯示器通過 I2C 連接到 i.MXRT1010 EVK。The
預測的單詞顯示在 OLED 顯示屏上。
構建和調試
可以分別使用 MCUExpresso IDE Quickstart Panel > Build和Quickstart Panel > Debug來構建和調試項目。使用菜單ConfigTools > Pins將 UART 引腳配置為在調試期間重定向打印。

在 MacOS 上可以使用以下命令查看調試打印:
screen /dev/cu.usbmodem14202 115200
板載 LED 也配置為在推理時閃爍。
演示視頻
現場演示如下。它并不完美,但有效。
改進范圍
如果使用 8 位量化模型,可以提高推理率。目前,TensorFlow Lite Micro SDK 中缺少一些操作,這些操作不允許將 Conv 2D 轉換為量化版本。目前,由于音頻數據中的口音或噪音,有時會漏掉一些單詞。如果使用遷移學習使用更多自己的語音數據進行訓練,則可以提高模型的準確性。此外,板載麥克風數據有一些噪音,可以使用某些設置進行修復,或者可以使用外部數字麥克風以獲得更好的性能。
此應用程序的 MCUExpresso 項目可以在代碼部分提到的 Github 存儲庫中找到。
- Helping Finger開源硬件
- 顏色循環開源硬件
- 開源硬件-警燈
- AirBits開源硬件
- 閃爍的LED開源硬件
- 智能積木開源硬件
- 可識別額外乘客設備的開源硬件
- 音箱開源硬件分享
- HBus開源硬件
- 門鈴開源硬件
- 開源硬件之語音控制LED
- Arduino手表開源硬件
- 機械臂開源硬件
- 基于Arduino硬件光控燈制作資料 7次下載
- 主流的開源硬件有哪些詳細資料說明
- 用小安派開源硬件制作一個桌面天氣站 1007次閱讀
- 尋找開源硬件成功的觸發器 755次閱讀
- 當語音控制和語音接口開始滲透到所有消費類邊緣設備 1772次閱讀
- dfrobot語音識別控制板 介紹 3202次閱讀
- 源創通信BPI-M1+ 開源硬件開發板介紹 2811次閱讀
- 語音識別系統功能_語音識別系統的應用 5694次閱讀
- 語音識別芯片的原理_語音識別芯片有哪些 5308次閱讀
- 利用語音識別技術和嵌入式系統交叉研究是語音識別的一個重要研究方向 1525次閱讀
- 語音識別技術的發展歷程,語音識別是如何工作的?語音識別資料概述 1w次閱讀
- 三大主流開源硬件對比:Arduino vs BeagleBone vs Raspberry Pi 6655次閱讀
- 語音識別技術是什么_語音識別技術應用領域介紹 1.6w次閱讀
- 從應用、算法、芯片角度了解語音識別技術 7838次閱讀
- 開源硬件究竟有多“Open”?看完這個你就清楚了 7124次閱讀
- 語音識別技術原理全面解析 1.2w次閱讀
- 語音識別技術的應用及發展 2346次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論