聲音分類是機器學(xué)習(xí)任務(wù)中的一項,您向機器學(xué)習(xí)模型輸入一些聲音將其分類成預(yù)定義的類別,例如犬吠聲、汽車鳴笛聲等。目前,已有許多聲音分類應(yīng)用,檢測非法砍伐活動、檢測座頭鯨的聲音以更好地了解它們的自然行為。
測非法砍伐活動
https://v.youku.com/v_show/id_XMzQ4MTUxOTIxNg==.html?spm=a2hzp.8253869.0.0
檢測座頭鯨的聲音
https://ai.googleblog.com/2018/10/acoustic-detection-of-humpback-whales.html
我們很高興地宣布,現(xiàn)在 Teachable Machine 可用于訓(xùn)練您自己的聲音分類模型,并可導(dǎo)出 TensorFlow Lite (TFLite) 格式模型。然后,您可以將 TFLite 模型集成到移動應(yīng)用或物聯(lián)網(wǎng)設(shè)備。這是快速運行聲音分類的簡便方式,分類之后,您可以在 Python 中探索構(gòu)建生產(chǎn)模型,再將其導(dǎo)出到 TFLite。
Teachable Machine
https://teachablemachine.withgoogle.com/
模型架構(gòu)
Teachable Machine 使用小型卷積模型對 1 秒音頻樣本進行分類。如上圖所示,模型接收聲譜圖(通過傅里葉變換獲取的聲音的 2D 時頻表示形式)。它首先會處理具有連續(xù)二維卷積層和最大池化層的聲譜圖。模型以多個全連接層結(jié)束,這些層與隨機 dropout 層交錯,用于減少訓(xùn)練過程中的過擬合。模型的最終輸出是一個概率分?jǐn)?shù)數(shù)組,要訓(xùn)練模型識別的每個聲音類都有一個概率分?jǐn)?shù)。
在 Python 中使用此方式訓(xùn)練您自己的聲音分類模型,請查看此教程。
教程
https://tensorflow.google.cn/tutorials/audio/simple_audio
使用您自己的數(shù)據(jù)集訓(xùn)練模型
使用您自己的數(shù)據(jù)集訓(xùn)練聲音分類模型有如下兩種方式:
簡單方式:連一行代碼都不需要寫,使用 Teachable Machine 收集訓(xùn)練數(shù)據(jù),并且全部在瀏覽器中訓(xùn)練模型。這種方式適用于想通過交互方式快速構(gòu)建原型的用戶。
穩(wěn)健方式:提前錄制要用作訓(xùn)練數(shù)據(jù)集的聲音,然后使用 Python 訓(xùn)練并認(rèn)真地評估模型。當(dāng)然,這種方法的自動化以及可重復(fù)性也高于簡單方式。
使用 Teachable Machine 訓(xùn)練模型
Teachable Machine 是一款可用于創(chuàng)建訓(xùn)練數(shù)據(jù)集和訓(xùn)練多種機器學(xué)習(xí)模型的 GUI 工具,包括圖像分類、姿態(tài)分類和聲音分類。Teachable Machine 底層使用 TensorFlow.js 訓(xùn)練機器學(xué)習(xí)模型。您可以將訓(xùn)練的模型導(dǎo)出為 TensorFlow.js 格式,以在網(wǎng)絡(luò)瀏覽器中使用,或者導(dǎo)出為 TensorFlow Lite 格式,以在移動應(yīng)用或物聯(lián)網(wǎng)設(shè)備中使用。
下面是訓(xùn)練模型的步驟:
前往 Teachable Machine(https://teachablemachine.withgoogle.com)網(wǎng)站
創(chuàng)建一個音頻項目
為您想要識別的每個類別錄制一些聲音片段。每個類別只需要 8 秒的聲音
開始訓(xùn)練。完成后,您就可以在實時音頻源上測試您的模型
以 TFLite 格式導(dǎo)出模型
使用 Python 訓(xùn)練模型
如果錄音長達(dá)幾個小時或者有數(shù)十個類別,則在網(wǎng)絡(luò)瀏覽器上訓(xùn)練聲音分類可能耗時很長。在這種情況下,您可以提前收集訓(xùn)練數(shù)據(jù)集,將它們轉(zhuǎn)換成 WAV 格式,然后使用此 Colab Notebook(包括將模型轉(zhuǎn)換成 TFLite 格式的步驟)訓(xùn)練聲音分類。Google Colab 提供免費的 GPU,幫助您大幅提升模型訓(xùn)練的速度。
Notebook
https://colab.research.google.com/github/tensorflow/tfjs-models/blob/master/speech-commands/training/browser-fft/training_custom_audio_model_in_python.ipynb
通過 TF Lite 將模型部署到 Android
在 TensorFlow Lite 聲音分類模型訓(xùn)練完成后,您便可將其放到此 Android 示例應(yīng)用中試用。只需按照以下步驟操作: 1. 從 GitHub 克隆示例應(yīng)用:
git clone https://github.com/tensorflow/examples.git 2. 將聲音分類 Android 應(yīng)用導(dǎo)入 Android Studio。您可以在 lite/examples/sound_classification/android 文件夾中找到它。 3. 將模型(soundclassifier.tflite 和 labels.txt)添加到 src/main/assets 文件夾中,替換其中已有的示例模型。
4. 構(gòu)建應(yīng)用并將其部署到 Android 設(shè)備上?,F(xiàn)在,您就可以實時對聲音分類啦!
要將該模型集成到您自己的應(yīng)用中,您可以將 SoundClassifier.kt 類從示例應(yīng)用和已經(jīng)訓(xùn)練的 TFLite 復(fù)制到您的應(yīng)用。然后,您可以按如下方式使用該模型:
1. 從 Activity或 Fragment類初始化 SoundClassifier實例。
var soundClassifier: SoundClassifier soundClassifier = SoundClassifier(context).also { it.lifecycleOwner = context }
2. 開始從設(shè)備的麥克風(fēng)捕獲實時音頻,并實時分類:
soundClassifier.start()
3. 作為可讀類名稱的映射接收實時分類結(jié)果,以及當(dāng)前聲音屬于每個特定類別的概率。
let labelName = soundClassifier.labelList[0] // e.g. "Clap" soundClassifier.probabilities.observe(this) { resultMap -> let probability = result[labelName] // e.g. 0.7 }
未來計劃
我們正在開發(fā) iOS 版本的示例應(yīng)用,它將于幾周后發(fā)布。我們還會擴展 TensorFlow Lite Model Maker 以簡化 Python 中聲音分類的訓(xùn)練。敬請期待!
Model Maker
https://tensorflow.google.cn/lite/guide/model_maker
致謝
此項目由 Google 內(nèi)部的多個團隊聯(lián)合開發(fā)。特別感謝:
Google Research:Shanqing Cai、Lisie Lillianfeld
TensorFlow 團隊:Tian Lin
Teachable Machine 團隊:Gautam Bose、Jonas Jongejan
Android 團隊:Saryong Kang、Daniel Galpin、Jean-Michel Trivi、Don Turner
責(zé)任編輯:xj
原文標(biāo)題:使用 TensorFlow Lite 快速構(gòu)建移動端聲音分類應(yīng)用
文章出處:【微信公眾號:TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8438瀏覽量
132989 -
移動端
+關(guān)注
關(guān)注
0文章
42瀏覽量
4435 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60605 -
TensorFlow Lite
+關(guān)注
關(guān)注
0文章
26瀏覽量
645
原文標(biāo)題:使用 TensorFlow Lite 快速構(gòu)建移動端聲音分類應(yīng)用
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論