【Maker Project】如何用AI「聽」出水的溫度?

作者:謝品安

你知道其實我們可以「聽」出水的溫度嗎?hackster.io上的創作者MJRoBot (Marcelo Rovai)在看了介紹人可以聽出水溫的YouTube影片後,對於為什麼不同溫度的水倒出的時候會有不同的聲音感到非常好奇。由於影片中沒有提到太多原理的部份,因此他決定嘗試用他在AI訓練和神經網路的專業來做一個能夠判別冷熱水的感測器,來看看「聆聽溫度」的能力能否透過AI實現。

實驗構想

首先,他們使用了兩個相同的玻璃杯作為裝水的容器,並將冷熱水的溫度差異控制在攝氏50度左右(冷水11度,熱水61度),且每次收集聲音的時間大約3到5秒。聲音的收集也是採用相同的數位式麥克風,而且只採樣水倒進杯子時的聲音。

實驗方式

系統架構

在收集完數據後,他們將結果上傳至Edge Impulse Studio,神經網路(Neural Network, NN)的模型會在這裡訓練、測試和實際部署到手機上做應用。最終的目標是取代溫度計,透過麥克風檢測水的溫度並發展成一個聲音分類的模型。而數據的收集可以透過手機或是Ardunio Nano做為「麥克風」,將收集到的聲音上傳至雲端後再將結果回傳。

數據收集和整理

如上面所介紹的,聲音的收集採用數位式麥克風(這裡他使用iPhone)。他總共收集了兩種結果並上傳至他的電腦中,分別是冷水倒入杯中和熱水倒入杯中的聲音。將原始數據上傳至Edge Impulse Studio後,他擷取每筆數據中沒有倒水的一秒鐘,將其定義為背景噪音。

最後,大約只有百分之十的結果被保留到模型訓練。而直接使用神經網路模型對聲波進行分類比較困難,因此他們利用Edge Impulse Studio上Audio (MFE)的選項,將聲波轉換成圖像以利於後續神經網路的訓練。

AI訓練和部署

透過Edge Impulse Studio上的Audio (MFE)將聲波轉換成圖像後,就可以開始進行神經網路模型的訓練。這裡它們採用Edge Impulse Studio建議的一維卷積神經網路(1D CNN)做為參數設計,訓練好的模型大約有93.5%的準確率。

最後他們將訓練好的模型部署到Arduino Nano上做測試,冷水(藍色LED亮起)幾乎每次都能夠被正確的判別,而熱水(紅色LED亮起)有時會被辦別為冷水,他們認為是收集的數據太少。有趣的是,冷水可以被音頻較高的哨子觸發,而熱水會被紙刮桌子表面的聲音觸發。

小結

雖然這只是個簡單的實驗,但結果比意想中來的好。這證明了透過聲音來辨別水的溫度是十分有希望的,而且可以透過神經網路來完成。當然也是透過Edge Impulse Studio才讓他們可以在短短的幾天時間完成這樣的運算。也許未來可以從這些結果來了解大腦是如何從「聲音」判斷這麼多資訊的。

(參考資料:“Listening Temperature” with TinyML

謝品安

Author: 謝品安

剛接觸Maker的貓奴,沒事就泡在網上好幾小時,喜歡搜尋有趣新奇的東西!

Share This Post On

發表

跳至工具列