微调 MMS 适配器模型以适用于低资源 ASR
TL;DR
Hugging Face 表明,仅对 MMS‑1B 检查点的适配器层进行微调,在仅约 4 小时 Common Voice 数据上训练 10‑20 分钟即可获得强劲的土耳其语音识别效果,且所需的可训练参数远少于完整模型微调。
保护世界语言多样性
MMS 通过使用小型适配器层作为语言之间的语言桥梁,支持超过 1,100 种语言的转录,其中许多语言濒临濒危。
MMS 微调概述
MMS‑1B 检查点在超过 1,400 种语言的超过 50 万小时音频上进行了预训练,随后在具有联合词汇输出层的 1,000+ 种语言上进行了微调,随后该输出层被语言特定的适配器层取代,每层包含大约 2.5M 权重。
提供三种面向 ASR 的检查点:mms-1b-fl102、mms-1b-l1107 和 mms-1b-all。
训练自适应权重 – 为什么适配器有帮助
适配器层在冻结的 Transformer 块之间插入小型可训练模块,使模型能够在不更新预训练权重大部分的情况下获得语言特定的语音和语法特征。这种方法降低了内存使用,加快了收敛速度,并避免了在低资源数据上的过拟合。
笔记本设置 – 数据和预处理
笔记本使用 Common Voice 6.1 的土耳其语分割(约 4 小时验证训练音频)。音频重采样至 16 kHz,移除特殊字符,文本转为小写,并归一化土耳其特定的变音符号。从转录中构建了包含 37 个标记(包括空格、标点、[UNK] 和 [PAD])的词汇表,并存储在 ISO‑639‑3 代码 tur 下。
Wav2Vec2Processor 将 Wav2Vec2FeatureExtractor(feature_size=1, sampling_rate=16000, padding_value=0.0, do_normalize=True, return_attention_mask=True)与自定义分词器结合。
训练过程和结果
训练采用自定义的 DataCollatorCTCWithPadding,分别对输入值和标签进行填充,将标签填充遮蔽为 ‑100,并使用词错误率(WER)作为评估指标。
模型从 facebook/mms-1b-all 加载,禁用 dropout 层,将词汇表大小设置为 37,忽略不匹配的大小(新初始化的 LM 头与新词汇表匹配)。
适配器层(重新)初始化,基础模型被冻结,只有适配器权重接收梯度。
训练参数:group_by_length=True,per_device_train_batch_size=32,num_train_epochs=4,learning_rate=1e-3,gradient_checkpointing=True,fp16=True,save_steps=200,eval_steps=100,logging_steps=100,push_to_hub=True。
在 100 步训练后,验证 WER 为 0.280;200 步后降至 0.232;300 步后为 0.229;400 步后为 0.223。同一时期训练损失从 4.905 下降到 0.2398。
这些结果表明,仅微调适配器层在相同低资源土耳其数据上优于对较小的 XLS‑R‑300M 检查点进行完整模型微调,并且更具内存效率。
加载和使用微调的适配器
训练后,适配器权重与基础模型一起保存为 adapter.tur.safetensors。进行推理时,使用 target_lang="tur" 加载检查点,并相应地设置分词器的目标语言:
model = Wav2Vec2ForCTC.from_pretrained("patrickvonplaten/wav2vec2-large-mms-1b-turkish-colab", target_lang="tur\)).to("cuda
)
processor = Wav2Vec2Processor.from_pretrained("patrickvonplaten/wav2vec2-large-mms-1b-turkish-colab
er
)
processor.tokenizer.set_target_lang("tur" )
对土耳其测试样本进行前向传播得到的预测与参考转录在微小的空格差异上匹配。
相同的基础模型可以通过调用 model.load_adapter("swe\) 加载瑞典适配器(adapter.swe.safetensors`)。