模型简介
模型特点
模型能力
使用案例
🚀 罗马尼亚语语音识别模型(wav2vec2-ro-300m_01)
本模型是一个用于罗马尼亚语语音识别的模型,基于facebook/wav2vec2-xls-r-300m
微调而来。它在多个数据集上进行训练和评估,在罗马尼亚语语音识别任务中表现出色,可用于将音频中的罗马尼亚语语音转换为文本。
🚀 快速开始
你可以通过以下链接在线测试该模型:罗马尼亚语语音识别Space
此模型在HuggingFace的Robust Speech Challenge中,罗马尼亚语语音识别排名第一:
✨ 主要特性
- 基于预训练模型:以
facebook/wav2vec2-xls-r-300m
为基础模型,利用其强大的特征提取能力。 - 多数据集训练:使用了
Common Voice 8.0
和Romanian Speech Synthesis 0.8.1
等数据集进行训练,提高模型的泛化能力。 - 语言模型增强:添加了5-gram语言模型,提升语音识别的准确率。
📦 安装指南
确保你已安装语言模型增强版本所需的正确依赖。你可以运行以下命令安装kenlm
和pyctcdecode
库:
pip install https://github.com/kpu/kenlm/archive/master.zip pyctcdecode
💻 使用示例
基础用法
使用transformers
框架加载模型:
from transformers import AutoProcessor, AutoModelForCTC
processor = AutoProcessor.from_pretrained("gigant/romanian-wav2vec2")
model = AutoModelForCTC.from_pretrained("gigant/romanian-wav2vec2")
高级用法
如果你想测试模型,可以从transformers
加载自动语音识别管道:
from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="gigant/romanian-wav2vec2")
使用datasets
库的示例
首先,加载数据,这里使用Romanian Speech Synthesis
数据集:
from datasets import load_dataset
dataset = load_dataset("gigant/romanian_speech_synthesis_0_8_1")
你可以使用IPython.display
库收听样本:
from IPython.display import Audio
i = 0
sample = dataset["train"][i]
Audio(sample["audio"]["array"], rate = sample["audio"]["sampling_rate"])
由于模型是针对16kHz采样的音频进行训练的,如果数据集中音频的采样率不同,需要进行重采样:
import torchaudio
import torch
i = 0
audio = sample["audio"]["array"]
rate = sample["audio"]["sampling_rate"]
resampler = torchaudio.transforms.Resample(rate, 16_000)
audio_16 = resampler(torch.Tensor(audio)).numpy()
收听重采样后的样本:
Audio(audio_16, rate=16000)
最后,获取模型预测结果:
predicted_text = asr(audio_16)
ground_truth = dataset["train"][i]["sentence"]
print(f"Predicted text : {predicted_text}")
print(f"Ground truth : {ground_truth}")
📚 详细文档
模型描述
该模型的架构基于facebook/wav2vec2-xls-r-300m
,添加了语音识别CTC头部和一个5-gram语言模型(使用pyctcdecode和kenlm),该语言模型在Romanian Corpora Parliament数据集上进行训练。为了使语言模型增强的解码器正常工作,需要安装这些库。
预期用途和限制
该模型用于识别采样率为16kHz的罗马尼亚语音频片段。预测的文本为小写,不包含任何标点符号。
训练和评估数据
- 训练数据:
- Common Voice 8.0 - 罗马尼亚子集:训练集、验证集和其他分割集
- Romanian Speech Synthesis:训练集和测试集
- 评估数据:
训练过程
训练超参数
以下是训练过程中使用的超参数:
参数 | 值 |
---|---|
学习率 | 0.003 |
训练批次大小 | 16 |
评估批次大小 | 8 |
随机种子 | 42 |
梯度累积步数 | 3 |
总训练批次大小 | 48 |
优化器 | Adam(betas=(0.9,0.999),epsilon=1e-08) |
学习率调度器类型 | 线性 |
学习率调度器热身步数 | 500 |
训练轮数 | 50.0 |
混合精度训练 | Native AMP |
训练结果
训练损失 | 轮数 | 步数 | 验证损失 | 字错率(Wer) | 字符错误率(Cer) |
---|---|---|---|---|---|
2.9272 | 0.78 | 500 | 0.7603 | 0.7734 | 0.2355 |
0.6157 | 1.55 | 1000 | 0.4003 | 0.4866 | 0.1247 |
0.4452 | 2.33 | 1500 | 0.2960 | 0.3689 | 0.0910 |
0.3631 | 3.11 | 2000 | 0.2580 | 0.3205 | 0.0796 |
0.3153 | 3.88 | 2500 | 0.2465 | 0.2977 | 0.0747 |
0.2795 | 4.66 | 3000 | 0.2274 | 0.2789 | 0.0694 |
0.2615 | 5.43 | 3500 | 0.2277 | 0.2685 | 0.0675 |
0.2389 | 6.21 | 4000 | 0.2135 | 0.2518 | 0.0627 |
0.2229 | 6.99 | 4500 | 0.2054 | 0.2449 | 0.0614 |
0.2067 | 7.76 | 5000 | 0.2096 | 0.2378 | 0.0597 |
0.1977 | 8.54 | 5500 | 0.2042 | 0.2387 | 0.0600 |
0.1896 | 9.32 | 6000 | 0.2110 | 0.2383 | 0.0595 |
0.1801 | 10.09 | 6500 | 0.1909 | 0.2165 | 0.0548 |
0.174 | 10.87 | 7000 | 0.1883 | 0.2206 | 0.0559 |
0.1685 | 11.65 | 7500 | 0.1848 | 0.2097 | 0.0528 |
0.1591 | 12.42 | 8000 | 0.1851 | 0.2039 | 0.0514 |
0.1537 | 13.2 | 8500 | 0.1881 | 0.2065 | 0.0518 |
0.1504 | 13.97 | 9000 | 0.1840 | 0.1972 | 0.0499 |
0.145 | 14.75 | 9500 | 0.1845 | 0.2029 | 0.0517 |
0.1417 | 15.53 | 10000 | 0.1884 | 0.2003 | 0.0507 |
0.1364 | 16.3 | 10500 | 0.2010 | 0.2037 | 0.0517 |
0.1331 | 17.08 | 11000 | 0.1838 | 0.1923 | 0.0483 |
0.129 | 17.86 | 11500 | 0.1818 | 0.1922 | 0.0489 |
0.1198 | 18.63 | 12000 | 0.1760 | 0.1861 | 0.0465 |
0.1203 | 19.41 | 12500 | 0.1686 | 0.1839 | 0.0465 |
0.1225 | 20.19 | 13000 | 0.1828 | 0.1920 | 0.0479 |
0.1145 | 20.96 | 13500 | 0.1673 | 0.1784 | 0.0446 |
0.1053 | 21.74 | 14000 | 0.1802 | 0.1810 | 0.0456 |
0.1071 | 22.51 | 14500 | 0.1769 | 0.1775 | 0.0444 |
0.1053 | 23.29 | 15000 | 0.1920 | 0.1783 | 0.0457 |
0.1024 | 24.07 | 15500 | 0.1904 | 0.1775 | 0.0446 |
0.0987 | 24.84 | 16000 | 0.1793 | 0.1762 | 0.0446 |
0.0949 | 25.62 | 16500 | 0.1801 | 0.1766 | 0.0443 |
0.0942 | 26.4 | 17000 | 0.1731 | 0.1659 | 0.0423 |
0.0906 | 27.17 | 17500 | 0.1776 | 0.1698 | 0.0424 |
0.0861 | 27.95 | 18000 | 0.1716 | 0.1600 | 0.0406 |
0.0851 | 28.73 | 18500 | 0.1662 | 0.1630 | 0.0410 |
0.0844 | 29.5 | 19000 | 0.1671 | 0.1572 | 0.0393 |
0.0792 | 30.28 | 19500 | 0.1768 | 0.1599 | 0.0407 |
0.0798 | 31.06 | 20000 | 0.1732 | 0.1558 | 0.0394 |
0.0779 | 31.83 | 20500 | 0.1694 | 0.1544 | 0.0388 |
0.0718 | 32.61 | 21000 | 0.1709 | 0.1578 | 0.0399 |
0.0732 | 33.38 | 21500 | 0.1697 | 0.1523 | 0.0391 |
0.0708 | 34.16 | 22000 | 0.1616 | 0.1474 | 0.0375 |
0.0678 | 34.94 | 22500 | 0.1698 | 0.1474 | 0.0375 |
0.0642 | 35.71 | 23000 | 0.1681 | 0.1459 | 0.0369 |
0.0661 | 36.49 | 23500 | 0.1612 | 0.1411 | 0.0357 |
0.0629 | 37.27 | 24000 | 0.1662 | 0.1414 | 0.0355 |
0.0587 | 38.04 | 24500 | 0.1659 | 0.1408 | 0.0351 |
0.0581 | 38.82 | 25000 | 0.1612 | 0.1382 | 0.0352 |
0.0556 | 39.6 | 25500 | 0.1647 | 0.1376 | 0.0345 |
0.0543 | 40.37 | 26000 | 0.1658 | 0.1335 | 0.0337 |
0.052 | 41.15 | 26500 | 0.1716 | 0.1369 | 0.0343 |
0.0513 | 41.92 | 27000 | 0.1600 | 0.1317 | 0.0330 |
0.0491 | 42.7 | 27500 | 0.1671 | 0.1311 | 0.0328 |
0.0463 | 43.48 | 28000 | 0.1613 | 0.1289 | 0.0324 |
0.0468 | 44.25 | 28500 | 0.1599 | 0.1260 | 0.0315 |
0.0435 | 45.03 | 29000 | 0.1556 | 0.1232 | 0.0308 |
0.043 | 45.81 | 29500 | 0.1588 | 0.1240 | 0.0309 |
0.0421 | 46.58 | 30000 | 0.1567 | 0.1217 | 0.0308 |
0.04 | 47.36 | 30500 | 0.1533 | 0.1198 | 0.0302 |
0.0389 | 48.14 | 31000 | 0.1582 | 0.1185 | 0.0297 |
0.0387 | 48.91 | 31500 | 0.1576 | 0.1187 | 0.0297 |
0.0376 | 49.69 | 32000 | 0.1560 | 0.1182 | 0.0295 |
框架版本
- Transformers 4.16.2
- Pytorch 1.10.0+cu111
- Tokenizers 0.11.0
- pyctcdecode 0.3.0
- kenlm
🔧 技术细节
该模型在多个数据集上进行训练和评估,使用了特定的超参数和优化器,结合了预训练模型和语言模型,以提高罗马尼亚语语音识别的准确率。在训练过程中,采用了混合精度训练,提高了训练效率。
📄 许可证
本模型使用Apache-2.0许可证。
信息表格
属性 | 详情 |
---|---|
模型类型 | 基于facebook/wav2vec2-xls-r-300m 的语音识别模型 |
训练数据 | Common Voice 8.0 - 罗马尼亚子集 、Romanian Speech Synthesis 0.8.1 |
评估数据 | Common Voice 8.0 - 罗马尼亚子集 测试集 |
优化器 | Adam(betas=(0.9,0.999),epsilon=1e-08) |
学习率调度器 | 线性,热身步数500 |
训练轮数 | 50.0 |
混合精度训练 | Native AMP |



