🚀 Wav2Vec2 XLS-R 用于芬兰语自动语音识别
该声学模型是 facebook/wav2vec2-xls-r-1b 针对芬兰语自动语音识别(ASR)的微调版本。该模型使用了 259.57 小时的芬兰语转录语音数据进行微调。Wav2Vec2 XLS-R 首次在 这篇论文 中被提出,并在 此页面 首次发布。
本仓库还包含了在解码阶段与声学模型一起使用的芬兰语 KenLM 语言模型。
注意:此模型与 Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm 模型完全相同,只是将其复制/移动到了 Finnish-NLP
Hugging Face 组织中。
注意:该模型有一个更好的 V2 版本,它使用了多 16 小时的数据进行了更长时间的微调:Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm-v2
✨ 主要特性
- 基于
facebook/wav2vec2-xls-r-1b
模型针对芬兰语自动语音识别进行微调。
- 微调使用了 259.57 小时的芬兰语转录语音数据。
- 仓库包含解码阶段使用的芬兰语 KenLM 语言模型。
📦 安装指南
文档未提及安装步骤,暂不提供。
💻 使用示例
基础用法
查看本仓库中的 run-finnish-asr-models.ipynb 笔记本,以获取如何使用此模型的详细示例。
📚 详细文档
模型描述
Wav2Vec2 XLS-R 是 Facebook AI 开发的用于语音的大规模多语言预训练模型。它在 436000 小时的无标签语音数据上进行了预训练,这些数据包括 VoxPopuli、MLS、CommonVoice、BABEL 和 VoxLingua107。该模型使用 wav2vec 2.0 目标函数,支持 128 种语言。
你可以从 这篇博客 和 这篇论文 中了解更多关于该预训练模型的信息。
此模型是预训练模型(10 亿参数变体)针对芬兰语自动语音识别的微调版本。
预期用途和局限性
如何使用
查看本仓库中的 run-finnish-asr-models.ipynb 笔记本,以获取如何使用此模型的详细示例。
局限性和偏差
- 该模型使用的音频样本最大长度为 20 秒,因此该模型很可能最适用于类似长度的较短音频。不过,你也可以尝试使用更长的音频,看看效果如何。如果你在处理非常长的音频文件时遇到内存不足的错误,可以使用 这篇博客文章 中介绍的音频分块方法。
- 用于微调的绝大部分数据来自芬兰议会数据集,因此该模型可能无法很好地泛化到非常不同的领域,例如带有方言的日常芬兰语口语等。此外,数据集中的音频往往以成年男性为主,因此该模型可能对儿童和女性的语音效果不佳。
- 解码阶段使用的芬兰语 KenLM 语言模型是使用音频转录的文本数据进行训练的。因此,解码器的语言模型可能无法很好地泛化到非常不同的语言,例如带有方言的日常口语。训练自己的 KenLM 语言模型用于特定领域的语言可能会更有帮助。
训练数据
该模型使用了来自以下数据集的 259.57 小时芬兰语转录语音数据进行微调:
数据集经过筛选,只包含最大长度为 20 秒的音频样本。
训练过程
该模型是在 Hugging Face 组织的 稳健语音挑战活动 期间进行训练的。训练在 OVHcloud 赞助的 Tesla V100 GPU 上进行。
训练脚本由 Hugging Face 提供,可在 此处 获取。我们仅修改了其数据加载部分以适应我们的自定义数据集。
对于 KenLM 语言模型的训练,我们遵循了 Hugging Face 提供的 博客文章教程。5 元 KenLM 的训练数据是音频训练数据的文本转录。
训练超参数
训练期间使用了以下超参数:
- 学习率:5e-05
- 训练批次大小:32
- 评估批次大小:8
- 随机种子:42
- 优化器:8 位 Adam,β=(0.9, 0.999),ε=1e-08
- 学习率调度器类型:线性
- 学习率调度器热身步数:500
- 训练轮数:5
- 混合精度训练:原生 AMP
预训练的 facebook/wav2vec2-xls-r-1b
模型使用以下超参数进行初始化:
- 注意力丢弃率:0.094
- 隐藏层丢弃率:0.047
- 特征投影丢弃率:0.04
- 掩码时间概率:0.082
- 层丢弃率:0.041
- 激活丢弃率:0.055
- CTC 损失缩减方式:"mean"
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
字错误率 (WER) |
0.968 |
0.18 |
500 |
0.4870 |
0.4720 |
0.6557 |
0.36 |
1000 |
0.2450 |
0.2931 |
0.647 |
0.54 |
1500 |
0.1818 |
0.2255 |
0.5297 |
0.72 |
2000 |
0.1698 |
0.2354 |
0.5802 |
0.9 |
2500 |
0.1581 |
0.2355 |
0.6351 |
1.07 |
3000 |
0.1689 |
0.2336 |
0.4626 |
1.25 |
3500 |
0.1719 |
0.3099 |
0.4526 |
1.43 |
4000 |
0.1434 |
0.2069 |
0.4692 |
1.61 |
4500 |
0.1645 |
0.2192 |
0.4584 |
1.79 |
5000 |
0.1483 |
0.1987 |
0.4234 |
1.97 |
5500 |
0.1499 |
0.2178 |
0.4243 |
2.15 |
6000 |
0.1345 |
0.2070 |
0.4108 |
2.33 |
6500 |
0.1383 |
0.1850 |
0.4048 |
2.51 |
7000 |
0.1338 |
0.1811 |
0.4085 |
2.69 |
7500 |
0.1290 |
0.1780 |
0.4026 |
2.87 |
8000 |
0.1239 |
0.1650 |
0.4033 |
3.04 |
8500 |
0.1346 |
0.1657 |
0.3986 |
3.22 |
9000 |
0.1310 |
0.1850 |
0.3867 |
3.4 |
9500 |
0.1273 |
0.1741 |
0.3658 |
3.58 |
10000 |
0.1219 |
0.1672 |
0.382 |
3.76 |
10500 |
0.1306 |
0.1698 |
0.3847 |
3.94 |
11000 |
0.1230 |
0.1577 |
0.3691 |
4.12 |
11500 |
0.1310 |
0.1615 |
0.3593 |
4.3 |
12000 |
0.1296 |
0.1622 |
0.3619 |
4.48 |
12500 |
0.1285 |
0.1601 |
0.3361 |
4.66 |
13000 |
0.1261 |
0.1569 |
0.3603 |
4.84 |
13500 |
0.1235 |
0.1533 |
框架版本
- Transformers 4.17.0.dev0
- Pytorch 1.10.2+cu102
- Datasets 1.18.3
- Tokenizers 0.11.0
评估结果
评估使用了 Common Voice 7.0 芬兰语测试分割。
要评估此模型,请运行本仓库中的 eval.py
脚本:
python3 eval.py --model_id aapot/wav2vec2-xlsr-1b-finnish-lm --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
与我们的其他模型相比,该模型(表格中的第二行)取得了以下字错误率 (WER) 和字符错误率 (CER) 结果:
模型名称 |
带语言模型的 WER |
不带语言模型的 WER |
带语言模型的 CER |
不带语言模型的 CER |
aapot/wav2vec2-xlsr-1b-finnish-lm-v2 |
4.09 |
9.73 |
0.88 |
1.65 |
aapot/wav2vec2-xlsr-1b-finnish-lm |
5.65 |
13.11 |
1.20 |
2.23 |
aapot/wav2vec2-xlsr-300m-finnish-lm |
8.16 |
17.92 |
1.97 |
3.36 |
🔧 技术细节
文档中关于技术细节的内容已在上述详细文档部分体现。
📄 许可证
本模型采用 Apache-2.0 许可证。
团队成员
如有更多细节需求,请随时联系我们 🤗