音訊課程文件
音訊分類架構
並獲得增強的文件體驗
開始使用
音訊分類架構
音訊分類的目標是預測音訊輸入的類別標籤。模型可以預測覆蓋整個輸入序列的單個類別標籤,也可以預測每個音訊幀(通常是每 20 毫秒的輸入音訊)的標籤,在這種情況下,模型的輸出是一系列類別標籤機率。前者的例子是檢測某種鳥發出的聲音;後者的例子是說話人分離,模型預測在任何給定時刻是哪個說話人在說話。
使用聲譜圖進行分類
執行音訊分類最簡單的方法之一是假裝它是一個影像分類問題!
回想一下,聲譜圖是一個形狀為 (頻率, 序列長度)
的二維張量。在音訊資料章節中,我們將這些聲譜圖繪製為影像。你猜怎麼著?我們可以將聲譜圖直接視為影像,並將其輸入到常規的 CNN 分類器模型(如 ResNet)中,從而獲得非常好的預測結果。更好的是,我們可以使用影像 Transformer 模型,如 ViT。
這正是 Audio Spectrogram Transformer (AST) 所做的工作。它使用 ViT 或 Vision Transformer 模型,並將聲譜圖作為輸入而不是常規影像。由於 Transformer 的自注意力層,模型能夠比 CNN 更好地捕捉全域性上下文。
就像 ViT 一樣,AST 模型將音訊聲譜圖分割成一系列部分重疊的 16×16 畫素影像塊。然後,這些塊序列被投影成一個嵌入序列,並像往常一樣作為輸入提供給 Transformer 編碼器。AST 是一個僅包含編碼器的 Transformer 模型,因此輸出是一系列隱藏狀態,每個 16×16 輸入塊對應一個隱藏狀態。在此之上是一個帶有 sigmoid 啟用的簡單分類層,用於將隱藏狀態對映到分類機率。

圖片來自論文 AST: Audio Spectrogram Transformer
任何 Transformer 都可以是分類器
在上一節中,你已經看到 CTC 是一種使用僅編碼器 Transformer 進行自動語音識別的有效技術。這些 CTC 模型本身已經是分類器,可以預測來自分詞器詞彙表的類別標籤機率。我們可以使用 CTC 模型,並透過改變標籤並使用常規交叉熵損失函式而不是特殊的 CTC 損失函式對其進行訓練,從而將其轉換為通用音訊分類器。
例如,HF Transformers 包含 Wav2Vec2ForCTC
模型,也包含 Wav2Vec2ForSequenceClassification
和 Wav2Vec2ForAudioFrameClassification
。這些模型架構之間的唯一區別在於分類層的大小和所使用的損失函式。
事實上,任何僅編碼器的音訊 Transformer 模型都可以透過在隱藏狀態序列之上新增一個分類層來轉換為音訊分類器。(分類器通常不需要 Transformer 解碼器。)
為了為整個序列預測單個分類分數(Wav2Vec2ForSequenceClassification
),模型會取隱藏狀態的平均值並將其輸入到分類層。輸出是單個機率分佈。
為了為每個音訊幀進行單獨分類(Wav2Vec2ForAudioFrameClassification
),分類器在隱藏狀態序列上執行,因此分類器的輸出也是一個序列。