You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否直接使用未经微调的预训练模型?以Wav2Vec2 XLS-R为例

使用未微调Wav2Vec2 XLS-R模型与微调模型对比的方法

1. 加载未微调的预训练模型

直接通过Hugging Face Transformers库加载官方发布的XLS-R预训练权重,无需加载你的微调 checkpoint:

from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC

# 加载未微调的XLS-R模型与处理器(以large版本为例,可根据需求替换为base等版本)
processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53")
unfinetuned_model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53")

2. 音频预处理与推理

对目标音频进行统一预处理(确保采样率为16kHz,XLS-R模型的要求),然后执行推理得到未微调模型的输出:

import torch
import librosa

# 加载测试音频,强制转成16kHz采样率
audio, sr = librosa.load("test_audio.wav", sr=16000)

# 用未微调模型的处理器预处理音频
inputs = processor(audio, sampling_rate=16000, return_tensors="pt", padding=True)

# 关闭梯度计算以提升推理速度
with torch.no_grad():
    logits = unfinetuned_model(inputs.input_values, attention_mask=inputs.attention_mask).logits

# 解码得到预测文本
predicted_ids = torch.argmax(logits, dim=-1)
unfinetuned_pred = processor.decode(predicted_ids[0])

3. 加载微调后模型执行相同推理

用同样的音频输入,加载你微调后的模型重复上述步骤:

# 加载本地保存的微调后模型与处理器(替换为你的checkpoint路径)
ft_processor = Wav2Vec2Processor.from_pretrained("./fine_tuned_xlsr_checkpoint")
ft_model = Wav2Vec2ForCTC.from_pretrained("./fine_tuned_xlsr_checkpoint")

# 相同音频输入的预处理(可直接复用之前的inputs变量)
with torch.no_grad():
    ft_logits = ft_model(inputs.input_values, attention_mask=inputs.attention_mask).logits

ft_predicted_ids = torch.argmax(ft_logits, dim=-1)
finetuned_pred = ft_processor.decode(ft_predicted_ids[0])

4. 结果对比

  • 定性对比:直接打印两个模型的预测文本,直观查看差异:
    print("未微调模型预测结果:", unfinetuned_pred)
    print("微调后模型预测结果:", finetuned_pred)
    
  • 定量对比:用Word Error Rate(WER)指标量化性能差异,WER越低说明模型效果越好:
    from datasets import load_metric
    
    wer = load_metric("wer")
    # 替换为音频对应的真实标签文本
    reference = ["your_ground_truth_text"]
    
    unfinetuned_wer = wer.compute(predictions=[unfinetuned_pred], references=reference)
    finetuned_wer = wer.compute(predictions=[finetuned_pred], references=reference)
    
    print(f"未微调模型WER: {unfinetuned_wer:.4f}")
    print(f"微调后模型WER: {finetuned_wer:.4f}")
    

注意事项

  • 确保所有测试音频的采样率统一为16kHz,否则会影响模型输出准确性。
  • 微调后的处理器必须与微调时使用的一致,避免预处理差异导致结果偏差。
  • 若微调针对特定语言,测试时优先选择对应语言的音频,对比结果更具参考性。

内容的提问来源于stack exchange,提问作者dizzyme09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:45:18