WhisperX:带词级时间戳与说话人分离的极速 Whisper 转写部署指南
WhisperX 是基于 OpenAI Whisper 的高性能语音转写工具,在 faster-whisper 批量推理基础上,通过 wav2vec2 强制对齐提供词级时间戳,并接入 pyannote 做说话人分离。large-v2 可达 70 倍实时速度,显存 < 8GB 即可跑。论文发表于 INTERSPEECH 2023,获 Ego4D 转录挑战赛第一名。
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | m-bain/whisperX |
| 开源协议 | BSD-4-Clause |
| 主要语言 | Python |
| Star 数 | 25k+ |
| 论文 | arXiv:2303.00747 |
| 会议 | INTERSPEECH 2023 |
二、官方图片
WhisperX 仓库社交预览图:

三、环境要求
- Python 3.10+;
- GPU 加速需 CUDA Toolkit 12.8;
- faster-whisper 后端;
- pyannote.audio(说话人分离,需 Hugging Face Token 接受用户协议);
- 显存 < 8GB 即可跑 large-v2(beam_size=5);
- ffmpeg。
四、部署步骤
1. 安装
pip install whisperx
# 或
uvx whisperx
2. 可选:加速对齐
pip install "whisperx[fast]"
# 或
pip install numba
装 Numba 后对齐循环 JIT 编译,长音频批量管线可加速 30–100 倍;不装则自动回退 PyTorch。
3. 命令行转写
whisperx path/to/audio.wav
4. 高精度时间戳
whisperx path/to/audio.wav --model large-v2 \
--align_model WAV2VEC2_ASR_LARGE_LV60K_960H \
--batch_size 4
5. 说话人分离
whisperx path/to/audio.wav --model large-v2 --diarize --highlight_words True
# 已知说话人数
whisperx path/to/audio.wav --model large-v2 --diarize --min_speakers 2 --max_speakers 2
需先在 Hugging Face 接受 pyannote/speaker-diarization-community-1 用户协议,并传 --hf_token hf_xxx。
6. 上下文感知批量(2026 新特性)
whisperx path/to/audio.wav --model large-v2 --interleaved_context
开启 condition_on_previous_context,标点与专有名词更准。
7. CPU / Mac 运行
whisperx path/to/audio.wav --compute_type int8 --device cpu
8. 其他语言
whisperx --model large-v2 --language de path/to/audio.wav
默认对齐模型覆盖英、法、德、西、意,其他语言自动从 Hugging Face 选取。
9. Python API
import whisperx
from whisperx.diarize import DiarizationPipeline
device = "cuda"
audio_file = "audio.mp3"
batch_size = 16
compute_type = "float16"
# 1. 批量转写
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size, interleaved_context=True)
# 2. 词级对齐
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device,
return_char_alignments=False)
# 3. 说话人分离
diarize_model = DiarizationPipeline(token=YOUR_HF_TOKEN, device=device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)
五、使用方法
核心能力
- 批量推理:70 倍实时(large-v2);
- 词级时间戳:wav2vec2 强制对齐,精确到词;
- 说话人分离:pyannote-audio,给每段打 speaker id;
- VAD 预处理:减少幻觉、按 VAD 片段批量。
输出格式
.srt、.vtt、.json,含词级时间戳与 speaker 标签;--highlight_words True 在 SRT 中高亮词时间。
适用场景
会议纪要、字幕生成、播客/视频转录、多说话人音频分析。
六、常见问题 FAQ
Q1:WhisperX 是什么? Whisper 加速版,加词级时间戳和说话人分离。
Q2:怎么安装?
pip install whisperx,GPU 需 CUDA 12.8。
Q3:说话人分离怎么开?
加 --diarize --hf_token hf_xxx,需在 Hugging Face 接受 pyannote 用户协议。
Q4:需要多大显存? large-v2 + beam_size=5 不到 8GB。
Q5:支持中文吗?
支持,--language zh。
Q6:输出什么格式? srt、vtt、json,含词级时间戳与 speaker。
Q7:怎么加速对齐?
装 Numba,pip install "whisperx[fast]",长音频快 30–100 倍。
七、跳转链接
- GitHub 仓库:m-bain/whisperX
- faster-whisper:guillaumekln/faster-whisper
- pyannote.audio:pyannote/pyannote-audio
- 论文:arXiv:2303.00747
- 上下文批量论文:arXiv:2608.31170