MediaPipe 音訊分類器工作可讓您將音訊片段分類為一組已定義的類別,例如吉他音樂、火車口哨或鳥類的歌曲。這些類別會在模型訓練期間定義。這項工作會使用機器學習 (ML) 模型做為獨立音訊片段或連續串流處理音訊資料,並輸出潛在類別清單 (按機率分數遞減排序)。
開始使用
如要開始使用這項工作,請按照目標平台適用的任一實作指南操作。下列平台專用指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:
這些平台專用指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例。
任務詳細資料
本節說明這項工作的功能、輸入、輸出和設定選項。
功能
- 輸入音訊處理 - 處理包括音訊重新取樣、緩衝處理、取景和四次轉換。
- 標籤地圖語言代碼 - 設定顯示名稱所使用的語言
- 分數門檻:根據預測分數篩選結果。
- Top-K 偵測:篩選數字偵測結果。
- 標籤許可清單和拒絕清單:指定偵測到的類別。
工作輸入內容 | 工作輸出內容 |
---|---|
輸入內容可以是下列任一資料類型:
|
音訊分類器會輸出包含以下內容的類別清單:
|
設定選項
這項工作有以下設定選項:
選項名稱 | 說明 | 值範圍 | 預設值 |
---|---|---|---|
running_mode |
設定工作的執行模式。音訊分類器提供兩種模式: AUDIO_CLIPS:用於在獨立音訊片段上執行音訊工作的模式。 AUDIO_STREAM:對音訊串流 (例如透過麥克風) 執行音訊工作的模式。在這個模式下,必須呼叫 resultListener 才能設定事件監聽器,以非同步方式接收分類結果。 |
{AUDIO_CLIPS, AUDIO_STREAM } |
AUDIO_CLIPS |
display_names_locale |
設定標籤語言,用於工作模型中繼資料內的顯示名稱 (如有)。英文的預設值是 en 。您可以使用 TensorFlow Lite Metadata Writer API,在自訂模型的中繼資料中加入本地化標籤。 | 語言代碼 | en |
max_results |
設定要傳回的最高評分分類結果數量上限 (選用)。如果小於 0,系統會傳回所有可用的結果。 | 任何正數 | -1 |
score_threshold |
設定預測分數門檻,覆寫模型中繼資料 (如有) 中提供的分數門檻。這個值下方的結果遭到拒絕。 | [0.0、1.0] | 未設定 |
category_allowlist |
設定允許的類別名稱 (選用)。如果不是空白,系統會篩除類別名稱不在這個組合中的分類結果。系統會忽略重複或不明的類別名稱。這個選項與 category_denylist 互斥,且同時使用兩者會導致錯誤。 |
任何字串 | 未設定 |
category_denylist |
設定不允許使用的類別名稱清單。如果不是空白,系統會篩除類別名稱在此集合中的分類結果。系統會忽略重複或不明的類別名稱。這個選項與 category_allowlist 互斥,且同時使用兩者會導致錯誤。 |
任何字串 | 未設定 |
result_callback |
設定結果事件監聽器在音訊分類器處於音訊串流模式時,以非同步方式接收分類結果。只能在執行模式設為 AUDIO_STREAM 時使用 |
不適用 | 未設定 |
模型
音訊分類器需要下載音訊分類模型,並儲存在您的專案目錄中。開始使用這項工作進行開發時,請先針對目標平台採用的預設建議模型。其他可用的模型通常會在效能、準確率、解析度和資源需求之間取得取捨,在某些情況下還包括其他功能。
Yamnet 模型 (建議)
Yamnet 模型是以 AudioSet 資料集訓練而成的音訊事件分類器,可預測 AudioSet 資料中定義的音訊事件。如要瞭解此模型識別的音訊事件,請參閱模型的標籤清單。
模型名稱 | 輸入形狀 | 量化類型 | 版本 |
---|---|---|---|
YamNet | 1 張 15600 張 | 無 (float32) | 最新 |
工作基準
以下為整個管道根據上述預先訓練模型所產生的工作基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。
模型名稱 | CPU 延遲時間 | GPU 延遲時間 |
---|---|---|
YamNet | 12.29 毫秒 | - |