【实践记录】faster-whisper WhisperModel vs BatchedInferencePipeline 性能对比

5 min

测试环境

项目配置
操作系统Windows 11 Pro 10.0.26200
CPU13th Gen Intel Core i5-13500H
GPUNVIDIA GeForce RTX 4050 Laptop GPU (6 GB)
Pythonminiconda3
faster-whisper1.1.1
CTranslate24.6.0

测试音频

  • 来源:小宇宙播客《自我进化论》No.73 — 袁师懋道长访谈
  • 时长:98.4 分钟(5902.54s)
  • 文件大小:181 MB(m4a 格式)
  • 语言:中文

性能对比

指标WhisperModelBatchedInferencePipeline
模型加载5.20s3.80s
转录时间280.70s (4.7min)149.31s (2.5min)
总耗时288.52s156.35s
RTF(实时因子)0.048x0.025x
实时倍速21.0x39.5x
Segment 数量3877199
Word 级时间戳数19,07817,144
文本总字符数23,03023,040
VAD关闭开启(min_silence=500ms)
Pipeline 特点逐 segment 顺序处理批量并行处理 + VAD 预分段

分析

速度:BatchedInferencePipeline 快 1.88 倍(149s vs 281s),得益于 VAD 预分段和批量推理。

Segment 粒度:WhisperModel 产生 3877 个 segments,BatchedInferencePipeline 仅 199 个,比例约 19.5

。原因是 VAD 将语音合并为较大的连续块,而 WhisperModel 每个 Whisper 内部分段都作为独立 segment。

文本质量:两者字符数几乎一致(23,030 vs 23,040),转录内容基本相同。但 WhisperModel 提供更细粒度的 word-level 时间戳(19,078 vs 17,144),对字幕对齐更友好。

转录完整性对比

用 30 秒为一个时间桶,统计两种 Pipeline 在音频各时段的覆盖情况:

指标WhisperModelBatchedPipeline
时间覆盖率100.0% (197/197 桶)94.9% (187/197 桶)
尾部覆盖覆盖到音频末尾 (5902.5s)到 5639.8s 止,缺失最后 262.8s (4.5%)
语音时长占比4530.8s (76.8%)5139.5s (87.1%)
>2s 空白间隔数63 个36 个
Segment 重叠00

关键发现

  1. BatchedPipeline 丢失了最后约 4.5 分钟内容(93-98 分钟区间)。VAD 在音频尾部判定为静音而跳过了实际存在的语音。此外 1.5-2.0 分钟区间也有一个遗漏桶。而 WhisperModel 的尾部覆盖完整,连片尾”字幕志愿者 杨茜”这类极短语音都成功捕获。

  2. BatchedPipeline 的 segment 更粗(平均 25.8s vs 1.2s),语音时长占比更高(87.1% vs 76.8%),但这是 VAD 合并效应——将多个短句合并为一个大块——不等于实际内容更多。

  3. 两者总字数几乎一致(23,030 vs 23,040),说明 BatchedPipeline 在覆盖区域内转录质量相当,问题仅在于边缘遗漏。

  4. BatchedPipeline 独占覆盖为 0——所有它覆盖的区域 WhisperModel 也覆盖了,但 WhisperModel 额外覆盖了 10 个桶。

词级时间戳质量对比

指标WhisperModelBatchedPipeline
词总数19,07817,144
词平均时长233ms223ms
词平均间隔6ms78ms
词间大间隔 (>500ms)60922
零时长词115 (0.6%)132 (0.8%)
每 segment 词数avg 4.9avg 86.2

词间间隔分布

间隔范围WhisperModelBatchedPipeline
0ms(紧邻)98.4%84.9%
1-200ms0.6%6.0%
201-500ms0.6%3.6%
501-1000ms0.3%3.4%
1-5s0.1%2.1%

分析

WhisperModel 的词级时间戳紧凑且连续——98.4% 的相邻词间隔为 0ms,词间大间隔(>500ms)仅 60 处。这意味着词与词之间几乎没有时间空隙,时间轴非常平滑。

BatchedPipeline 则有 922 处词间大间隔(>500ms),且 2.1% 的间隔超过 1 秒。实际查看这些大间隔,它们出现在句子之间的自然停顿处,但被归入了同一个 segment 内。例如某个 segment 中,“动物”和”不喜欢”之间出现了 3.5 秒的空隙——这在字幕场景中会导致一句话已经说完,但字幕仍停留在屏幕上。

实际影响:对于字幕生成(SRT/ASS),WhisperModel 的词级时间戳可以直接用于逐词卡拉 OK 效果或精确的换行控制。BatchedPipeline 的时间戳在一个长 segment 内会出现多次大跳跃,无法直接用于精细的字幕同步。

选型建议

场景推荐 Pipeline原因
生成字幕文件(SRT/ASS)WhisperModel更细粒度的 segment,字幕时间轴更精确
快速获取转录文本BatchedInferencePipeline快 1.88 倍,文本质量相同
短视频高光裁切BatchedInferencePipeline速度快,VAD 分段足够定位片段
长音频逐句分析WhisperModel每个句子独立 segment,便于后续处理
长音频完整转录WhisperModel100% 覆盖,BatchedPipeline 可能丢失尾部内容