在介紹文章開始之前,首先感謝ideas Hatch、物聯網智造基地執行單位財團法人資訊工業策進會免費提供【國產IC智造工具包】之【中光電智能感測 CoreMaker-01】開發板進行測試。此篇文章為入門者起手式,後續如果大家想更了解如何應用於各種智能感測應用,歡迎持續追蹤系列文章。
智慧物聯網(Artificial Intelligence + Internet of Thing, AI+IoT, AIoT)技術已經推動了約五年,相信大家應該都不太陌生。其主要核心就是整合「感測」、「計算」、「通訊」及「智能分析」等技術,提供如農業、工業、城市、家庭等各項智慧應用,讓大家能更方便透過通訊技術來了解遠端環境資訊並控制相關設備,同時提供更多智能分析能力,包括分類、預測及決策。
通常AIoT應用都有大量布建的需求,所以需要高整合度、高彈性、足夠算力、低功耗的晶片,尤其低成本更是核心關鍵,所以大多使用具短距無線通訊(如WiFi, Bluetooth, ZigBee等)能力的單晶片微處理器(Single Chip Microprocessor或稱Micro Control Unit, MCU)來當作主要元件,少數則會採MCU加上遠距通訊模組(WiFi, LoRa, NBIoT, Sigfox, 4/5G等)來組成。不過以由於各種MCU的計算能力、程式碼(Code Flash)、隨機存取記憶體(SRAM)容量大小相差頗大,所以對於AI的處理多半是將資料傳送到雲端進行智能應用相關計算,以確保使用者智能應用體驗不會產生過多差異。
近年來由於MCU的計算能力逐漸提升,分別從處理的位元數(8 / 16 / 32 Bit)、工作時脈(MHz)、每秒百萬指令數(MIPS)、平行/向量指令集(SIMD/Vector)甚至多核心(Multi-Core)都有明顯成長,因此有許多人開始把微型AI應用(如語音命令、振動分析、運動型手勢、視覺喚醒等)及機器學習(Machine Learning, ML)工作(如分類、迴歸等)直接搬到MCU上執行,如此就可在沒有網路下仍能進行AI應用服務。
基於這樣的趨勢,國際上許多大廠紛紛跳出來組成聯盟,推動以MCU進行微型AI或ML的應用,其中又以2019年成立的tinyML基金會[1]為現有最大的國際組織。目前該基金會對微型機器學習(Tiny Machine Learning, tinyML)並沒給出嚴格定義,只要能以極低功耗(mW等級)不連網獨立運行微型AI / ML應用的系統,包含硬體(如晶片)、感測器(視覺、聲音、運動等)、算法(或分析軟體)皆在其範圍。其目的在實現以電池就能推動常時工作(Always On)的AI / ML服務,在特定條件下幾個月甚至幾年都不用換電池。如果想更深入了解MCU和tinyML之間的關連,可參考「當智慧物聯網(AIoT)遇上微型機器學習(tinyML)是否會成為台灣單晶片(MCU)供應鏈下一個新商機!?」[2]。
前面介紹了MCU和tinyML的關係,接下來就幫大家介紹如何在國產IC開發板【中光電智能感測CoreMaker-01】加上【tinyML AI整合型開發平台SensiML】完成一個簡單的tinyML案例「芝麻開門:智慧語音命令控制系統」。主要包含下列幾個分項。
- CoreMaker-01開發板簡介和比較
- CoreMaker-01開發環境建置與運行
- 在芝麻開門之前─認識智能語音命令控制
- SensiML整合式tinyML開發環境介紹
- SensiML自定義語音命令辨識範例
* CoreMaker-01開發板簡介和比較
說到tinyML應用的通用開發板,大概第一個就會想到【Arduino Nano 33 BLE Sense】(以下簡稱BLE Sense),它大概是目前最多tinyML開發平台(如Edge Impulse, SensiML, Nuton等)支援的板子,主晶片為Nodic nRF52840,其核心CPU為Arm Cortex-M4F(工作時脈64MHz),自帶無線藍牙通訊(BLE),並配置有多種感測器,如微機電型麥克風、九軸運動感測器(加速度、陀螺儀、地磁計各3軸)、氣壓計、溫濕度計、手勢 / 近接 / 照度感測器,支援Arduino IDE開發介面。[3]
而今天要介紹的【中光電智能感測CoreMaker-01】(以下簡稱CoreMaker-01)在硬體規格上也非常近似,主晶片是亦是國產IC,新唐M484SIDAE,其核心亦為Arm Cortex-M4F,工作時脈為192MHz,比nRF52840快了三倍。在程式碼和隨機記憶體容量上雖然較nRF52840分別少了512KB(50%), 96KB(37.5%),但在微型AI應用上仍是夠用的,若後續再搭配像SensiML的AI模型優化(瘦身)功能,那就容量小就更不是問題了。在感測器上,常用的麥克風、溫濕度計、氣壓計等也是有的,只是運動感測器(IMU)部份分別採用二個獨立元件,三軸加速度計和三軸地磁計而少了陀螺儀,所以在有旋轉運動的部份僅靠直線運動加速度計可能難以正確偵測。無線通訊部份則搭配國產兆雲(iotTech)的WiFi / BT模組,可增加傳輸距離及使用彈性。其它有線通訊上除了USB, UART, I2C, SPI外,另外比BLE Sense多了I2S(串列音訊)及SD卡介面(外部儲存記憶卡卡槽),更方便連接語音播報系統或連續大量儲存感測器信號。在tinyML整合型開發平台上,目前僅支援SensiML,而程式編輯部份則依賴各種文字型IDE(如筆記本, Microsoft VS Code等),至於對初學者來說除錯及單步追蹤功能可能只能靠UART傳輸字串來輔助監看。[4]
二塊tinyML開發板更完整的硬體性能比較表可參見Fig. 1。
Fig. 1 tinyML開發板性能比較表。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
* CoreMaker-01開發環境建置
一般Arm Cortex-M系列MCU在開發時會搭配專業型的整合開發環境(Integrated Development Environment, IDE)來完成MCU環境設置、程式開發、編譯、除錯、單步追蹤、記憶體傾印、輸出入信號監看等工作,常見專業型的IDE包括如Arm Keil MDK, IAR EWARM, MCUXpresso(NXP專用), STMCubeIDE(STM專用)等。而近來該系列很多廠牌的MCU也開始支援Arduino IDE進行開發,簡化很多用法及功能,讓初學者不用了解太多MCU相關知識也能快速上手。
CoreMaker-01的主晶片為新唐M484SIDAE,其核心為Arm Cortex-M4F,若當成一般MCU時,可使用新唐專用IDE NuEclipse或Keil MDK, IAR EWARM等專業型IDE進行開發。這裡為了配合SensiML 開發tinyML應用,採用了命令列介面(Command Line Interface, CLI)來操作,所以在工作前有很多環境需要建置,以下就依序簡單說明之。
目前中光電有提供CoreMaker-01及SensiML完整的操作指南(以Windows為例),詳如官方Github文件[5],以下僅就重點,摘要說明之。如Fig. 2下半部所示,首先要下載並安裝各種開發工具,包括Python (3.6版以上)、Git(下載CoreMaker-01工具包和Arm Mbed作業系統用)、CMake(3.19.0版以上,建立及管理建置編譯環境檔)、Ninja(1.0版以上,小型建構系統)、Arm Mbed CLI(Arm小型嵌入式作業系統Mbed命令列介面)、GNU Arm Toolchain(10.3-2021.10版)及Microsoft VS Code(程式編輯器,以下簡稱VS Code)。若有其它習慣的文字型程式編輯器亦可,甚至直接用Windows上的筆記本(Notepad)都可以。另外為了方便觀察最後MCU UART的文字輸出結果,需在PC端另外安裝如Tera Term(Windows)或PuTTY(Windows, Linux, Mac)或Minicom(Linux)。
準備好上述工具後,接著就使用Git到Github下載CoreMaker-01的完整開發包(含電路圖、範例程式、安裝程序、工具程式及相關文件等)[6]。下達Git命令前請先切換到使用者路徑(如C:\Users\使用者名稱或其它自定義路徑)再下達Git命令,如Ex. 1 步驟2。完成後會自動在該路徑下產生一個名為CoreMaker-01的新路徑(含Arm Mbed作業系統相關程式)。這裡提醒一下,請勿使用Github網頁上〔下載〕的按鈕,因為下載後會缺少Arm Mbed-OS相關程式。
接著先對下載的CoreMaker-01開發包進行第一次編譯,順便驗證所有開發環境是否都已正確安裝,如Ex. 1步驟5。第一次編譯會花10~20分鐘,視工作的電腦的等級和配備而不同編譯時間。完成編譯後會自動在CoreMaker-01\cmake_build\AIOT2101\develop\GCC_ARM路徑下產生檔名為AIOT_2101.bin的MCU燒錄用二進檔。
最後就可以把編譯完成的二進制檔燒錄到MCU中,如Ex. 1步驟6。由於CoreMaker-01開發包中位於CoreMaker-01\CMC_ISP路徑下的燒錄工具程式是壓縮檔(CMC_ISP.zip),所以要先使用解壓縮工具(如7-zip等)將其解壓縮成CMC_ISP.exe才能執行後續燒錄MCU工作。燒錄前先插入USB纜線開始供電,接著同時按下板上SW1及SW2,再來先放開SW1,再放開SW2,此時板上紅色LED熄滅不再閃爍,表示進入等待燒錄模式。接著執行CMC_ISP.exe,選擇連線介面為〔USB〕,點擊〔Connect〕按鈕,若成功會出現綠色字樣〔Connected〕,接著選擇欲燒錄的二進檔(*.bin),即CoreMaker-01\cmake_build\AIOT2101\develop\GCC_ARM\AIOT_2101.bin,點擊〔Start〕按鈕就會開始燒錄,待進度條到達最右邊時即完成燒錄。完成後系統會自動重新啟動執行程式。完整燒錄程序如Fig. 3所示。
以上操作並不包含程式修改,原始程式內容預設執行結果會使板上的紅色LED漸亮再漸滅的呼吸燈模式。如後續有修改程式或引入SensiML產生的程式,那只需反覆執行Fig. 2中下半部所示的編輯、編譯、燒錄程序即可。更完整的操作說明,可參考官方文件[5]第壹至參章內容。
命令列操作範例Ex. 1:
// 1.切換到使用者路徑或其它自定義路徑
cd C:\Users\使用者名稱
// 2.下載CoreMaker-01開發包(含Arm Mbed OS)
git clone –recurse-submodules https://github.com/CoretronicMEMS/CoreMaker-01.git
// 3.進入CoreMaker-01工作路徑
cd CoreMaker-01
// 4.編輯相關源碼(第一次編譯可略過此步驟)
// 5.開始編譯程式
// 完成後會於CoreMaker-01\cmake_build\AIOT2101\develop\GCC_ARM路徑下產生檔名為AIOT_2101.bin的MCU燒錄用二進檔
mbed-tools compile -m AIOT2101 -t GCC_ARM
// 6.切換至燒錄程式路徑並執行燒錄程式
cd ..
cd CMC_ISP
CMC_ISP
Fig. 2 CoreMaker-01開發環境建置及SensiML tinyML AI應用程式開發流程。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
Fig. 3 CoreMaker-01燒錄程式CMC_ISP操作流程。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
* 在芝麻開門之前─認識智能語音命令控制
在童話「一千零一夜」中有一段「阿里巴巴與四十大盗」,故事中只要對著封閉的山洞說「芝麻開門」,藏寶洞的大門就會自動打開。因為這個童話情節於是促成了今日滿坑滿谷的智慧音箱,智能語音助理,語音控制智能家電的出現。
傳統上要辨識語音命令(一秒左右短詞),如開燈、Hi Siri、向左等,需要先連續採集聲音訊號,並將其由類比轉成數位信號,必要時可加入濾波(Filter)處理使信號變得乾淨些,接著經由一連串如時域 / 頻域轉換、傅立葉轉換等數學計算,再提取一定數量具有代表性的特徵,最後以機器學習中分類算法(如KNN, SVM等)來辨識最終結果。
由於同樣的聲音命令可能有音頻(如男女老幼聲音粗細不同)、音調(如發音抑揚挫)、音速(如發音快慢)及環境背景音等眾多干擾因素,所以傳統作法的辨識率一直難以穩定輸出。近年來有許多人工智慧及深度學習算法被提出,包括矩陣資料型卷積神經網路(CNN)、時序資料型循環神經網路(RNN)等,使得語音命令辨識能力及穩定度大幅提升。
一般MCU的開發工程師大部份對嵌入式環境、程序處理、週邊控制都能游刃有餘,不過當遇到要加入這些AI應用到MCU中時就變得無能為力了,因為有太多數學、演算法、模型優化等工作是完全不知從何下手。於是很多廠商看到MCU加AI這個商機,紛紛推出免程式(No Code)或少程式(Few Code)的整合式tinyML應用開發工具或平台,如Google TensorFlow Lite Micro, Arm CMSIS-NN, Edge Impulse, SensiML, Neuton等,以解決MCU工程師不懂或不想學只想用AI的麻煩。
本文主要使用的開發板為CoreMaker-01,目前僅支援SensiML整合型tinyML開發平台[7],接下來就簡單介紹如何整合這兩項工具來開發一個自定義的智能語音命令控制系統。
* SensiML整合式tinyML開發環境介紹
從Fig. 4下半部所示,可得知要開發一個微型的AI應用需要擷取原始信號、資料(分類)標註、算法(模型、參數)產生、韌體(MCU)程式產生及測試驗證等程序。而SensiML就是提供了離線(Data Capture Lab)和線上工具(Analytics Studio、專案管理),方便大家不用懂AI原理、算法,只須專心取樣、標註,而其它如模型建置、訓練、調參、優化甚至產生對應的MCU程式都自動幫大家做好。這樣就可達到幾乎不用寫半行程式(No Code / Few Code)就能享受AI帶來的好處。
如Fig. 4上半部所示,在開發前要先到SensiML[7]官網申請註冊一個帳號,再去下載【Data Capture Lab】,方便後續進行感測器信號擷取及資料分類標註。另外由於【Data Capture Lab】操作時會和SensiML雲端伺服器連接,無法單獨使用,所以一定要有帳號。更多操作細節將於下一節作更完整介紹。
Fig. 4 SensiML整合型tinyML應用程式開發流程、平台及工具。[7] (OmniXRI 2022/7/27整理製作)(點擊圖放大) |
* SensiML自定義語音命令辨識範例
接下來為大家展示如何建立一個簡單的「智能語音命令控制系統」,當說中文的「開燈」、「關燈」時,CoreMaker-01板子會透過UART把語音命令辨識結果文字串傳送到電腦上,其完整工作流程如Fig. 2所示,以下就依序說明如何進行。
- 設定Data Capture Lab工作環境
- 收集語音命令樣本
- 標註語音命令分類
- 建立模型及自動訓練優化
- 選用及轉換模型
- 下載模型、編譯及部署(燒錄)
- 測試驗證與重新訓練
如果想了解SensiML更多用法及其它精彩案例的朋友,可自行參考官方的Toolkit說明網頁[8]。
1. 設定Data Capture Lab工作環境
在本範例中,我們將使用CoreMaker-01板子上的微機電麥克風SPU0410LR5H來取得聲音訊號,使用前要將板子上SW3開關撥成Off, On, On, On,如Fig. 5左方所示。
接著啟動【Data Capture Lab】,如Fig. 5右側所示,登入SensiML帳號後,新增一專案,相關檔案預設會存放在C:\Users\使用者名稱\Documents\SensiML\Projects路徑下。接著為了讓【Data Capture Lab】能接收CoreMaker-01產生的訊號,要匯入裝置設定檔,即\CoreMaker-01\SensiML\AIOT2101\路徑下的simple-stream.ssf。由於【Data Capture Lab】可提供「訊號擷取」(Capture)及「標籤探險者(資料標註)」(Label Explorer)兩種模式,所以要點擊〔Switch modes〕切換到〔Capture〕模式。再來插入Micro USB纜線,電腦會自動配置一個虛擬串列埠(Virtual COM Port, COMx, x表編號),其編號會隨著每個人的電腦而有不同,可透過Windows裝置管理員「連接埠(COM和LPT)」查看虛擬串列埠號。接著點選【Data Capture Lab】下方CoreMaker-01〔Connect〕,開始設定感測器配置(Sensor Configuration)。首先指定使用裝置外掛(Device Plugin)為〔CoreMaker-01〕,按下一步後系統會顯示所有支援的感測器及設定選項。接著指定要擷取信號來源為〔Audio〕(即麥克風),取樣頻率(Sample Rate)設為〔2000〕(即一秒取2000次信號)就足夠辨識一般的語音命令。再來給這個配置一個方便記憶的名字,如Mic_2K。最後要選擇訊號來源,通常擷取模式為〔Live Stream Capture〕,連接模式為〔Serial Port〕(即虛擬串列埠)。如果此時未顯示可用的埠號(如COMx),那就按〔Scan〕進行掃描,若仍掃描不到可用埠號,則重新插拔一次USB插頭再重新掃描一次。最後按下〔Done〕就完成設定。如果後續要變動相關參數,可按下〔Connect〕旁的〔…〕中的〔Sensor Configuration〕就會出現上述的操作容。如仍有不清楚的地方可參考[5]第肆章說明。
Fig. 5 SensiML Date Capture Lab設定連接CoreMaker-01感測器流程圖。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
2. 收集語音命令樣本
設定好工作環境後,再次按下〔Connect〕按鈕,此時板子和Data Capture Lab都沒有任何動靜處於等待狀態,當按下板子上的SW2後,麥克風接收到的訊號才會依取樣頻率轉成數位內容傳送到電腦端的Data Capture Lab中,同時板子上的綠色LED會不停閃爍,表示聲音資料持續傳送到電腦端。此時若對著麥克風發聲,則其音量波形會即時顯示在中間視窗並持續向左移動。
此時聲音訊號還沒開始錄製,大家可以簡單練習一下,發出想要辨識的語音命令,如「開燈」、「關燈」。當然這裡並不限制用什麼語言發音,英語、台語、客家話也沒問題,命令也不限文字內容,原則上語音命令以不超過一秒為佳。待可以穩定發音後,就可按下〔Start Recording〕就能開始錄製,此時按鈕會變成〔Stop Recording〕,按下後就能停止錄音,同時會以日期加序號當成檔名,預設會以*.wav進行存檔 ,若想指定檔名亦可自行輸入。錄製的檔案預設會存在\使用者\文件\SensiML\Projects\專案名稱\Data路徑下。
錄製語音命令時,最好在背景音較小的環境下,麥克風不要離嘴巴太遠,以免錄到的聲音太小。一次可同時錄多組相同命令,但中間要間隔至少0.5到1秒,如Fig. 6中間視窗所示,方便後續資料分割標註。相同命令亦可分成很多個檔案無妨,但同一個檔案則建議不要有不同命令,以免增加標註的時間。另外相同語音命令最好找多個使用者來錄製,如不同性別、年紀、語調、語速等,以增加樣本的多樣性。一般來說,高品質、有效樣本數越多越好,數千以上為佳,如果只是練習,則至少每個分類要有數十筆,才不會讓訓練出的模型及參數有過擬合(overfitting)問題產生。如仍有不清楚的地方可參考[5]第肆章說明。
Fig. 6 Data Capture Lab接收來自CoreMaker-01的聲音訊號並錄制成檔案。(OmniXR 2022/7/27整理製作)(點擊圖放大) |
3. 標註語音命令分類
假設已分別錄製了十個語音命令原始檔(*.wav),每個檔案中有十組相同的語音命令,其中五個檔案是「開燈」命令,而另五個為「關燈」命令。接下來就可以使用【Data Capture Lab】的「標籤探險者」(Label Explorer)來完成資料標註工具了。
如Fig. 7所示,首先點擊〔Switch Mode〕切換到〔標籤探險者〕,接著開啟待標註(分段)的原始聲音檔案(*.wav),此時視窗中間就會出現原始聲音波形,按右下角的播放鍵可以重撥,以確認欲標註的內容。在進行標註前要先建立標籤(Labels),點擊Edit / Project Properties,接著按〔+〕鍵增加標籤文字說明及顏色,這裡先建立兩個標籤〔On〕及〔Off〕。再來將游標移到待分段的位置,點擊滑鼠右鍵,此時會出現兩條藍線,接著游標移到藍色線上按下滑鼠左鍵不放就可左右拖拉調整分段大小,此時上方的分段資訊區會顯示起、迄點位置及長度。有時長度不好調整到整數,此時將游標移到分段區(兩條藍色中間)按下右鍵,選擇〔Adjust Length〕,輸入長度即可自動調整到指定長度。這裡的長度是指取得的筆數,若取樣頻率為2000,則反過來取2000筆就是一秒的資訊量。如果分段區間位置不理想,可將游標移到分段區按下滑鼠右鍵不放拖拉至合適位置。接著依同樣方式把其它分段標註完成,最後不要忘了點選左上角〔Save〕儲存專案及分段相關設定值。
另外為了後續模型訓練在提取特徵能較統一,強烈建議將所有檔案的分段都設成一樣長度。再來以上述步驟把所有原始聲音檔案都完成標註工作。這項工作非常枯燥乏味,但需耐心完成,不然會影響後續模型訓練完成的推論精度。如仍有不清楚的地方可參考[5]第肆章說明。
Fig. 7 Data Capture Lab資料(分段)標註流程圖。(OmniXRI 2022/7/27)(點擊圖放大) |
4. 建立模型及自動訓練優化
使用Data Capture Lab會將專案設定、標註資訊同步到SensiML的Analytics Studio雲端平台[9]。如Fig.8所示,首先進入平台[9]輸入帳密登入系統,此時會看到剛才由Data Capture Lab建立的專案,點擊左側符號即可進入專案中。進入後會展示專案的基本概況(Project Summary),左側則為各分項功能。接著進〔建構模型〕分頁,點擊〔Create Pipeline〕新增一個模型自動建構優化流水線,依序輸入Pipeline及Query名稱,視窗大小及滑動距離。這裡的視窗大小原則上設成和資料分段大小相同,不能超過所有分段最小長度。而滑動距離建議取視窗大小的1/4 ~ 1/2,使後續訓練能有更理想結果。這裡分別設為2000和500。完成(Done)後,畫面會回到〔建構模型〕分頁,此時就可將畫面捲到最下方,按下〔Optimize〕開始建構模型,這個過程會隨資料集大小及相關參數需要數到數十分鐘,建構期間會顯示相關訊息,完成後會自動產生五組模型,方便使用者依不同條件進行選擇。
Fig.8 Analytics Studio新增Query, Pipeline及自動建構優化模型流程。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
5. 選用及轉換模型
經過AutoML算法模型自動產生、訓練、優化後會產生五組模型,分別會顯示精確度(Accuracy)、分類器大小(Classifer Size, Byte)、特徵數量(Number of Features)、敏感度(Sensitivity)及F1-Score,使用者可根據這些數據來選用。如果想知道模型的更進一步資訊,可點擊〔Explore Model〕來探索更多統計表及圖表,其中包括Model Visualization, Confusion Matrix, Feature Summary, Model Summary, Pipeline Summary, Knowledge Pack Summary等分項。如Fig. 9所示,即為參考圖表。
Fig. 9 Analytics Studio探索模型提供的各式統計表及圖表。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
6. 下載模型、編譯及部署(燒錄)
如Fig. 10所示,切換到〔Download Model〕就可下載自己滿意的模型。不過為了配合CoreMaker-01所以下載前要指定編譯平台為〔ARM GCC Generic〕,再按下〔Select Platform〕進行參數設定,其中Float Option一定要改成軟體浮點數(Soft FP),Complier要指定為 GNU Arm Embedded10.3.1版,否則程式運行會發生問題。最後當按下〔Download〕後,稍等幾分鐘,畫面即會出現一個*.zip的檔案詢問要存在電腦的那個路徑。存檔後請自行解壓縮,會得到一個名為libsensiml的檔案夾。只要將其覆蓋掉\CoreMaker-01\libsensiml同名檔案夾即可。
再來依照【CoreMaker-01開發環境建置】小節說明的方法,重新編譯及燒錄程式到板子上,中間不用寫半行程式,即完成部署工作。其完整流程可參考Fig. 2。
Fig. 10 Analytics Studio指定編譯平台及參數並下載流程。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
7. 測試驗證與重新訓練
完成上一步驟後,大家一定會好奇,那最後辨識語音命令的輸出結果在那裡?目前如果採取無碼(No Code)方式(其實碼都已由SensiML處理好了),那輸出只能透過UART輸出字串方式來完成。當USB供電後,按下板子上的SW2就能持續將結果字串傳送到電腦上,綠色LED閃爍表示有在傳送結果。傳送字串的分類編號要參考下載前Knowledge Pack Information的Class Map的定義,完整流程如Fig. 11所示。
Fig. 11 SensiML產生的語音辨識模型部署於CoreMaker-01執行結果。(OmniXRI 2022/7/27整理製作)(點擊圖放大) |
另外,如Fig. 2所示,如果你想將辨識出的結果用來推動實體的週邊(如電器),那就得小修一些程式碼(Few Code),再重新編譯、燒錄(部署)。目前中光電官方Github[6]在CoreMaker-01\Document下有一些參考範例,如WiFi, SD卡, LED控制等,有興趣的朋友可以先參考一下,後續有機會再另文說明。
如果想更進一步了解開發步驟細節,亦可參考官方先前釋出的簡報文件[4]及YOUTUBE教學影片[10]。
小結
本文初步介紹了CoreMaker-01這塊國產的tinyML開發板及說明如何搭配SensiML 的tinyML工具來開發一個很初階的「智慧語音控制系統」,相信有了這個基礎,後續再展開到其它如運動、環境感測器就會更容易上手及發想出更多微型智能應用了。如果您有更多想法想實現但找不到人可以幫忙的話,可直接連絡ideasHatch物聯網智造基地[11],他們會結合原廠提供給您更多的資源。後續如果大家感興趣,將會繼續撰寫系列文章,敬請期待。
參考文獻:
[1] tinyML Foundation
https://www.tinyml.org
[2] 許哲豪, 當智慧物聯網(AIoT)遇上微型機器學習(tinyML)是否會成為台灣單晶片(MCU)供應鏈下一個新商機!?
https://omnixri.blogspot.com/2021/09/aiottinymlmcu.html
[3] Arduino Nano 33 BLE Sense
https://store-usa.arduino.cc/products/arduino-nano-33-ble-sense
[4] 中光電智能感測, CoreMaker-01【活動簡報】線上實作Training
https://www.ideas-hatch.com/assets/att/CoreMaker%E5%AF%A6%E4%BD%9CTraining%E7%B0%A1%E5%A0%B1_20220525.pdf
[5] Github - CoretronicMEMS/CoreMaker-01, coremaker-01操作指南_V1.1
https://github.com/CoretronicMEMS/CoreMaker-01/blob/master/docs/coremaker%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97_V1.1.pdf
[6] Github - CoretronicMEMS/CoreMaker-01
https://github.com/CoretronicMEMS/CoreMaker-01
[7] SensiML
https://sensiml.com
[8] SensiML Toolkit - Getting Started
https://sensiml.com/documentation/guides/getting-started/overview.html
[9] SensiML Analytics Studio
https://app.sensiml.cloud/auth/login
[10] IDEAS Hatch, Youtube 0525國產IC解決方案Core Maker 01 -線上實作training【中光電智能感測款】
https://youtu.be/6jnwAP65qV8
[11] IDEAS Hatch 物聯網製造基地
https://www.ideas-hatch.com/iot_service_hub.jsp
請問這個語音辨識率如何?如果講"拜登" "花燈" "戈登" "開關" "官方" .... 會不會誤偵測?
回覆刪除