Loading...

文章背景图

WhisperX:带词级时间戳与说话人分离的极速 Whisper 转写部署指南

2026-10-22
0
- 字
- 分钟
|

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 仓库社交预览图:

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 倍。

七、跳转链接

评论交流

文章目录