whisperX
基于 Whisper 的词级时间戳语音识别工具,支持 70x 实时转录与说话人分离
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于 Whisper 的词级时间戳语音识别工具,支持 70x 实时转录与说话人分离
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你是一位记者,手头有一段两小时的采访录音。以前,整理采访稿是一件极其繁琐的事——你需要反复播放音频,边听边打字,还要手动标记每句话在哪个时间点出现。如果你需要区分多个说话人的内容,那更是难上加难。WhisperX 正是为解决这一痛点而生的开源工具:它不仅能把音频转成文字,还能精确告诉你每个词出现在第几分几秒,甚至自动识别出这是「记者」在说话还是「受访者」在说话。
WhisperX 由澳大利亚麦考瑞大学研究员 Max Bain 开发,是基于 OpenAI 开源的 Whisper 语音识别模型的增强工具。截至目前,该项目在 GitHub 上已累计获得超过 22,000 颗星,并已被 INTERSPEECH 2023 学术会议接收,还在 Ego4d 语音转写挑战赛中斩获第一名。

图1:WhisperX 核心技术流程图,展示了从原始音频到带时间戳转录文本的完整处理链路
OpenAI 在 2022 年开源的 Whisper 模型在语音识别准确率上表现出色,但在实际应用中暴露出几个明显短板:
时间戳粒度太粗。 Whisper 输出的是句子级别的 timestamp,一句话的开始和结束时间可能是「第30秒到第45秒」——但如果你的音频中有大量短句、停顿、或者需要精确到每个词的边界,这种粗糙的切分就无法满足需求。特别是对于字幕制作、法律取证、播客时间轴标注等场景,词级时间戳是刚需。
不支持说话人分离。 在会议、多人访谈等场景中,你不仅想知道说了什么,还想知道「谁」在什么时间说了什么。Whisper 本身并不具备这个能力,开发者只能另找工具做后期处理。
推理效率有待提升。 Whisper 原生推理速度较慢,大模型在消费级 GPU 上的推理速度远达不到「实时」水准,对于需要处理大量音频的用户来说效率瓶颈明显。
WhisperX 正是针对这三个问题给出的系统性解决方案。
WhisperX 的技术方案可以概括为「三层增强」:
WhisperX 并没有从零手写推理代码,而是直接借用了 faster-whisper 这一社区优化库。faster-whisper 基于 CTranslate2 推理引擎,对 Whisper 模型进行了量化加速,实现了 70 倍实时转录(在 RTX 3090 等高端 GPU 上,large-v2 模型每小时音频仅需约 52 秒处理)。同时,大模型(large-v2)在 8GB 显存下即可运行,大幅降低了硬件门槛。
这是 WhisperX 区别于其他 Whisper 变体的核心创新。用户上传的音频首先经过 Whisper 获得句子级转录,然后通过 Facebook 开源的 wav2vec2 强制对齐模型,将每个单词「绑定」到音频中的精确时间位置。简单来说,这一步的作用类似于「用音素显微镜重新定位每个词的坐标」。
对于中文、日语等不使用拉丁字母的语言,WhisperX 内置了多语言的 torchaudio 管道,可以自动选取对应语言的音素模型,无需用户手动配置。
在完成词级时间戳对齐后,WhisperX 调用 pyannote-audio 实现说话人分离。该模型将音频按声学特征划分为不同的说话段落,并分配唯一的说话人 ID。如果已知说话人数量(通过 --min_speakers / --max_speakers 参数指定),准确率会更高。
最终输出支持 SRT 字幕格式(--highlight_words True 可高亮显示当前词),JSON 结构化格式,以及带说话人标签的纯文本,满足从字幕制作到数据分析的不同需求。
WhisperX 的安装极为简单,一行 pip 命令即可完成:
pip install whisperx
最基本的转录命令只需要指定音频文件路径:
whisperx audio.wav
如果需要词级高亮、时间戳和说话人分离,可以加上更多参数:
whisperx audio.wav \
--model large-v2 \
--diarize \
--highlight_words True \
--hf_token YOUR_HF_TOKEN
对于没有 GPU 的用户,也可以用 CPU 模式运行(牺牲速度换取通用性):
whisperx audio.wav --compute_type int8 --device cpu
WhisperX 的技术栈以 Python 为核心,依赖生态非常丰富:
| 依赖库 | 作用 |
|---|---|
| faster-whisper / CTranslate2 | 模型推理加速 |
| pyannote-audio | 说话人分离 |
| transformers / huggingface-hub | wav2vec2 对齐模型加载 |
| torch / torchaudio | 底层张量计算 |
| nltk | 句子分割(生成字幕用) |
| pandas | 结构化数据处理 |
项目使用 uv 作为包管理器,并针对 CUDA 12.8 做了专门的优化配置。开发者安装方式也极为友好:克隆仓库后一条 uv sync --all-extras --dev 即可搭建完整开发环境。
没有任何工具是完美的,WhisperX 同样存在一些值得注意的问题:
依赖链复杂,部署门槛高。 WhisperX 依赖 PyTorch + CUDA + ffmpeg + 多个第三方模型(wav2vec2、pyannote 等),安装过程容易出现版本冲突。特别是 pyannote-audio 需要用户自行到 Hugging Face 申请 access token 并签署使用协议,这对非技术用户来说并不友好。项目没有提供 Docker 支持,批量部署需要自行编写脚本。
GPU 显存要求不可忽视。 虽然 large-v2 模型宣称 8GB 显存可用,但开启说话人分离和多批次处理时,显存占用会显著增加。如果使用更小的模型(如 small、medium),准确率会有明显下降,用户需要在速度、准确率和资源消耗之间做出权衡。
模型许可问题。 pyannote-audio 的说话人分离模型采用自定义许可,用户在商业项目中使用前需仔细阅读其许可条款,避免潜在的合规风险。
WhisperX 的出现标志着语音处理工具从「能转文字」向「转出可用文本」迈进了一大步。在字幕制作领域,它将人工标注词级时间轴的工作从几小时压缩到几分钟;在播客和内容创作领域,它让创作者可以快速生成带时间戳的节目摘要;在学术和媒体研究领域,它为大规模音视频内容分析提供了基础设施。
从增长曲线看,WhisperX 自 2023 年发布以来持续保持活跃更新(当前版本 3.8.6),Issue 总量超过 200 个但维护响应及时。其技术方案也被多个商业化转录服务所参考或直接采用。
适合使用 WhisperX 的场景:
不太适合的场景:
WhisperX 代表了开源语音识别工具的一个重要方向:不是替代专业 ASR 服务,而是为需要本地控制、灵活定制的用户提供了高质量的中间层方案。