為低資源自動語音辨識進行 XLS-R 微調
Hugging Face 詳細說明了微調 XLS-R 的過程,XLS-R 是 XLSR 的繼任者,用於低資源語言的自動語音辨識 (ASR)。透過利用在 128 種語言上的自我監督預訓練,XLS-R 讓開發者即使在標記訓練數據有限的情況下,也能實現具備功能的語音轉文字能力。
XLS-R 模型架構與預訓練
XLS-R 旨在學習跨語言的語音表示,使其在多種語言中都有效。它使用涵蓋 128 種語言、近 500,000 小時的音訊數據進行預訓練。該模型提供三種規模:3 億、10 億和 20 億個參數。
自我監督學習目標
與 BERT 的遮罩語言模型 (masked language modeling) 類似,XLS-R 在其自我監督預訓練階段,透過在將特徵向量傳遞給 transformer 網路之前隨機遮罩它們,來學習情境化的語音表示。
微調機制
為了將預訓練網路適應於下游任務(例如語音辨識、語音翻譯或音訊分類),會在 transformer 區塊之上添加一個單層線性層。該層根據目標標記數據集的詞彙表,將情境表示映射到特定的 token 類別。
ASR 的技術實作
為 ASR 微調 XLS-R 涉及幾個關鍵的預處理和架構步驟,以確保模型能正確地將音訊訊號映射到文字。
數據預處理與 Tokenization
對於 ASR,需要兩個主要組件:
- Wav2Vec2FeatureExtractor: 將原始語音訊號處理成模型的輸入格式。XLS-R 需要採樣率為 16kHz 的音訊。如果來源數據(例如 Common Voice)的採樣率較高(例如 48kHz),則必須進行降採樣。
- Wav2Vec2CTCTokenizer: 將模型的輸出映射到文字。詞彙表是從訓練和測試數據集中發現的不同字元構建的,包括一個單字分隔符 token(表示為
|)和 CTC 演算法所需的特殊「空白 token」。
連接式時間分類 (CTC)
XLS-R 使用連接式時間分類 (CTC) 進行微調。這種演算法對於輸入(音訊訊號)明顯長於輸出(文字轉錄)的序列對序列問題至關重要。CTC 允許模型在不需要音訊幀與文字字元之間進行精確對齊的情況下進行預測。
訓練配置與優化
在低資源數據集上進行微調(例如 Common Voice 的土耳其語子集,約 4 小時的驗證數據),需要特定的優化策略來維持穩定性。
模型設置
為了優化 GPU 記憶體和訓練穩定性,建議使用以下配置:
- 凍結特徵提取器: 使用於提取聲學特徵的 CNN 層會被凍結 (
model.freeze_feature_extractor()),因為它們在預訓練期間已得到充分訓練。 - 梯度檢查點 (Gradient Checkpointing): 已啟用以減少記憶體消耗。
- 損失函數減少 (Loss Reduction): 將 CTC 損失函數設置為 "mean"。
超參數調優
由於 Common Voice 等群眾外包數據集固有的雜訊,必須仔細調優諸如 dropout、SpecAugment masking dropout rate 和學習率等超參數。在提供的演示中,使用了 3e-4 的學習率和 30 個 epoch。
訓練效率
透過使用 group_by_length=True,可以提高訓練效率,將具有相似輸入長度的樣本分組到同一個 batch,以最小化所需的 padding 填充量。
評估與性能
模型性能使用字詞錯誤率 (WER) 衡量,這是 ASR 的標準指標。在針對土耳其語數據使用 Wav2Vec2-XLS-R-300M checkpoint 的演示中,訓練損失和驗證 WER 在 3,200 個 steps 內穩定下降,最終達到約 0.3195 的 WER。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch