自定义 Whisper 模型训练:预训练权重下载与数据集准备

1. 预训练权重下载

Whisper 的预训练模型由 OpenAI 发布,可通过官方渠道获取:

  • 官方仓库:访问 GitHub 项目 openai/whisper

  • 权重下载
    运行以下命令自动下载指定模型(以 base 为例):

    pip install git+https://github.com/openai/whisper.git
    whisper --model base
    

    支持模型包括:
    tinybasesmallmediumlarge(根据需求选择,越大精度越高但计算资源消耗越大)。

  • 手动下载
    若需离线使用,直接从 Hugging Face Hub 下载:

    from huggingface_hub import snapshot_download
    snapshot_download(repo_id="openai/whisper-base")
    

2. 数据集准备
(1) 数据格式要求
  • 音频文件:支持 .wav.mp3 等格式,建议采样率 16kHz(与 Whisper 训练一致)
  • 标注文件:每段音频对应一个 .txt 文件,内容为纯文本转录,例如:
    audio_001.wav → audio_001.txt (内容:"今天天气晴朗")
    

(2) 数据集结构

推荐目录结构:

custom_dataset/
├── audio/
│   ├── sample1.wav
│   ├── sample2.wav
│   └── ...
└── transcripts/
    ├── sample1.txt
    ├── sample2.txt
    └── ...

(3) 数据预处理脚本

使用以下 Python 脚本验证数据对齐:

import os
import librosa

audio_dir = "custom_dataset/audio"
text_dir = "custom_dataset/transcripts"

for file in os.listdir(audio_dir):
    audio_path = os.path.join(audio_dir, file)
    text_path = os.path.join(text_dir, os.path.splitext(file)[0] + ".txt")
    
    # 检查音频是否可加载
    try:
        y, sr = librosa.load(audio_path, sr=16000)
        print(f"✅ {file}: 音频时长 {len(y)/sr:.2f}s")
    except:
        print(f"❌ {file}: 音频加载失败")
    
    # 检查转录文件是否存在
    if not os.path.exists(text_path):
        print(f"❌ 缺失转录文件: {text_path}")

3. 关键注意事项
  • 数据量要求
    微调建议至少 100 小时语音数据(低资源场景可用 10-50 小时,但效果受限)
  • 语言覆盖
    若训练多语言模型,需平衡不同语言的数据比例
  • 噪声控制
    添加背景噪声时可使用音频增强库:
    from audiomentations import AddBackgroundNoise
    augmenter = AddBackgroundNoise(p=0.3)
    augmented_audio = augmenter(y, sr)
    

4. 下一步建议

完成数据准备后,可结合框架(如 Hugging Face Transformers)进行微调:

from transformers import WhisperForConditionalGeneration

model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-base")
# 加载自定义数据集并启动训练...

提示:对于长音频(>30秒),需先分割为片段后再训练,避免内存溢出。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐