###### tags: `FM634A`
# 如何在 ml5.js 影像分類器或聲音分類器中使用 TeachableMachine 的模型
## TeachableMachine
隨著實作 AI 的門檻已逐漸降低, 也不再是專業研究人員才能觸碰的領域, 想直接應用既有的機器學習服務如 Teachable Machine, 僅需要簡單幾步驟即可訓練自己的分類器模型, 甚至還可以利用網路服務來橋接開發板及各項硬體, 便利且迅速完成各種應用及實驗。
更多 Teachable Machine 相關教學應用可參考:
[Flag's 創客‧自造者工作坊 超入門!AI 聲音姿態影像辨識大應用](https://www.flag.com.tw/books/product/FM633A)
## LAB01_影像分類器
### 建立影像分類器模型
使用瀏覽器連線至
[https://teachablemachine.withgoogle.com/train/image](https://teachablemachine.withgoogle.com/train/image)
按畫面中 2 個分類名稱旁的鉛筆圖示, 修改分類名稱為「me」以及「hand」:

按圖示 Webcam

開始拍攝「me」樣本, 持續按著 **Hold to Record** 可連續拍攝, 拍攝同時請移動頭部在畫面中至不同位置及角度, 數量大約超過 50 張即可:

再以相同方法拍攝「hand」樣本, 伸出手在畫面中擺出不同角度:

拍攝完成按下網頁中間的 Train Model 開始訓練:

模型訓練中必須維持瀏覽器畫面在該網頁才能持續進行:

訓練完成後, 畫面最右邊會出現 Preview 即時預覽畫面, 這時可伸出手至畫面中來驗證模型預測準確性, 下方會有即時不同分類的預測信心值 (百分比):

若覺得模型預測效果有符合預期後, 可按右上角 **Export Model** 將模型上傳至雲端, 若效果不彰則可回到畫面左邊, 重複操作前面拍攝樣本方法, 在不同分類增加更多樣本後再次訓練:

按 Upload my model 上傳模型:

待上傳完成後, 就會出現模型網址, 後面就可以使用該模型來應用:

### 應用至 ml5.imageClassifier
打開**LAB01_影像分類器**範例程式後, 先依照手冊所敘方法建立副本, 再將第 4 行程式前的「//」刪除, 並貼上前面操作 Teachable Machine 訓練好的模型網址:


將程式第 15 行前面的「//」刪除:

再將第 13 行**程式碼**整行刪除, 即可執行程式:


執行程式後, 待主控台出現「模型讀取完畢」, 即可伸出手至畫面中辨識, 預覽畫面下方也會顯示目前預測分類以及信心值:

## LAB10_語音辨識
### 建立聲音分類器模型
使用瀏覽器連線至[https://teachablemachine.withgoogle.com/train/audio](https://teachablemachine.withgoogle.com/train/audio)
再按畫面下方 **Add a class** 增加分類為 3 個 (包含 Background Noise):

按下分類名稱旁邊的鉛筆圖示, 將第 2, 3 分類名稱分別改為「go」以及「up」:

首先錄製 **Background Noise** 樣本, 該樣本為錄製**環境聲音**或是**非特定分類**, 按下第 1 個分類下的圖示 Mic 
, 首次會出現硬體授權對話框, 按下允許:

按下 **Record 20 Seconds** 按鈕後會開始進行連續 20 秒長度的聲音錄製 (實際轉換成樣本時會自動分割為每秒一段樣本), 這時請說出與其他分類不同的樣本, 如「dog, pig, log, pop...」:

每次錄製完成後記得按下 **Extract Sample** 將錄製結果加入該分類樣本:

可以重複執行以上步驟錄製更多樣本, 該分類最多為 20 分鐘:

接著錄製「go」分類樣本, 預設為每次 2 秒, 若要連續錄製較長時間可以按旁邊的齒輪圖示設定:

再將 **Duration** 改為 **20** seconds, 完成後按 **Save Settings**:

持續錄製「go」樣本後, 記得每次錄製完成要按下 Extract Sample:

最後以相同方法錄製「up」分類:

完成樣本錄製後即可按下畫面中間的 **Train model** 開始訓練模型:

模型訓練中必須維持瀏覽器畫面在該網頁才能持續進行:

訓練完成後, 畫面最右邊會出現 Preview 即時預覽畫面, 這時可說出「go」或是「up」來驗證模型預測準確性, 下方會有即時不同分類的預測信心值 (百分比):

若覺得模型預測效果有符合預期後, 可按右上角 **Export Model** 將模型上傳至雲端, 若效果不彰則可回到畫面左邊, 重複操作前面錄製樣本方法, 在不同分類增加更多樣本後再次訓練:

按 Upload my model 上傳模型:

待上傳完成後, 就會出現模型網址, 後面就可以使用該模型來應用:

### 應用至 ml5.soundClassifier
打開**LAB10_語音辨識**範例程式後, 先依照手冊所敘方法建立副本, 再將第 6 行程式前的「//」刪除, 並貼上前面操作 Teachable Machine 訓練好的模型網址:


先將程式第 32 至 35 行前面的「//」刪除:

再將第 27 至 31 行**程式碼**刪除, 即可執行程式:


待主控台出現「開始辨識」後, 即可分別說岀「up」及「go」辨識, 若該分類信心值超過 0.95 就會顯示於主控台:
