模型简介
模型特点
模型能力
使用案例
🚀 用于芬兰语自动语音识别的Wav2Vec2 XLS - R
本声学模型是 [facebook/wav2vec2 - xls - r - 300m](https://huggingface.co/facebook/wav2vec2 - xls - r - 300m) 针对芬兰语自动语音识别(ASR)任务的微调版本。该模型使用了275.6小时的芬兰语转录语音数据进行微调。Wav2Vec2 XLS - R 首次在 这篇论文 中被提出,并在 [此页面](https://github.com/pytorch/fairseq/tree/main/examples/wav2vec#wav2vec - 20) 首次发布。
注意:存在一个在解码阶段使用了KenLM语言模型的版本,该版本能生成更好的转录结果:[Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm](https://huggingface.co/Finnish - NLP/wav2vec2 - xlsr - 300m - finnish - lm)
✨ 主要特性
- 微调模型:基于facebook的预训练模型针对芬兰语ASR任务进行微调。
- 多语言基础:预训练模型在多种语言的大量无标签语音数据上训练。
- 评估指标良好:在芬兰语语音识别任务上有较好的WER和CER指标。
📦 安装指南
文档未提及安装步骤,故跳过该章节。
💻 使用示例
文档未提供代码示例,故跳过该章节。
📚 详细文档
模型描述
Wav2Vec2 XLS - R是Facebook AI的大规模多语言语音预训练模型。它在43.6万小时的无标签语音数据上进行预训练,这些数据包括VoxPopuli、MLS、CommonVoice、BABEL和VoxLingua107。该模型使用wav2vec 2.0目标函数,支持128种语言。
你可以从 [这篇博客](https://ai.facebook.com/blog/xls - r - self - supervised - speech - processing - for - 128 - languages) 和 这篇论文 中了解更多关于该预训练模型的信息。
此模型是预训练模型(3亿参数变体)针对芬兰语ASR任务的微调版本。
预期用途与局限性
预期用途
你可以使用此模型进行芬兰语自动语音识别(语音转文本)任务。
使用方法
查看本仓库中的 [run - finnish - asr - models.ipynb](https://huggingface.co/aapot/wav2vec2 - xlsr - 300m - finnish/blob/main/run - finnish - asr - models.ipynb) 笔记本,以获取使用此模型的详细示例。
局限性和偏差
- 音频长度:该模型使用的音频样本最大长度为20秒,因此它最适合处理类似长度的较短音频。不过,你也可以尝试使用更长的音频,并观察其效果。如果你在处理非常长的音频文件时遇到内存不足的错误,可以使用 [这篇博客文章](https://huggingface.co/blog/asr - chunking) 中介绍的音频分块方法。
- 数据领域:用于微调的大部分数据来自芬兰议会数据集,因此该模型在处理与该领域差异较大的内容(如带有方言的日常芬兰语口语)时,泛化能力可能不佳。
- 性别差异:数据集的音频往往以成年男性为主,因此该模型在处理儿童和女性的语音时可能效果不佳。
训练数据
该模型使用了来自以下数据集的275.6小时芬兰语转录语音数据进行微调:
数据集 | 时长 | 占总时长的百分比 |
---|---|---|
[Common Voice 7.0芬兰语训练 + 评估 + 其他分割](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0) | 9.70小时 | 3.52% |
芬兰议会会议2 | 0.24小时 | 0.09% |
VoxPopuli芬兰语 | 21.97小时 | 7.97% |
CSS10芬兰语 | 10.32小时 | 3.74% |
[阿尔托芬兰议会ASR语料库](http://urn.fi/urn:nbn:fi:lb - 2021051903) | 228.00小时 | 82.73% |
[芬兰广播语料库](http://urn.fi/urn:nbn:fi:lb - 2016042502) | 5.37小时 | 1.95% |
数据集经过筛选,只包含最长20秒的音频样本。
训练过程
该模型是在Hugging Face组织的 [鲁棒语音挑战活动](https://discuss.huggingface.co/t/open - to - the - community - robust - speech - recognition - challenge/13614) 期间进行训练的。训练在由OVHcloud赞助的Tesla V100 GPU上完成。
训练脚本由Hugging Face提供,可在 [此处](https://github.com/huggingface/transformers/blob/main/examples/research_projects/robust - speech - event/run_speech_recognition_ctc_bnb.py) 获取。我们仅对其数据加载部分进行了修改,以适应我们的自定义数据集。
训练超参数
训练期间使用了以下超参数:
- 学习率:5e - 04
- 训练批次大小:32
- 评估批次大小:32
- 随机种子:42
- 优化器:8位Adam,β值为(0.9, 0.999),ε值为1e - 08
- 学习率调度器类型:线性
- 学习率调度器热身步数:500
- 训练轮数:10
- 混合精度训练:原生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芬兰语测试分割集](https://huggingface.co/datasets/mozilla - foundation/common_voice_7_0)。
要评估此模型,请运行本仓库中的 eval.py
脚本:
python3 eval.py --model_id aapot/wav2vec2 - xlsr - 300m - finnish --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个人资料,领英个人资料
- Rasmus Toivanen,Hugging Face个人资料,领英个人资料
如有更多详细信息需求,请随时联系我们 🤗
🔧 技术细节
文档未提供超过50字的具体技术说明,故跳过该章节。
📄 许可证
本项目采用Apache 2.0许可证。



