whisper-finetune:自动语音识别模型的微调与评估

项目介绍

whisper-finetune 是一个开源项目,专注于对 Whisper 自动语音识别模型进行微调和评估。Whisper 是由 OpenAI 开发的一种强大且高效的自动语音识别模型,该项目允许用户利用自定义数据集对 Whisper 模型进行进一步的训练和评估,以适应特定的语言环境和应用场景。

项目技术分析

whisper-finetune 项目基于 Python 编程语言,利用了深度学习框架 PyTorch 进行模型的训练和评估。项目提供了完整的脚本,支持使用 Huggingface 提供的 Whisper 模型,并允许用户使用自己的数据集进行微调。项目涵盖了数据预处理、模型训练、超参数调优、模型评估以及语音文件转录等多个方面的功能。

项目的技术架构考虑到了不同大小的 Whisper 模型,并提供了相应的超参数配置建议,以帮助用户在微调过程中达到最佳效果。这些功能使得 whisper-finetune 成为了一个灵活且强大的工具,适用于多种自动语音识别相关的研发任务。

项目技术应用场景

whisper-finetune 的应用场景广泛,包括但不限于以下几方面:

  1. 语言模型适应化:针对特定语言或方言,通过微调 Whisper 模型,提高其在特定语言环境下的识别准确率。
  2. 领域定制:针对特定行业或领域,如医疗、法律等,定制化训练模型,以适应领域内的专业术语和表达方式。
  3. 数据增强:利用已有的语音数据集,通过微调扩展模型的能力,提升模型在不同条件下的泛化性能。
  4. 性能评估:通过在 Huggingface 提供的数据集上进行评估,客观地衡量模型的性能和改进效果。

项目特点

whisper-finetune 项目具有以下几个显著特点:

  • 灵活性:支持使用自定义数据集进行模型的微调,使得模型能够更好地适应特定的应用需求。
  • 易用性:提供了详尽的安装指导和命令行接口,用户可以轻松地开始模型的训练和评估。
  • 高性能:通过超参数调优和分布式训练支持,项目能够高效地利用计算资源,加速模型的训练过程。
  • 可扩展性:项目的架构设计允许用户方便地添加新的数据集和模型配置,具有良好的可扩展性。

通过 whisper-finetune,研究人员和开发者可以更加便捷地对 Whisper 模型进行微调和评估,从而推动自动语音识别技术的进步和应用的普及。下面我们将详细介绍 whisper-finetune 的安装、使用和配置方法,帮助读者更好地利用这个优秀的开源项目。

安装与配置

whisper-finetune 项目推荐使用 Python 3.8 和 CUDA 11.3 环境进行安装。为了确保环境的隔离和兼容性,建议使用虚拟环境进行安装。以下为安装步骤:

  1. 创建虚拟环境:

    python3 -m venv env_whisper-finetune
    source env_whisper-finetune/bin/activate
    
  2. 安装依赖:

    python3 -m pip install --upgrade pip
    pip install -r requirements.txt
    
  3. 为了将模型推送到 Huggingface,需要安装 git-lfs 并使用命令行登录 Huggingface:

    sudo apt-get install git-lfs
    huggingface-cli login
    

数据预处理

在使用自定义数据集时,需要进行数据预处理,确保数据格式与 Huggingface 的序列到序列训练流程兼容。数据预处理包括准备两个文件:textaudio_paths。这两个文件需要按照特定的格式组织,并使用提供的脚本进行转换。

超参数调优

学习率是影响模型训练效果的关键超参数之一。对于 Whisper 这样预先训练在大规模数据集上的模型,推荐使用比预训练时小 40 倍的学习率,并在训练过程中线性衰减至零。项目中提供了不同模型配置的建议学习率,供用户参考。

模型微调

whisper-finetune 支持在 Huggingface 提供的数据集上微调 Whisper 模型,也支持使用自定义数据集进行微调。以下为两种微调方式的示例命令:

在 Huggingface 数据集上微调:

ngpu=4  # GPU 数量,用于分布式训练。

torchrun --nproc_per_node=${ngpu} train/fine-tune_on_hf_dataset.py \
--model_name vasista22/whisper-hindi-base \
--language Hindi \
--sampling_rate 16000 \
--train_datasets mozilla-foundation/common_voice_11_0 mozilla-foundation/common_voice_11_0 \
--train_dataset_configs hi hi \
--train_dataset_splits train validation \
--train_dataset_text_columns sentence sentence \
--eval_datasets "google/fleurs" \
--eval_dataset_configs hi_in \
--eval_dataset_splits test \
--eval_dataset_text_columns transcription

在自定义数据集上微调:

ngpu=4  # GPU 数量,用于分布式训练。

torchrun --nproc_per_node=${ngpu} train/fine-tune_on_custom_dataset.py \
--model_name vasista22/whisper-telugu-base \
--language Telugu \
--train_datasets output_data_directory/train_dataset_1 output_data_directory/train_dataset_2 \
--eval_datasets output_data_directory/eval_dataset_1 output_data_directory/eval_dataset_2 output_data_directory/eval_dataset_3

模型评估

whisper-finetune 也提供了在 Huggingface 数据集上评估模型的脚本。以下为评估的示例命令:

python3 evaluate/evaluate_on_hf_dataset.py

通过上述介绍,我们可以看出 whisper-finetune 项目在自动语音识别模型的微调和评估方面具有很强的实用性和灵活性。无论是研究人员还是开发者,都可以通过该项目来提升 Whisper 模型在特定场景下的性能,从而推动语音识别技术的进步。我们鼓励感兴趣的用户尝试使用 whisper-finetune,并在实践中探索其强大的功能和潜力。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐