微调STT模型Whisper

文摘   2024-10-05 18:01   新加坡  

本文涉及到的详细测试代码和测试步骤放置于:

https://github.com/xinyuwei-david/david-share.git下的:Multimodal-Models/STT-SFT

本文中不再赘述代码实现。欢迎给repo点亮Star,您的点赞是作者持续创作的动力。

 在这篇文章中,我们将探讨如何使用Huggingface上的一个专门的医疗语音识别数据集,微调OpenAI的Whisper语音转文字模型(STT)。我们将展示如何使Whisper更好地理解和转录医疗术语,从而使其在医疗相关的语音识别中更有用。本文的步骤不适用于任何形式的临床使用、医疗诊断或患者护理,也不提供或支持任何商业用途。


微调过程概述


  1. 选择合适的数据集

  2. 微调Whisper模型

  3. 评估微调后的模型

  4. 使用Web应用展示模型

第0步:准备环境

 
在开始微调过程之前,请确保你具备以下条件:

硬件要求:

  • GPU:微调必需,建议24GB或以上显存。

    软件和账户:

  • Huggingface账户:访问模型和数据集所需。

  • Weights & Biases (wandb)账户:推荐用于实验跟踪。


第1步:选择数据集

 
我们将使用Huggingface上的一个特定医疗语音识别数据集:

  • 数据集名称:yashtiwari/PaulMooney-Medical-ASR-Data

  • 数据集特点:包含音频录音及其对应的转录文本,内容集中在医疗术语。


ASR组件概述

 
ASR涉及三个主要组件:

  1. 特征提取器(Feature Extractor:处理原始音频输入。

  2. Tokenizer:将模型输出后处理为文本。

  3. Model:执行序列到序列的映射。


微调步骤

 

  1. 特征提取器:准备音频数据,期望16kHz采样率,将音频转换为log-Mel频谱图。

  2. 分词器:处理文本,将文本转为模型可理解的token ID。

  3. 数据准备:使用WhisperProcessor简化特征提取器和分词器的使用。

  4. 数据整理:使用自定义数据整理器准备训练数据。

  5. 评估指标:使用词错误率(WER)评估模型性能。

  6. 训练设置:定义训练参数并启动训练。

训练和评估

 
我们将使用Seq2SeqTrainer进行训练,并在训练过程中定期评估模型性能。训练完成后,可以将模型推送到Huggingface Hub,方便共享和使用。

 


训练中资源开销

训练中的损失函数

词错误率(WER) 是衡量自动语音识别(ASR)系统性能的一个指标。它计算的是系统生成的转录文本与参考文本之间的差异。WER的计算公式如下:

WER = (替换的词数 + 删除的词数 + 插入的词数) / 参考文本中的总词数

具体来说:

  • 替换的词数:系统转录的词与参考文本中的词不匹配的数量。

  • 删除的词数:参考文本中有,但系统转录中缺失的词的数量。

  • 插入的词数:系统转录中有,但参考文本中没有的词的数量。

  • 参考文本中的总词数:参考文本中的总词数。

    WER的值越低,表示模型的转录准确率越高。图片中的WER值显示了在不同训练步骤(Step)下模型的词错误率。

从上图可以看出,在训练过程中,损失函数(Training Loss和Validation Loss)和词错误率(WER)之间的关系并不总是线性的。以下是一些可能的原因,解释为什么损失函数降低了,但WER却升高了:

  1. 过拟合(Overfitting):模型在训练集上表现得很好(损失函数降低),但在验证集上表现不佳(WER升高)。这可能是因为模型过度拟合训练数据,无法很好地泛化到未见过的数据。

  2. 损失函数与评估指标的差异:损失函数和WER是不同的评估标准。损失函数通常是基于模型的预测概率,而WER是基于最终的转录结果。模型可能在优化损失函数时没有直接优化WER。

  3. 数据集不平衡:训练数据和验证数据可能存在不平衡,导致模型在某些特定类型的数据上表现较好,而在其他类型的数据上表现较差。

  4. 随机性和波动:在训练的不同阶段,模型的性能可能会有波动。即使总体趋势是损失函数降低,WER也可能在某些步骤中暂时升高。

  5. 超参数设置:学习率、批量大小等超参数的设置可能影响模型的训练过程。如果学习率过高,模型可能会在训练过程中出现不稳定的情况。

    为了进一步分析,可以考虑以下措施:

  • 检查训练和验证数据集的分布,确保它们的一致性。

  • 调整超参数,如学习率和批量大小。

  • 使用早停(Early Stopping)策略,防止过拟合。

  • 监控更多的评估指标,以全面了解模型的性能。


实验结果还不错:


参考:https://medium.com/@mahendra0203/fine-tuning-an-ai-speech-to-text-model-for-medical-transcription-b05397e0e1e1


大魏分享
https://github.com/davidsajare/david-share.git
 最新文章