提示

返回博客列表

字幕要精确到每个词?WhisperX 强制对齐(word-level timestamp)实战

字幕要精确到每个词?WhisperX 强制对齐(word-level timestamp)实战

普通 Whisper 出的时间轴是"整句级"的——一句字幕一个起止时间,字幕在屏幕上整句一起跳,跟不上一句句的口型。做教学字幕、歌词字幕、演讲逐字稿时,这不够。WhisperX 在 Whisper 后面接了一个"强制对齐"模型,能把时间轴精确到每个词。这篇讲怎么跑。

WhisperX 干了啥

两步:

  1. Whisper 出文本 + 句级时间戳;
  2. wav2vec2 类对齐模型,把每个词"贴"到音频上的精确位置(强制对齐,forced alignment)。

所以你拿到的是带词级时间轴的 srt/vtt。

跑起来

whisperx video.mp3 --model large-v2 --output_format srt   --compute_type int8 --language zh

--language zh 指定中文,否则它先检测可能误判。int8 是量化版,省显存。

坑一:对齐模型要语言匹配

WhisperX 的对齐模型是按语言分的(wav2vec2-large-xlsr-53-... 各语种)。没指定或指定错,对齐会乱。中文要确认装了中文对齐模型,不然词级时间轴是假的。

坑二:多人说话错位

强制对齐默认不分说话人,两个人抢话时词会乱贴。要区分说话人得加 diarization(说话人分离),需要 pyannote 的 token:

whisperx video.mp3 --model large-v2 --diarize --hf_token your_token

和 ffsubsync 的关系

两个不同活:WhisperX 是"从零生成准时间轴",ffsubsync 是"校正已有字幕的时间轴"。如果你已经有一份外文 srt 只是对不上画面,用 ffsubsync 更快;如果是从头出字幕又要词级精度,用 WhisperX。

产出能直接进剪辑软件

srt/vtt 丢进 PR、剪映、DaVinci 都能认,词级时间戳做"逐字高亮"字幕特效很顺。前面多字幕轨那篇讲怎么封装,这条生成的字幕直接喂进去就行。

提醒

词级精度依赖音频清晰度和对齐模型质量,嘈杂录音别指望每个字都准。关键句子人工过一遍最稳。

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

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

顶部