ASR:自动语音识别
自动语音识别将语音转换为文本;Transformers 的 ASR 指南在 MInDS-14 上微调 Wav2Vec2,并用模型推理。
核验日期
定义
自动语音识别(ASR)将语音信号转换为文本,把一段音频输入序列映射为文本输出。Siri 和 Alexa 等虚拟助手每天使用 ASR 模型来帮助用户,会议期间的实时字幕和笔记记录是另外的面向用户的应用。Transformers 自动语音识别指南演示如何在 MInDS-14 数据集上微调 Wav2Vec2,把音频转写为文本。
Transformers 自动语音识别指南还演示了如何用微调后的模型做推理。在该指南的微调示例中,加载了词错误率(WER)指标。
一图看懂
Wav2Vec2 用 AutoModelForCTC 加载。要应用的归约方式通过 ctc_loss_reduction 参数指定。
- 训练超参数在 TrainingArguments 中定义。
- Transformers 的 ASR 指南指出,在 TrainingArguments 中,唯一必需的参数是 output_dir,它指定模型的保存位置。
- 把 push_to_hub 设置为 True,即可将模型推送到 Hub,上传模型需要先登录 Hugging Face。
- 训练参数连同模型、数据集、分词器、数据整理器和 compute_metrics 函数一起传给 Trainer。
- 调用 train() 来微调模型。
- 创建一个函数,把预测和标签传给 compute 来计算 WER。
原文没有明确这些要点的先后顺序,因此按要点列出,不画先后箭头。
工作原理
加载 Wav2Vec2 处理器来处理音频信号。MInDS-14 数据集的采样率是 8000Hz,因此需要重采样到 16000Hz 才能使用预训练的 Wav2Vec2 模型。预处理函数调用 audio 列来加载并重采样音频文件。
预处理函数还从音频文件中提取 input_values,并用处理器对 transcription 列分词。Transformers 没有适用于 ASR 的数据整理器,因此需要改造 DataCollatorWithPadding 来创建样本批次。数据整理器会把文本和标签动态填充到批次内最长元素的长度,而不是整个数据集的长度,使它们长度一致。
与其他数据整理器不同,这个数据整理器需要对 input_values 和标签使用不同的填充方法。如果需要,音频文件的采样率要重采样,使其与模型的采样率一致。指南指出,也可以在分词函数中设置 padding=True 来填充文本,但在数据整理器中动态填充更高效。
例子
Transformers 自动语音识别指南从 Datasets 库加载 MInDS-14 数据集的一个较小子集。数据集的 train 划分用 train_test_split 方法拆分成训练集和测试集。audio 字段是语音信号的一维数组,必须被调用才能加载并重采样音频文件。
transcription 字段是目标文本。实例化一个自动语音识别的 pipeline,传入自己的模型,并把音频文件传给它。也可以手动复现 pipeline 的结果。
处理器负责预处理音频文件和转写文本,并以 PyTorch 张量的形式返回输入。把输入传给模型并返回 logits,再取概率最高的预测 input_ids,用处理器将其解码回文本。MInDS-14 数据集包含 lang_id、english_transcription 等字段,但 Transformers 的 ASR 指南只关注 audio 和 transcription 两个字段。
来源
本页内容整理自以下官方来源,点击可核对原文。
核验日期 ·
本页由 AI 依据上述官方来源整理,并经自动核对,未经本站实测。 发现错误?告诉我们。