 
 
您可以使用 MediaPipe Audio Classifier 工作,將音訊片段分類至一組已定義的類別,例如吉他音樂、火車汽笛或鳥鳴。這些類別是在訓練模型時定義。這項工作會使用機器學習 (ML) 模型,以獨立的音訊片段或連續串流形式處理音訊資料,並輸出可能類別清單,並依機率分數由高至低排序。
開始使用
請按照下列目標平台的導入指南操作,開始使用此工作。這些平台專屬指南將逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例:
這些平台專屬指南會逐步引導您完成這項工作的基本實作方式,包括建議的模型,以及含有建議設定選項的程式碼範例。
任務詳細資料
本節說明此工作的功能、輸入內容、輸出內容和設定選項。
功能
- 輸入音訊處理:處理作業包括音訊重新取樣、緩衝、格式化和傅立葉轉換。
- 標籤對應語言代碼:設定顯示名稱所使用的語言
- 分數門檻:根據預測分數篩選結果。
- 前幾名偵測功能:篩選數字偵測結果。
- 標籤許可清單和拒絕清單:指定偵測到的類別。
| 工作輸入內容 | 任務輸出 | 
|---|---|
| 輸入內容可以是下列其中一種資料類型: 
 | 音訊分類器會輸出包含以下內容的類別清單: 
 | 
設定選項
此工作提供下列設定選項:
| 選項名稱 | 說明 | 值範圍 | 預設值 | 
|---|---|---|---|
| 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 Classifier 處於音訊串流模式時,將結果事件監聽器設為以非同步方式接收分類結果。只有在執行模式設為 AUDIO_STREAM時,才能使用 | 不適用 | 未設定 | 
模型
音訊分類器需要下載音訊分類模型,並儲存在專案目錄中。開始使用此工作進行開發時,請先使用目標平台的預設建議模型。其他可用的模型通常會在效能、準確度、解析度和資源需求之間取得平衡,在某些情況下還會包含其他功能。
Yamnet 模型 (建議)
Yamnet 模型是一種音訊事件分類器,已在 AudioSet 資料集中完成訓練,可預測 AudioSet 資料中定義的音訊事件。如要瞭解這個模型辨識的音訊事件,請參閱模型標籤清單。
| 模型名稱 | 輸入形狀 | 量化類型 | 版本 | 
|---|---|---|---|
| YamNet | 1 x 15600 | None (float32) | 最新 | 
工作基準
以下是根據上述預先訓練模型,針對整個管道的作業基準。延遲時間結果是 Pixel 6 使用 CPU / GPU 的平均延遲時間。
| 模型名稱 | CPU 延遲時間 | GPU 延遲時間 | 
|---|---|---|
| YamNet | 12.29 毫秒 | - |