SuperAPI AI 工具集

whisperX

WhisperX 是一个开源的自动语音识别(ASR)工具,基于 OpenAI 的 Whisper 模型构建,提供词级时间戳和说话人分离(Diarization)功能。它通过批处理推理(batched inference)实现高达 70 倍实时转录速度(使用 large-v2 模型),并借助 wav2vec2 对齐模型生成精确的词级时间戳,解决了原版 Whisper 时间戳不准确(可能偏差数秒)的问题。WhisperX 使用 faster-whisper 作为后端,在 beam_size=5 的 large-v2 模型下仅需不到 8GB 显存。它还集成了来自 pyannote-audio 的说话人分离功能,可输出带说话人标签的转录文本,并支持 VAD(语音活动检测)预处理以减少幻觉、支持批处理而不降低 WER。WhisperX 在 Ego4d 转录挑战赛中获得第一名,并被 INTERSPEECH 2023 收录。它支持命令行使用,可输出 .srt 等字幕格式,并支持多语言(通过语言特定的音素 ASR 对齐模型)。

访问官网

工具介绍

WhisperX 是一个用于自动语音识别(ASR)的开源工具,主要特点包括词级时间戳和说话人分离。它基于 OpenAI 的 Whisper 模型,但针对原版时间戳仅到语句级别且可能偏差数秒的问题,通过 wav2vec2 强制对齐(forced alignment)实现了精确的词级时间戳。

主要能力:

  • 批处理推理:使用 whisper large-v2 模型可达 70 倍实时转录速度。
  • 高效后端:采用 faster-whisper 后端,large-v2 模型在 beam_size=5 下需要不到 8GB 显存。
  • 词级时间戳:使用 wav2vec2 对齐,提供准确的词级时间戳。
  • 说话人分离:集成 pyannote-audio 的说话人分离功能,可输出带说话人 ID 标签的多说话人转录文本。
  • VAD 预处理:使用语音活动检测减少幻觉,并支持批处理且不降低 WER。
  • 上下文感知批处理:2026 年发布,在批处理转录框架中启用 condition_on_previous_context,改善标点和专有名词的准确性。

使用方式: WhisperX 可通过 PyPI 安装(推荐简单安装),也可通过 uvx 或从 GitHub 仓库安装。开发者可克隆仓库进行修改。若使用 GPU 加速,需先安装 CUDA toolkit 12.8;仅使用 CPU 可跳过。可能还需要安装 ffmpeg、rust 等,参考 OpenAI whisper 的安装说明。 命令行使用:运行 whisper 示例(默认参数,whisper small 模型),可添加 --highlight_words True 在 .srt 文件中可视化词时间。 启用说话人分离:需提供 Hugging Face 访问令牌(read 权限),在 --hf_token 参数后传入,并接受 speaker-diarization-community-1 模型的用户协议。 为提高时间戳精度(以更高显存为代价)可使用更大模型;也可设置说话人数量(如 --min_speakers 2 --max_speakers 2)来标注说话人 ID。 为保持连续上下文(适合技术语言/标点),可设置 interleaved_context=True。 可在 CPU 上运行(也适用于 Mac OS X)。 通过 --condition_on_prev_text 可基于前文上下文(有助于长音频效果)。

多语言支持: 音素 ASR 对齐模型是语言特定的。对于已测试语言,模型会自动从 torchaudio pipelines 或 Hugging Face 选取。只需传入 --language 代码,并使用 whisper --model large。目前默认提供 {en, fr, de, es, it} 等语言,其他语言可在 alignment.py 的 DEFAULT_ALIGN_MODELS_HF 中查看支持列表。如果检测到的语言不在列表中,需从 Hugging Face 模型中心寻找基于音素的 ASR 模型并在数据上测试。

技术细节与限制:

  • 转录差异:WhisperX 为启用单次批处理,whisper 推理使用 --without_timestamps True,可能导致与默认 whisper 输出有差异。
  • 基于 VAD 的片段转录,不同于 OpenAI 的缓冲转录,可降低 WER 并支持准确批处理推理。
  • --condition_on_prev_text 默认为 False(减少幻觉)。
  • 不包含对齐模型字典中字符的转录词(如 "2014." 或 "£13.60")无法对齐,因此不提供时间。
  • 重叠语音处理不佳。
  • 说话人分离远非完美。
  • 需要语言特定的 wav2vec2 模型。
  • 减少显存的方法:减小 batch_size(如 --batch_size 4)、使用更小的 ASR 模型(--model base)、使用更轻的计算类型(--compute_type int8)(后两者可能影响质量)。

适用场景: 适用于需要高精度词级时间戳的语音转录任务,如字幕生成、会议记录、多说话人对话转录等。在 Ego4d 转录挑战赛中获得第一名,并被 INTERSPEECH 2023 收录。

联系与支持: 联系 maxhbain@gmail.com。项目由 VGG(Visual Geometry Group)和牛津大学支持,建立在 OpenAI whisper 基础上,借用 PyTorch 强制对齐教程代码,并使用 pyannote VAD/说话人分离及 faster-whisper 和 CTranslate2 后端。