🚀 挪威语Wav2Vec2模型 - 1B尼诺斯克语
该模型基于Facebook/Meta的特征提取器 XLS-R 进行微调。微调后的模型在测试集上使用5-gram KenLM取得了以下结果(括号内为未使用语言模型的结果):
- 字错率(WER): 0.1132 (0.1364)
- 字符错误率(CER): 0.0402 (---)
🚀 快速开始
本模型是基于Facebook/Meta的特征提取器 XLS-R 微调得到的。若要复现这些结果,强烈建议按照 🤗 的说明 训练一个简单的瑞典语模型。验证能够完成此操作后,创建一个全新的仓库,然后从本仓库复制文件 run.sh
和 run_speech_recognition_ctc.py
开始。运行这些文件将创建所有其他必要的文件,应该可以复现我们的结果。通过对超参数进行一些调整,甚至有可能构建出更好的自动语音识别(ASR)模型。
✨ 主要特性
- 本模型是团队在 🤗 主办的 稳健语音事件 期间创建的多个Wav2Vec模型之一。
- 微调后的模型在测试集上使用5-gram KenLM取得了较好的字错率(WER)和字符错误率(CER)。
- 增加一个简单的5-gram语言模型可以提高模型的识别结果。
📦 安装指南
文档未提供具体安装步骤,故跳过此章节。
💻 使用示例
文档未提供代码示例,故跳过此章节。
📚 详细文档
模型描述
这是团队在 🤗 主办的 稳健语音事件 期间创建的多个Wav2Vec模型之一。以下是我们模型的完整列表及其最终得分:
数据集
在活动进行的同时,团队还将 挪威议会语音语料库(NPSC) 转换为 🤗 数据集格式的 NbAiLab/NPSC,并将其用作训练的主要来源。
团队
以下人员为构建此模型做出了贡献:Rolv - Arild Braaten、Javier de la Rosa和Freddy Wetjen。
训练过程
语言模型
如得分所示,添加一个简单的5-gram语言模型将提高识别结果。🤗 提供了另一篇 非常不错的博客,解释了如何添加5-gram语言模型来改进ASR模型。可以从自己的语料库构建这个模型,例如从 挪威巨型语料库 中提取一些合适的文本。也可以跳过指南中的一些步骤,并从 本仓库复制5-gram模型。
参数
最终模型使用以下参数运行:
--dataset_name="NbAiLab/NPSC"
--model_name_or_path="facebook/wav2vec2-xls-r-1b"
--dataset_config_name="16K_mp3_nynorsk"
--output_dir="./"
--overwrite_output_dir
--num_train_epochs="40"
--per_device_train_batch_size="12"
--per_device_eval_batch_size="12"
--gradient_accumulation_steps="2"
--learning_rate="2e-5"
--warmup_steps="2000"
--length_column_name="input_length"
--evaluation_strategy="steps"
--text_column_name="text"
--save_steps="500"
--eval_steps="500"
--logging_steps="100"
--layerdrop="0.041"
--attention_dropout="0.094"
--activation_dropout="0.055"
--hidden_dropout="0.047"
--save_total_limit="3"
--freeze_feature_encoder
--feat_proj_dropout="0.04"
--mask_time_prob="0.082"
--mask_time_length="10"
--mask_feature_prob="0.25"
--mask_feature_length="64"
--gradient_checkpointing
--min_duration_in_seconds="0.5"
--max_duration_in_seconds="30.0"
--ctc_zero_infinity=True
--use_auth_token
--seed="42"
--fp16
--group_by_length
--do_train --do_eval
--push_to_hub
--preprocessing_num_workers="16"
使用这些设置,在普通GPU上训练可能需要3 - 4天。不过,通过调整这些参数,可以获得一个不错的模型并加快训练结果。
参数 |
说明 |
per_device_train_batch_size |
将此参数调整为可用内存的最大值。根据系统情况,16或24可能是不错的设置 |
gradient_accumulation_steps |
可以进一步向上调整,以增加批量大小并加快训练速度,而不会出现内存问题 |
learning_rate |
可以提高,可能高达1e - 4。加快训练速度,但可能会增加不稳定性 |
epochs |
可以显著减少。这是一个非常大的数据集,经过几个epoch可能已经能得到不错的结果 |
🔧 技术细节
文档未提供足够的技术实现细节(具体技术说明少于50字),故跳过此章节。
📄 许可证
本模型使用Apache - 2.0许可证。
📚 引用
@inproceedings{de-la-rosa-etal-2023-boosting,
title = "Boosting {N}orwegian Automatic Speech Recognition",
author = "De La Rosa, Javier and
Braaten, Rolv-Arild and
Kummervold, Per and
Wetjen, Freddy",
booktitle = "Proceedings of the 24th Nordic Conference on Computational Linguistics (NoDaLiDa)",
month = may,
year = "2023",
address = "T{\'o}rshavn, Faroe Islands",
publisher = "University of Tartu Library",
url = "https://aclanthology.org/2023.nodalida-1.55",
pages = "555--564",
abstract = "In this paper, we present several baselines for automatic speech recognition (ASR) models for the two official written languages in Norway: Bokm{\aa}l and Nynorsk. We compare the performance of models of varying sizes and pre-training approaches on multiple Norwegian speech datasets. Additionally, we measure the performance of these models against previous state-of-the-art ASR models, as well as on out-of-domain datasets. We improve the state of the art on the Norwegian Parliamentary Speech Corpus (NPSC) from a word error rate (WER) of 17.10{\%} to 7.60{\%}, with models achieving 5.81{\%} for Bokm{\aa}l and 11.54{\%} for Nynorsk. We also discuss the challenges and potential solutions for further improving ASR models for Norwegian.",
}
详见 https://arxiv.org/abs/2307.01672