模型简介
模型特点
模型能力
使用案例
🚀 Wav2Vec2-base-fi-voxpopuli-v2 用于芬兰语自动语音识别
该声学模型是 facebook/wav2vec2-base-fi-voxpopuli-v2 针对芬兰语自动语音识别(ASR)任务的微调版本。该模型使用了 276.7 小时的芬兰语转录语音数据进行微调。Wav2Vec2 首次在 这篇论文 中被提出,并在 此页面 首次发布。
本仓库还包含了在解码阶段与声学模型一起使用的芬兰语 KenLM 语言模型。
✨ 主要特性
- 基于预训练的
facebook/wav2vec2-base-fi-voxpopuli-v2
模型进行微调,适用于芬兰语语音识别任务。 - 训练数据涵盖多个芬兰语语音数据集,经过筛选确保音频样本长度不超过 20 秒。
- 提供了详细的训练过程和评估结果,便于对比和参考。
📚 详细文档
模型描述
Wav2vec2-base-fi-voxpopuli-v2 是 Facebook AI 针对芬兰语语音的预训练模型。它使用 VoxPopuli V2 数据集 中 14200 小时的无标签芬兰语语音,以 wav2vec 2.0 目标进行预训练。
本模型是该预训练模型针对芬兰语 ASR 任务的微调版本。
预期用途和限制
如何使用
请查看本仓库中的 run-finnish-asr-models.ipynb 笔记本,以获取使用该模型的详细示例。
限制和偏差
- 该模型使用最大长度为 20 秒的音频样本进行微调,因此对于类似长度的较短音频效果可能最佳。不过,你也可以尝试使用更长的音频,并观察其效果。如果在处理非常长的音频文件时遇到内存不足的错误,可以使用 这篇博客文章 中介绍的音频分块方法。
- 用于微调的绝大部分数据来自芬兰议会数据集,因此该模型可能无法很好地泛化到非常不同的领域,例如带有方言的日常芬兰语口语等。此外,数据集的音频往往以成年男性为主,因此该模型可能对儿童和女性的语音效果不佳。
- 解码阶段使用的芬兰语 KenLM 语言模型是使用音频转录文本和芬兰语维基百科的一个子集进行训练的。因此,解码器的语言模型可能无法很好地泛化到非常不同的语言,例如带有方言的日常口语(因为维基百科主要包含正式的芬兰语)。为你的领域语言训练自己的 KenLM 语言模型并在解码中使用可能会更有益。
训练数据
该模型使用了来自以下数据集的 276.7 小时芬兰语转录语音数据进行微调:
数据集 | 时长 | 占总时长的百分比 |
---|---|---|
Common Voice 9.0 芬兰语训练 + 评估 + 其他拆分 | 10.80 小时 | 3.90 % |
芬兰议会会议 2 | 0.24 小时 | 0.09 % |
VoxPopuli 芬兰语 | 21.97 小时 | 7.94 % |
CSS10 芬兰语 | 10.32 小时 | 3.73 % |
阿尔托大学芬兰议会 ASR 语料库 | 228.00 小时 | 82.40 % |
芬兰广播语料库 | 5.37 小时 | 1.94 % |
数据集经过筛选,仅包含长度不超过 20 秒的音频样本。
训练过程
该模型在由 Hugging Face 和 OVHcloud 赞助的 Tesla V100 GPU 上进行训练。
训练脚本由 Hugging Face 提供,可在 此处 获取。我们仅对其数据加载部分进行了修改,以适应我们的自定义数据集。
对于 KenLM 语言模型的训练,我们遵循了 Hugging Face 提供的 博客文章教程。5 元 KenLM 的训练数据包括音频训练数据的文本转录以及 2021 年 8 月清理后的 芬兰语维基百科 数据集中的 100000 个随机样本。
训练超参数
训练期间使用了以下超参数:
- 学习率:1e-04
- 训练批次大小:64
- 评估批次大小:64
- 随机种子:42
- 优化器:8 位 Adam,β=(0.9, 0.999),ε=1e-08
- 学习率调度器类型:线性
- 学习率调度器热身步数:500
- 训练轮数:10
- 混合精度训练:原生 AMP
预训练的 facebook/wav2vec2-base-fi-voxpopuli-v2
模型使用以下超参数进行初始化:
- 注意力丢弃率:0.094
- 隐藏层丢弃率:0.047
- 特征投影丢弃率:0.04
- 掩码时间概率:0.082
- 层丢弃率:0.041
- 激活丢弃率:0.055
- CTC 损失缩减方式:"mean"
训练结果
训练损失 | 轮数 | 步数 | 验证损失 | 词错误率(WER) |
---|---|---|---|---|
1.575 | 0.33 | 500 | 0.7454 | 0.7048 |
0.5838 | 0.66 | 1000 | 0.2377 | 0.2608 |
0.5692 | 1.0 | 1500 | 0.2014 | 0.2244 |
0.5112 | 1.33 | 2000 | 0.1885 | 0.2013 |
0.4857 | 1.66 | 2500 | 0.1881 | 0.2120 |
0.4821 | 1.99 | 3000 | 0.1603 | 0.1894 |
0.4531 | 2.32 | 3500 | 0.1594 | 0.1865 |
0.4411 | 2.65 | 4000 | 0.1641 | 0.1874 |
0.4437 | 2.99 | 4500 | 0.1545 | 0.1874 |
0.4191 | 3.32 | 5000 | 0.1565 | 0.1770 |
0.4158 | 3.65 | 5500 | 0.1696 | 0.1867 |
0.4032 | 3.98 | 6000 | 0.1561 | 0.1746 |
0.4003 | 4.31 | 6500 | 0.1432 | 0.1749 |
0.4059 | 4.64 | 7000 | 0.1390 | 0.1690 |
0.4019 | 4.98 | 7500 | 0.1291 | 0.1646 |
0.3811 | 5.31 | 8000 | 0.1485 | 0.1755 |
0.3955 | 5.64 | 8500 | 0.1351 | 0.1659 |
0.3562 | 5.97 | 9000 | 0.1328 | 0.1614 |
0.3646 | 6.3 | 9500 | 0.1329 | 0.1584 |
0.351 | 6.64 | 10000 | 0.1342 | 0.1554 |
0.3408 | 6.97 | 10500 | 0.1422 | 0.1509 |
0.3562 | 7.3 | 11000 | 0.1309 | 0.1528 |
0.3335 | 7.63 | 11500 | 0.1305 | 0.1506 |
0.3491 | 7.96 | 12000 | 0.1365 | 0.1560 |
0.3538 | 8.29 | 12500 | 0.1293 | 0.1512 |
0.3338 | 8.63 | 13000 | 0.1328 | 0.1511 |
0.3509 | 8.96 | 13500 | 0.1304 | 0.1520 |
0.3431 | 9.29 | 14000 | 0.1360 | 0.1517 |
0.3309 | 9.62 | 14500 | 0.1328 | 0.1514 |
0.3252 | 9.95 | 15000 | 0.1316 | 0.1498 |
框架版本
- Transformers 4.19.1
- Pytorch 1.11.0+cu102
- Datasets 2.2.1
- Tokenizers 0.11.0
评估结果
评估使用了 Common Voice 7.0 芬兰语测试拆分、Common Voice 9.0 芬兰语测试拆分 以及 FLEURS ASR 芬兰语测试拆分。
该模型的训练数据包括 Common Voice 9.0 的训练拆分,但我们之前的大多数模型使用的是 Common Voice 7.0,因此我们对两个版本的 Common Voice 都进行了测试。注意:Common Voice 在不同数据集版本之间似乎没有完全固定测试拆分,因此 Common Voice 9.0 的一些训练示例可能出现在 Common Voice 7.0 的测试拆分中,反之亦然。因此,在使用不同 Common Voice 版本训练的模型之间,Common Voice 测试结果的比较并不完全准确,但这种比较仍然具有足够的意义。
Common Voice 7.0 测试
要评估该模型,请运行本仓库中的 eval.py
脚本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset mozilla-foundation/common_voice_7_0 --config fi --split test
与我们的其他模型及其参数数量相比,该模型(表格第一行)取得了以下词错误率(WER)和字符错误率(CER)结果:
模型 | 模型参数 | 带语言模型的 WER | 不带语言模型的 WER | 带语言模型的 CER | 不带语言模型的 CER |
---|---|---|---|---|---|
Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned | 9500 万 | 5.85 | 13.52 | 1.35 | 2.44 |
Finnish-NLP/wav2vec2-large-uralic-voxpopuli-v2-finnish | 3 亿 | 4.13 | 9.66 | 0.90 | 1.66 |
Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm | 3 亿 | 8.16 | 17.92 | 1.97 | 3.36 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm | 10 亿 | 5.65 | 13.11 | 1.20 | 2.23 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm-v2 | 10 亿 | 4.09 | 9.73 | 0.88 | 1.65 |
Common Voice 9.0 测试
要评估该模型,请运行本仓库中的 eval.py
脚本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset mozilla-foundation/common_voice_9_0 --config fi --split test
与我们的其他模型及其参数数量相比,该模型(表格第一行)取得了以下词错误率(WER)和字符错误率(CER)结果:
模型 | 模型参数 | 带语言模型的 WER | 不带语言模型的 WER | 带语言模型的 CER | 不带语言模型的 CER |
---|---|---|---|---|---|
Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned | 9500 万 | 5.93 | 14.08 | 1.40 | 2.59 |
Finnish-NLP/wav2vec2-large-uralic-voxpopuli-v2-finnish | 3 亿 | 4.13 | 9.83 | 0.92 | 1.71 |
Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm | 3 亿 | 7.42 | 16.45 | 1.79 | 3.07 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm | 10 亿 | 5.35 | 13.00 | 1.14 | 2.20 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm-v2 | 10 亿 | 3.72 | 8.96 | 0.80 | 1.52 |
FLEURS ASR 测试
要评估该模型,请运行本仓库中的 eval.py
脚本:
python3 eval.py --model_id Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned --dataset google/fleurs --config fi_fi --split test
与我们的其他模型及其参数数量相比,该模型(表格第一行)取得了以下词错误率(WER)和字符错误率(CER)结果:
模型 | 模型参数 | 带语言模型的 WER | 不带语言模型的 WER | 带语言模型的 CER | 不带语言模型的 CER |
---|---|---|---|---|---|
Finnish-NLP/wav2vec2-base-fi-voxpopuli-v2-finetuned | 9500 万 | 13.99 | 17.16 | 6.07 | 6.61 |
Finnish-NLP/wav2vec2-large-uralic-voxpopuli-v2-finnish | 3 亿 | 12.44 | 14.63 | 5.77 | 6.22 |
Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm | 3 亿 | 17.72 | 23.30 | 6.78 | 7.67 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm | 10 亿 | 20.34 | 16.67 | 6.97 | 6.35 |
Finnish-NLP/wav2vec2-xlsr-1b-finnish-lm-v2 | 10 亿 | 12.11 | 14.89 | 5.65 | 6.06 |
📄 许可证
本项目采用 Apache-2.0 许可证。
团队成员
- Aapo Tanskanen,Hugging Face 个人资料,领英个人资料
- Rasmus Toivanen,Hugging Face 个人资料,领英个人资料
如有更多详细信息需求,请随时联系我们 🤗



