聲音分類是機器學習任務中的一項,您向機器學習模型輸入一些聲音將其分類成預定義的類別,例如犬吠聲、汽車鳴笛聲等。目前,已有許多聲音分類應用,檢測非法砍伐活動、檢測座頭鯨的聲音以更好地了解它們的自然行為。
測非法砍伐活動
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
我們很高興地宣布,現在 Teachable Machine 可用于訓練您自己的聲音分類模型,并可導出 TensorFlow Lite (TFLite) 格式模型。然后,您可以將 TFLite 模型集成到移動應用或物聯網設備。這是快速運行聲音分類的簡便方式,分類之后,您可以在 Python 中探索構建生產模型,再將其導出到 TFLite。
Teachable Machine
https://teachablemachine.withgoogle.com/
模型架構
Teachable Machine 使用小型卷積模型對 1 秒音頻樣本進行分類。如上圖所示,模型接收聲譜圖(通過傅里葉變換獲取的聲音的 2D 時頻表示形式)。它首先會處理具有連續二維卷積層和最大池化層的聲譜圖。模型以多個全連接層結束,這些層與隨機 dropout 層交錯,用于減少訓練過程中的過擬合。模型的最終輸出是一個概率分數數組,要訓練模型識別的每個聲音類都有一個概率分數。
在 Python 中使用此方式訓練您自己的聲音分類模型,請查看此教程。
教程
https://tensorflow.google.cn/tutorials/audio/simple_audio
使用您自己的數據集訓練模型
使用您自己的數據集訓練聲音分類模型有如下兩種方式:
簡單方式:連一行代碼都不需要寫,使用 Teachable Machine 收集訓練數據,并且全部在瀏覽器中訓練模型。這種方式適用于想通過交互方式快速構建原型的用戶。
穩健方式:提前錄制要用作訓練數據集的聲音,然后使用 Python 訓練并認真地評估模型。當然,這種方法的自動化以及可重復性也高于簡單方式。
使用 Teachable Machine 訓練模型
Teachable Machine 是一款可用于創建訓練數據集和訓練多種機器學習模型的 GUI 工具,包括圖像分類、姿態分類和聲音分類。Teachable Machine 底層使用 TensorFlow.js 訓練機器學習模型。您可以將訓練的模型導出為 TensorFlow.js 格式,以在網絡瀏覽器中使用,或者導出為 TensorFlow Lite 格式,以在移動應用或物聯網設備中使用。
下面是訓練模型的步驟:
前往 Teachable Machine(https://teachablemachine.withgoogle.com)網站
創建一個音頻項目
為您想要識別的每個類別錄制一些聲音片段。每個類別只需要 8 秒的聲音
開始訓練。完成后,您就可以在實時音頻源上測試您的模型
以 TFLite 格式導出模型
使用 Python 訓練模型
如果錄音長達幾個小時或者有數十個類別,則在網絡瀏覽器上訓練聲音分類可能耗時很長。在這種情況下,您可以提前收集訓練數據集,將它們轉換成 WAV 格式,然后使用此 Colab Notebook(包括將模型轉換成 TFLite 格式的步驟)訓練聲音分類。Google Colab 提供免費的 GPU,幫助您大幅提升模型訓練的速度。
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 聲音分類模型訓練完成后,您便可將其放到此 Android 示例應用中試用。只需按照以下步驟操作: 1. 從 GitHub 克隆示例應用:
git clone https://github.com/tensorflow/examples.git 2. 將聲音分類 Android 應用導入 Android Studio。您可以在 lite/examples/sound_classification/android 文件夾中找到它。 3. 將模型(soundclassifier.tflite 和 labels.txt)添加到 src/main/assets 文件夾中,替換其中已有的示例模型。
4. 構建應用并將其部署到 Android 設備上。現在,您就可以實時對聲音分類啦!
要將該模型集成到您自己的應用中,您可以將 SoundClassifier.kt 類從示例應用和已經訓練的 TFLite 復制到您的應用。然后,您可以按如下方式使用該模型:
1. 從 Activity或 Fragment類初始化 SoundClassifier實例。
var soundClassifier: SoundClassifier soundClassifier = SoundClassifier(context).also { it.lifecycleOwner = context }
2. 開始從設備的麥克風捕獲實時音頻,并實時分類:
soundClassifier.start()
3. 作為可讀類名稱的映射接收實時分類結果,以及當前聲音屬于每個特定類別的概率。
let labelName = soundClassifier.labelList[0] // e.g. "Clap" soundClassifier.probabilities.observe(this) { resultMap -> let probability = result[labelName] // e.g. 0.7 }
未來計劃
我們正在開發 iOS 版本的示例應用,它將于幾周后發布。我們還會擴展 TensorFlow Lite Model Maker 以簡化 Python 中聲音分類的訓練。敬請期待!
Model Maker
https://tensorflow.google.cn/lite/guide/model_maker
致謝
此項目由 Google 內部的多個團隊聯合開發。特別感謝:
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
責任編輯:xj
原文標題:使用 TensorFlow Lite 快速構建移動端聲音分類應用
文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉載請注明出處。
-
機器學習
+關注
關注
66文章
8441瀏覽量
133091 -
移動端
+關注
關注
0文章
42瀏覽量
4446 -
tensorflow
+關注
關注
13文章
329瀏覽量
60631 -
TensorFlow Lite
+關注
關注
0文章
26瀏覽量
647
原文標題:使用 TensorFlow Lite 快速構建移動端聲音分類應用
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
用TAS5711把一路聲音分到兩路輸出,為什么在GDE生成的數組寫進去對應的寄存器,濾波器并不起作用?
快速部署Tensorflow和TFLITE模型在Jacinto7 Soc
![<b class='flag-5'>快速</b>部署<b class='flag-5'>Tensorflow</b>和TFLITE模型在Jacinto7 Soc](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開發環境并測試
![第四章:在 PC 交叉編譯 aarch64 的 <b class='flag-5'>tensorflow</b> 開發環境并測試](https://file1.elecfans.com//web2/M00/03/B0/wKgZombFw76AL0kiAAAlnR_5Lkc646.png)
評論