提示

返回博客列表

Whisper 识别总翻车?用你自己的数据微调(fine-tune)实战

Whisper 识别总翻车?用你自己的数据微调(fine-tune)实战

前面那篇讲怎么部署 Whisper 出字幕,但很多人跑起来发现:专有名词崩、方言听不懂、嘈杂环境瞎写。通用大模型在垂直场景就是会翻车。这时候与其换更大的模型,不如用你自己的数据微调。这篇记我微调 Whisper-small 的全过程,和几个省算力的前置招。

先别急着微调,试两招

微调要数据、要显卡,成本高。先试:

  • initial_prompt:给模型一个提示,比如"这是一段医学讲座,含术语 XXX";
  • temperature 回退:默认会重试,设好候选温度;
  • condition_on_previous_text=False:长音频一段话错全段崩时关掉。

很多场景调 prompt 就够,没必要微调。

什么时候真要微调

  • 固定术语/人名(如你们公司产品名、主播昵称);
  • 固定口音/方言;
  • 固定噪声环境(车间、车内)。

数据准备

要"音频切片 + 文字标注",格式 jsonl:

{"audio": "clip/001.wav", "text": "今天我们讲 VidDown 的并发下载模型"}

每段最好 5~30 秒,太长 Whisper 会丢。我拿已有的 200 条标注,约 40 分钟,够了先试水。

训练

用官方 whisper 的 finetune 脚本(或 whisper-trainer):

python train.py --model_name openai/whisper-small   --train_data train.jsonl --eval_data eval.jsonl   --output_dir ./whisper-finetuned --epochs 5 --batch_size 8   --learning_rate 1e-5

单卡 3090,40 分钟数据、5 轮,跑了一晚上。

坑一:数据少容易过拟合

不到 1 小时的数据,epochs 别太高,否则训练集完美、验证集拉胯。我最后用 3 轮 + 早停。

坑二:长音频先切片

Whisper 对 30s 以上段处理差。微调前把语料按静音切到 30s 内(接前面 silencedetect 那篇),标注也对应切。

部署成快的

微调完是 PyTorch 权重,生产用 CTranslate2 转一下快 4 倍、显存省一半:

ct2-transformers-converter --model ./whisper-finetuned   --output_dir ./whisper-ct2 --copy_files tokenizer.json

然后 faster-whisper 直接加载。前面 Whisper 部署篇的玩法不变,只是模型换成你自己的。

提醒

小团队用 large-v3 + 好 prompt 往往比费力微调 small 更划算。真到术语满天飞才值得微调。

想亲手试试?用 VidDown 一键解析下载

粘贴视频链接即可解析,多平台支持、网页端即用;下载桌面客户端解锁海外平台本地解析,开通会员更享不限次下载。

顶部