🚀 wav2vec2-xls-r-300m-wolof-lm
沃洛夫語是在塞內加爾及周邊國家使用的語言,該語言的相關資源較少,在文本和語音領域的資料更是稀缺。本項目旨在為此做出貢獻,此倉庫便應運而生。
本模型是 facebook/wav2vec2-xls-r-300m 的微調版本,使用了基於 ALFFA_PUBLIC 中最大可用語音數據集微調的語言模型。
該模型在評估集上取得了以下成績:
- 損失率(Loss):0.367826
- 字錯率(Wer):0.212565
✨ 主要特性
📦 安裝指南
文檔未提供安裝步驟,此章節跳過。
💻 使用示例
基礎用法
import librosa
import warnings
from transformers import AutoProcessor, AutoModelForCTC
from datasets import Dataset, DatasetDict
from datasets import load_metric
wer_metric = load_metric("wer")
wolof = pd.read_csv('Test.csv')
wolof = DatasetDict({'test': Dataset.from_pandas(wolof)})
chars_to_ignore_regex = '[\"\?\.\!\-\;\:\(\)\,]'
def remove_special_characters(batch):
batch["transcription"] = re.sub(chars_to_ignore_regex, '', batch["transcription"]).lower() + " "
return batch
wolof = wolof.map(remove_special_characters)
processor = AutoProcessor.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")
model = AutoModelForCTC.from_pretrained("abdouaziiz/wav2vec2-xls-r-300m-wolof-lm")
warnings.filterwarnings("ignore")
def speech_file_to_array_fn(batch):
speech_array, sampling_rate = librosa.load(batch["file"], sr = 16000)
batch["speech"] = speech_array.astype('float16')
batch["sampling_rate"] = sampling_rate
batch["target_text"] = batch["transcription"]
return batch
wolof = wolof.map(speech_file_to_array_fn, remove_columns=wolof.column_names["test"], num_proc=1)
def map_to_result(batch):
model.to("cuda")
input_values = processor(
batch["speech"],
sampling_rate=batch["sampling_rate"],
return_tensors="pt"
).input_values.to("cuda")
with torch.no_grad():
logits = model(input_values).logits
pred_ids = torch.argmax(logits, dim=-1)
batch["pred_str"] = processor.batch_decode(pred_ids)[0]
return batch
results = wolof["test"].map(map_to_result)
print("Test WER: {:.3f}".format(wer_metric.compute(predictions=results["pred_str"], references=results["transcription"])))
高級用法
文檔未提供高級用法示例,此部分跳過。
📚 詳細文檔
模型描述
訓練數據時長為 16.8 小時,我們將其劃分為 10,000 個音頻文件用於訓練,3,339 個用於測試。
訓練和評估數據
我們每 1500 步評估一次模型並記錄日誌,每 33340 步保存一次模型。
訓練超參數
訓練過程中使用了以下超參數:
屬性 |
詳情 |
學習率(learning_rate) |
1e-4 |
訓練批次大小(train_batch_size) |
3 |
評估批次大小(eval_batch_size) |
8 |
總訓練批次大小(total_train_batch_size) |
64 |
總評估批次大小(total_eval_batch_size) |
64 |
優化器(optimizer) |
Adam(betas=(0.9, 0.999),epsilon=1e-08) |
學習率調度器類型(lr_scheduler_type) |
線性(linear) |
學習率調度器熱身步數(lr_scheduler_warmup_steps) |
1000 |
訓練輪數(num_epochs) |
10.0 |
訓練結果
步數(Step) |
訓練損失(Training Loss) |
驗證損失(Validation Loss) |
字錯率(Wer) |
1500 |
2.854200 |
0.642243 |
0.543964 |
3000 |
0.599200 |
0.468138 |
0.429549 |
4500 |
0.468300 |
0.433436 |
0.405644 |
6000 |
0.427000 |
0.384873 |
0.344150 |
7500 |
0.377000 |
0.374003 |
0.323892 |
9000 |
0.337000 |
0.363674 |
0.306189 |
10500 |
0.302400 |
0.349884 |
0.283908 |
12000 |
0.264100 |
0.344104 |
0.277120 |
13500 |
0.254000 |
0.341820 |
0.271316 |
15000 |
0.208400 |
0.326502 |
0.260695 |
16500 |
0.203500 |
0.326209 |
0.250313 |
18000 |
0.159800 |
0.323539 |
0.239851 |
19500 |
0.158200 |
0.310694 |
0.230028 |
21000 |
0.132800 |
0.338318 |
0.229283 |
22500 |
0.112800 |
0.336765 |
0.224145 |
24000 |
0.103600 |
0.350208 |
0.227073 |
25500 |
0.091400 |
0.353609 |
0.221589 |
27000 |
0.084400 |
0.367826 |
0.212565 |
🔧 技術細節
文檔未提供更多技術細節,此章節跳過。
📄 許可證
本項目採用 MIT 許可證。