ByteNoteByteNote
WhisperX:语音转文字提速70倍,还能分清说话人
字

字节笔记本

2026年10月5日 · 约 10 分钟读完

WhisperX:语音转文字提速70倍,还能分清说话人

API中转
¥120

OpenAI 的 Whisper 是目前使用最广的开源语音识别模型之一:识别准确、支持多语言、可以完全在本地运行。但它在工程上一直有三个明显的短板:

  1. 慢:不原生支持批处理,长音频要等很久
  2. 时间戳不准:只精确到句子级,误差可能达到数秒
  3. 不区分说话人:多人对话的内容全部混在一起

开源项目 WhisperX 把这三个问题一并解决了:70 倍实时速度、词级时间戳、说话人分离,本地运行,免费开源。

一、WhisperX 是什么

WhisperX 是 Whisper 的增强版语音识别管线,其论文被语音技术会议 INTERSPEECH 2023 接收,作者团队还在 Ego4D 转录挑战赛中获得第一名。

它做的事可以一句话概括:用 Whisper 的准确率,加上批处理推理的速度、wav2vec2 的词级时间戳和 pyannote 的说话人分离,组成一条完整管线。

能力原版 WhisperWhisperX
速度1x(不批处理)70 倍实时(批处理 + faster-whisper 后端)
时间戳精度句子级(可能差几秒)词级(wav2vec2 强制对齐)
说话人识别不支持支持(pyannote-audio 分离)
幻觉控制静音段容易幻觉VAD 预处理减少幻觉
显存占用大(large-v2 需 10GB 以上)小于 8GB(large-v2、beam_size=5)

二、四个核心技术

1. 批处理推理:70 倍加速

原版 Whisper 逐段处理音频,一小段一小段串行推理,GPU 大量时间在空转。WhisperX 换用 faster-whisper 后端并引入批处理,把多段音频打包一起推理,GPU 利用率拉满。官方给出的成绩是 large-v2 模型达到 70 倍实时速度:1 小时的音频不到 1 分钟转完。

2. 词级时间戳:wav2vec2 强制对齐

原版 Whisper 的时间戳是句子级的,只告诉你这句话大概在第 10 秒到第 15 秒之间,误差可能有几秒,做字幕同步时经常对不上。WhisperX 的解法是两步走:先用 Whisper 转录文字,再用 wav2vec2 做强制对齐。wav2vec2 是音素级模型,能定位每个词在音频中的具体位置。这样每个词都有精确时间戳,做字幕、剪辑标记、语音搜索都能精确到毫秒级。

3. 说话人分离:pyannote-audio

会议、播客、采访这类多人对话场景,原版 Whisper 会把所有人说的话混在一起,分不清哪句是谁说的。WhisperX 集成 pyannote-audio 做说话人分离,分析音频特征并给每段话标注 SPEAKER_00、SPEAKER_01 等标签,转录结果自动按说话人整理。

4. VAD 预处理:减少幻觉

Whisper 有一个知名缺陷:在静音段容易产生幻觉,明明没有人声也会编造出内容。WhisperX 在转录前先用 VAD(Voice Activity Detection,人声活动检测)扫描音频,只对有人声的段落做识别,静音段直接跳过。按论文的测试结果,幻觉大幅减少,且没有 WER(词错误率)退化。

三、完整管线

text
音频输入
  |
  +-- VAD 预处理(检测人声段,去掉静音)
  |
  +-- Whisper 批处理转录(faster-whisper 后端,70 倍速度)
  |
  +-- wav2vec2 强制对齐(生成词级时间戳)
  |
  +-- pyannote 说话人分离(SPEAKER_00/01/...)
  |
  +-- 句子分段(nltk sent_tokenize,方便做字幕)
       |
       +-- 输出:带词级时间戳与说话人标签的转录文本

WhisperX 处理管线:从音频输入到带说话人标签的转录输出

四、怎么用

安装

bash
# PyPI 安装
pip install whisperx

# 或用 uvx 免安装直接运行
uvx whisperx

需要 GPU 加速时,先安装 CUDA 12.8 工具包(Linux 与 Windows 均有官方安装指南),只用 CPU 则可跳过这一步。

命令行用法

bash
# 基础转录
whisperx audio.mp3

# 指定模型与批大小
whisperx audio.wav --model large-v2 --batch_size 4

# 开启说话人分离(需 HuggingFace token)
whisperx audio.mp3 --hf_token YOUR_HF_TOKEN --diarize

# 输出 SRT 字幕并高亮词级时间点
whisperx audio.mp3 --output_format srt --highlight_words True

Python API

python
import whisperx

# 1. 加载模型
model = whisperx.load_model("large-v2", device="cuda")

# 2. 转录(批处理)
audio = whisperx.load_audio("meeting.mp3")
result = model.transcribe(audio, batch_size=16)

# 3. 词级对齐
model_a, metadata = whisperx.load_align_model(
    language_code="en", device="cuda"
)
result = whisperx.align(
    result["segments"], model_a, metadata, audio, device="cuda"
)

# 4. 说话人分离
diarize_model = whisperx.DiarizationPipeline(
    use_auth_token="YOUR_HF_TOKEN", device="cuda"
)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)

# 输出每句的说话人与时间
for segment in result["segments"]:
    speaker = segment.get("speaker", "?")
    text = segment["text"]
    start = segment["start"]
    print(f"[{start:.1f}s] {speaker}: {text}")

五、和其他方案怎么比

原版 WhisperWhisperXfaster-whisper云端 API
速度1x70 倍约 4 倍快(含上传耗时)
时间戳句子级词级句子级词级
说话人分离不支持支持不支持支持(付费)
幻觉较严重少较严重少
部署本地本地本地云端
费用免费免费免费按量付费

WhisperX 的甜蜜点在于同时拿到本地、免费、70 倍速度、词级时间戳和说话人分离:原版太慢太糙,faster-whisper 快但没有对齐与分离,云端 API 功能全但要付费且音频必须上传。对数据敏感、不能出本机的场景,WhisperX 几乎是唯一的全能解。

原版 Whisper 与 WhisperX 关键指标对比

六、适用场景与注意事项

适合谁:

  • 做播客或视频字幕:需要精确时间戳做同步
  • 做会议记录:需要区分说话人
  • 做语音搜索:需要词级时间戳定位
  • 批量处理音频:70 倍速度大幅缩短等待
  • 隐私敏感场景:音频不出本机

注意点:

  • 想跑得快需要 GPU,最佳是 NVIDIA CUDA;只有 CPU 也能运行,但速度优势会缩水
  • 说话人分离需要 HuggingFace token:免费注册后接受 pyannote 模型的使用协议即可
  • 显存门槛不高:large-v2 配 beam_size=5 也只要小于 8GB,更小的模型占用更低
  • 中文场景:Whisper 本身中文识别不错,但词级对齐依赖对应的 wav2vec2 中文模型,使用前建议先小样本验证

七、小结

WhisperX 的思路值得所有工具开发者参考:不重复造模型,而是把每个环节的最优组件缝合起来。Whisper 负责识别、faster-whisper 负责推理速度、wav2vec2 负责音素对齐、pyannote 负责说话人分离、VAD 负责人声检测,每个组件都是各自领域的成熟方案,组合在一起就是一个远超单模型的完整管线。

如果你要处理语音,做字幕、做会议记录、做播客转录,WhisperX 是目前本地免费方案里的优先选择。慢、糙、混这三个原版痛点,它一次性解决。

参考资料:

相关文章

分享: