模型简介
模型特点
模型能力
使用案例
🚀 Wav2Vec2 XLS-R用于芬兰语自动语音识别
该声学模型是 facebook/wav2vec2-xls-r-300m 针对芬兰语自动语音识别(ASR)进行微调后的版本。该模型使用了 275.6 小时的芬兰语转录语音数据进行微调。Wav2Vec2 XLS-R 在 这篇论文 中被提出,并首次在 此页面 发布。
本仓库还包含了在解码阶段与声学模型一起使用的芬兰语 KenLM 语言模型。
注意:该模型与 Finnish-NLP/wav2vec2-xlsr-300m-finnish-lm 模型完全相同,只是将其复制/移动到了 Finnish-NLP
Hugging Face 组织中。
✨ 主要特性
- 基于预训练的
facebook/wav2vec2-xls-r-300m
模型进行微调,适用于芬兰语自动语音识别任务。 - 包含用于解码阶段的芬兰语 KenLM 语言模型。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
文档未提供代码示例,故跳过此章节。
📚 详细文档
模型描述
Wav2Vec2 XLS-R 是 Facebook AI 推出的大规模多语言语音预训练模型。它在 436000 小时的无标签语音数据上进行预训练,这些数据包括 VoxPopuli、MLS、CommonVoice、BABEL 和 VoxLingua107。该模型使用 wav2vec 2.0 目标函数,支持 128 种语言。
你可以从 这篇博客 和 这篇论文 中了解更多关于该预训练模型的信息。
此模型是预训练模型(3 亿参数变体)针对芬兰语 ASR 进行微调后的版本。
预期用途与限制
预期用途
你可以使用该模型进行芬兰语自动语音识别(语音转文本)任务。
使用方法
查看本仓库中的 run-finnish-asr-models.ipynb 笔记本,获取使用该模型的详细示例。
限制和偏差
- 音频长度限制:该模型使用的音频样本最大长度为 20 秒,因此它最适用于类似长度的较短音频。不过,你也可以尝试使用更长的音频,看看效果如何。如果你在处理非常长的音频文件时遇到内存不足的错误,可以使用 这篇博客文章 中介绍的音频分块方法。
- 数据领域限制:用于微调的绝大部分数据来自芬兰议会数据集,因此该模型可能无法很好地泛化到非常不同的领域,如带有方言的日常芬兰语口语等。此外,数据集中的音频往往以成年男性为主,因此该模型可能对儿童和女性的语音效果不佳。
- 语言模型限制:解码阶段使用的芬兰语 KenLM 语言模型是使用音频转录文本数据和芬兰语维基百科的一个子集进行训练的。因此,解码器的语言模型可能无法很好地泛化到非常不同的语言,例如带有方言的日常口语(因为维基百科主要包含正式的芬兰语)。为你的领域语言训练自己的 KenLM 语言模型并在解码中使用可能会更有益。
训练数据
该模型使用了来自以下数据集的 275.6 小时芬兰语转录语音数据进行微调:
数据集 | 时长 | 占总时长的百分比 |
---|---|---|
Common Voice 7.0 芬兰语训练 + 评估 + 其他分割 | 9.70 小时 | 3.52 % |
芬兰议会会议 2 | 0.24 小时 | 0.09 % |
VoxPopuli 芬兰语 | 21.97 小时 | 7.97 % |
CSS10 芬兰语 | 10.32 小时 | 3.74 % |
阿尔托大学芬兰议会 ASR 语料库 | 228.00 小时 | 82.73 % |
芬兰广播语料库 | 5.37 小时 | 1.95 % |
数据集经过筛选,只包含最长 20 秒的音频样本。
训练过程
该模型是在 Hugging Face 组织的 Robust Speech Challenge Event 期间进行训练的。训练在由 OVHcloud 赞助的 Tesla V100 GPU 上完成。
训练脚本由 Hugging Face 提供,可在 此处 获取。我们仅对其数据加载部分进行了修改,以适应我们的自定义数据集。
对于 KenLM 语言模型的训练,我们遵循了 Hugging Face 提供的 博客文章教程。5-gram KenLM 的训练数据包括音频训练数据的文本转录和 100000 个随机抽取的清理后的 芬兰语维基百科(2021 年 8 月)数据集样本。
训练超参数
训练期间使用了以下超参数:
- 学习率:5e-04
- 训练批次大小:32
- 评估批次大小:32
- 随机种子:42
- 优化器:8 位 Adam,β=(0.9, 0.999),ε=1e-08
- 学习率调度器类型:线性
- 学习率调度器热身步数:500
- 训练轮数:10
- 混合精度训练:Native AMP
预训练的 facebook/wav2vec2-xls-r-300m
模型使用以下超参数进行初始化:
- 注意力丢弃率:0.094
- 隐藏层丢弃率:0.047
- 特征投影丢弃率:0.04
- 掩码时间概率:0.082
- 层丢弃率:0.041
- 激活丢弃率:0.055
- CTC 损失缩减方式:"mean"
训练结果
训练损失 | 轮数 | 步数 | 验证损失 | 词错误率 (WER) |
---|---|---|---|---|
0.973 | 0.17 | 500 | 0.5750 | 0.6844 |
0.713 | 0.34 | 1000 | 0.3356 | 0.4518 |
0.6563 | 0.5 | 1500 | 0.3007 | 0.4039 |
0.642 | 0.67 | 2000 | 0.2619 | 0.3674 |
0.6203 | 0.84 | 2500 | 0.2488 | 0.3558 |
0.6016 | 1.01 | 3000 | 0.2795 | 0.3835 |
0.5423 | 1.17 | 3500 | 0.2652 | 0.3310 |
0.5639 | 1.34 | 4000 | 0.2479 | 0.3462 |
0.586 | 1.51 | 4500 | 0.2409 | 0.3295 |
0.5169 | 1.68 | 5000 | 0.2728 | 0.3352 |
0.5176 | 1.84 | 5500 | 0.2254 | 0.3149 |
0.4983 | 2.01 | 6000 | 0.2169 | 0.3009 |
0.4982 | 2.18 | 6500 | 0.2215 | 0.3079 |
0.4898 | 2.35 | 7000 | 0.2174 | 0.3023 |
0.4922 | 2.51 | 7500 | 0.2217 | 0.3081 |
0.5025 | 2.68 | 8000 | 0.2002 | 0.2710 |
0.4745 | 2.85 | 8500 | 0.1935 | 0.2783 |
0.4377 | 3.02 | 9000 | 0.1859 | 0.2742 |
0.4511 | 3.18 | 9500 | 0.2038 | 0.2786 |
0.4411 | 3.35 | 10000 | 0.1863 | 0.2651 |
0.4501 | 3.52 | 10500 | 0.1948 | 0.2605 |
0.4557 | 3.69 | 11000 | 0.1872 | 0.2695 |
0.4493 | 3.85 | 11500 | 0.1888 | 0.2632 |
0.4047 | 4.02 | 12000 | 0.1818 | 0.2559 |
0.4319 | 4.19 | 12500 | 0.1896 | 0.2648 |
0.4162 | 4.36 | 13000 | 0.1953 | 0.2595 |
0.4046 | 4.52 | 13500 | 0.1864 | 0.2606 |
0.4195 | 4.69 | 14000 | 0.1843 | 0.2467 |
0.4146 | 4.86 | 14500 | 0.1686 | 0.2450 |
0.378 | 5.03 | 15000 | 0.1731 | 0.2401 |
0.3792 | 5.19 | 15500 | 0.1676 | 0.2325 |
0.3855 | 5.36 | 16000 | 0.1740 | 0.2326 |
0.4029 | 5.53 | 16500 | 0.1674 | 0.2345 |
0.386 | 5.7 | 17000 | 0.1735 | 0.2280 |
0.3811 | 5.86 | 17500 | 0.1692 | 0.2258 |
0.3607 | 6.03 | 18000 | 0.1797 | 0.2279 |
0.3604 | 6.2 | 18500 | 0.1651 | 0.2206 |
0.3362 | 6.37 | 19000 | 0.1627 | 0.2199 |
0.3611 | 6.53 | 19500 | 0.1652 | 0.2172 |
0.3671 | 6.7 | 20000 | 0.1564 | 0.2140 |
0.3769 | 6.87 | 20500 | 0.1525 | 0.2101 |
0.3539 | 7.04 | 21000 | 0.1639 | 0.2096 |
0.3225 | 7.21 | 21500 | 0.1611 | 0.2087 |
0.3323 | 7.37 | 22000 | 0.1633 | 0.2008 |
0.3327 | 7.54 | 22500 | 0.1692 | 0.1975 |
0.3456 | 7.71 | 23000 | 0.1555 | 0.1991 |
0.3058 | 7.88 | 23500 | 0.1590 | 0.1959 |
0.3034 | 8.04 | 24000 | 0.1531 | 0.1973 |
0.2925 | 8.21 | 24500 | 0.1583 | 0.1978 |
0.2967 | 8.38 | 25000 | 0.1546 | 0.1906 |
0.2974 | 8.55 | 25500 | 0.1540 | 0.1869 |
0.3131 | 8.71 | 26000 | 0.1534 | 0.1850 |
0.3306 | 8.88 | 26500 | 0.1482 | 0.1844 |
0.2842 | 9.05 | 27000 | 0.1490 | 0.1854 |
0.2879 | 9.22 | 27500 | 0.1463 | 0.1799 |
0.27 | 9.38 | 28000 | 0.1454 | 0.1798 |
0.2874 | 9.55 | 28500 | 0.1504 | 0.1787 |
0.2757 | 9.72 | 29000 | 0.1512 | 0.1784 |
0.3017 | 9.89 | 29500 | 0.1484 | 0.1800 |
框架版本
- 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-300m-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 |
团队成员
- Aapo Tanskanen,Hugging Face 个人资料,LinkedIn 个人资料
- Rasmus Toivanen,Hugging Face 个人资料,LinkedIn 个人资料
如有更多详情,请随时联系我们 🤗
🔧 技术细节
文档未提供技术实现细节,故跳过此章节。
📄 许可证
该模型采用 Apache 2.0 许可证。



