Tomofun AI 落地實例分享 — Furbo AI 聲音警報 (上)

Henry Cheng
Tomofun Tech Blog
Published in
8 min readMay 18, 2023

隨著 AI 技術的快速發展,將優秀的 AI 技術成功地融入產品中已成為一個非常重要的課題。Tomofun 一直以來都保持著敏捷的態度,以使用者為核心,致力於打造真正能夠解決問題的產品。

Furbo 的開發過程中,我們 AI 團隊想與大家分享聲音警報功能上所經歷的心路歷程,包括 AI 聲音警報的運作原理以及如何將聲音模型應用到產品中

Furbo AI 聲音警報功能

Furbo Dog Nanny 是 Furbo 的訂閱制軟體服務,專門針對狗狗的聲音和影像進行精確辨識和通知。除了可以辨識狗狗叫聲和不同行為的通知,還提供了保護毛小孩安全的環境音通知功能,在主人不在家時扮演狗褓母的角色。

今天就來分享 Furbo Dog Nanny 一項非常重要的功能 — 「AI 聲音警報」。

AI 聲音警報包含兩種功能:

  • 「居家警報通知」:當 Furbo 偵測到煙霧偵測警報器響起或家中玻璃破碎的聲音時,會傳送警示通知給主人查看家中寶貝是否安全。
  • 「進階狗狗吠叫通知」:當 Furbo 偵測到狗狗吠叫時,AI 偵測系統會將狗狗吠叫通知細分為連續吠叫哭哭嗷嗚等項目,讓主人更精準掌握家中寶貝的情況。

AI 聲音警報如何運作

聲音分類介紹

聲音分類 (Audio Classification) 是一種將聲音數據,按照不同的類別或類型進行分類的過程。聲音數據包含各種聲音信息,例如語音、環境音等等。

相對於聲音分類,我們更常接觸到的是影像分類 (Image Classification) ,例如知名的大規模影像分類資料集 ImageNet [1],或經典的 CNN 影像分類模型 LeNet [2]、VGGNet [3]、ResNet [4],以及近年來快速竄起的 transformer 架構的模型,例如 ViT [5]。

儘管聲音與影像在呈現方式上有所不同,它們本質上都是透過裝置收集的訊號。因此,我們可以採用類似影像分類的架構對聲音進行分析。

聲音前處理

聲音檔案是由許多數字訊號組成,無法直接輸入到模型中,為了讓AI模型能夠更有效地處理聲音數據,需要進行聲音前處理。

  1. 聲音數據讀取:常見聲音檔案(wav, mp3 等) 會包含聲音數據及採樣率(sample rate),可以利用 Librosa, Pydub 等函式庫來讀取到程式中。
  2. 聲音數據前處理:在進行聲音分析或應用之前,可以先對聲音數據進行一些前處理來提高後續分析的準確性與效果。常見的前處理包含標準化、降噪、重新採樣、音量調整等。
  3. 聲音數據轉換:要將這些聲音數據輸入到 AI 模型中分析,需要先把這些聲音數據轉換成AI模型可以計算的輸入形式,常見的作法是將透過短時距傅立葉變換 (Short-time Fourier Transforms, STFT) 將聲音數據轉換成梅爾頻譜圖 (Mel Spectrogram),梅爾頻譜圖是一種將聲音訊號轉換成類似影像的表示方式,將聲音訊號在時間與頻率兩個維度上來表示。
聲音前處理流程圖 (圖片來源)

聲音分類的 AI 模型

將聲音分類變成影像分類

透過聲音前處理把聲音訊號轉換成頻譜圖之後,對於 AI 模型而言,這些頻譜圖就和影像是類似的東西了。在聲音領域之中,也有類似 ImageNet 的 大型資料庫 — 由 Google 開發的大規模聲音數據集 AudioSet [6],其中包含超過200萬筆的標記聲音檔案。

與大多數影像分類模型的作法相同,首先先選擇要使用的模型,無論是 CNN 或者 transformer,再利用像 AudioSet 這種大規模的數據集來預訓練模型,讓模型先訓練好抽取梅爾頻譜圖特徵的能力,最後依照使用情境再去微調 (fine-tune) 模型的分類端 (classification head)。

如何應用到產品中

定義分類類別

針對產品需求,定義需要的聲音類別

  • 狗叫聲:我們希望能夠偵測到狗狗在家是否有異常的狀況,因此我們在分類類別中增加了連續吠叫哭哭嗷嗚的聲音類別。
  • 警報聲:我們也想檢測居家環境中是否會有危害到狗狗們的狀況發生,為此我們在分類類別中增加了玻璃破碎聲煙霧警報聲。
  • 環境聲:環境中的聲音往往不會只有單一個類別,也常常出現混音,為了讓模型也能夠辨別環境中常見的其他聲音類別,例如人說話聲電視聲,我們也會將這些類別加入,讓模型更不會因為聲音而產生誤判。

建立資料集

針對需要的聲音蒐集資料;對收集的資料進行清理;標示資料屬於哪一類別

  1. 資料蒐集:確立產品目標的分類類別後,針對於每個相關類別,可以透過多種方式蒐集,網路爬蟲是比較常見的方法之一,透過網路上公開的資料集或者 youtube 等串流平台較容易蒐集到大量的資料。此外,使用者提供的資料也是重要的來源之一,在 Furbo 的 app 中,也有提供讓使用者自行標註資料的功能(如下圖),讓我們能蒐集更多資料。若遇到較罕見的聲音類別,例如玻璃破碎聲,則可以自行錄製來增加資料量。
  2. 資料清理:在資料收集後,需要對收集到的資料進行清理,去除雜訊或缺失值等。清理資料是建立模型前必須進行的步驟,透過清理資料可以確保模型的準確度及穩定性。在進行資料清理時,可以透過多種方式,例如使用過濾器篩選出不需要的資料、去除重複資料、統一格式等。
  3. 資料標記:在資料清理後,需要對清理後的資料進行標記,標示該資料屬於哪一類別。資料標記是訓練模型前必須進行的步驟,透過標記可以讓模型學習到每個資料屬於哪一類別。在進行資料標記時,可以透過人工標註、自動標註等方式。其中,人工標註是比較精確的方式,但需要花費較多的時間與人力成本;而自動標註是較為快速的方式,但需要進行機器學習及相關技術的應用,例如:半監督式學習 (semi-supervised learning)。

Furbo AI 有一個資料處理團隊,我們一周處理上萬筆的聲音、影像和影片,作為我們訓練和檢驗 AI 模型的資料。

使用者標註介面

選擇適合模型

將 AI 模型部署到產品中時,不能盲目套用最大最強的模型

需要針對每項產品的需求、維護和運行成本處理時間等因素來選擇最適合的模型。同時,也需要考慮我們所蒐集的資料集是否足夠支持這個模型的訓練,因為較大的模型通常需要更多的訓練資料才能取得更好的表現。

在 Furbo Dog Nanny 的產品中,我們採用了 CNN14 模型 [7],這是一種適合處理聲音分類的模型。CNN14 模型以卷積神經網絡為基礎,可以從音訊中提取有用的特徵,並用這些特徵來進行準確的分類。透過這個模型,Furbo Dog Nanny 可以幫助使用者識別出狗狗的叫聲、狀態等等,幫助使用者更好地照顧寵物。

現實是殘酷的…

實際上,在真實世界中建立一個能夠有效運作的 AI 技術並不像前面提到的那麼容易,與在實驗室中訓練一個 AI 模型相比,存在著許多不同之處。在下一篇文章中,我們會與大家分享在將 AI 技術應用於真實世界產品時所面臨的眾多挑戰,以及我們是如何克服這些困難的,敬請期待!

參考資料

[1] ImageNet: A large-scale hierarchical image database

[2] Gradient-Based Learning Applied to Document Recognition

[3] Very Deep Convolutional Networks for Large-Scale Image Recognition

[4] Deep Residual Learning for Image Recognition

[5] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

[6] Audio Set: An ontology and human-labeled dataset for audio events

[7] PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition

--

--