faster-whisper: 4 倍速语音转文本,23K+ Stars — 2026 年对比 WhisperX、whisper.cpp 基准测试

faster-whisper(SYSTRAN)通过 CTranslate2 重新实现 OpenAI Whisper,提速 4 倍。涵盖 faster whisper 教程、基准数据、Docker 部署、Python API、VAD 过滤器、批处理,以及与 WhisperX 和 whisper.cpp 的生产级集成。

  • ⭐ 23000
  • MIT
  • 更新于 2026-05-19

{{< resource-info >}}

OpenAI 的 Whisper 在 2022 年改变了语音转文本领域,但原始 Python 实现并未充分利用硬件性能。对于一个 13 分钟的音频文件,使用 large-v2 模型的 openai/whisper 在 Tesla V100 GPU 上需要超过 4 分钟 —— 对于每天处理数百小时音频的生产流水线来说是不可接受的。SYSTRAN 的 faster-whisper 使用 CTranslate2 重新实现了 Whisper 推理,在保持相同准确率的同时实现了高达 4 倍的加速,并将显存使用减少了近 70%。凭借 GitHub 上 23,000+ stars,它已成为 Python 环境中生产级语音转文本的事实标准运行时。

本指南提供生产级的 faster whisper 教程,涵盖安装、基准测试、Docker 部署以及与 WhisperX 和 whisper.cpp 的集成。所有命令和配置均可直接复制粘贴使用。

faster-whisper GitHub 仓库

图 1:faster-whisper GitHub 仓库 —— 23,000+ stars,由 SYSTRAN 积极维护。

什么是 faster-whisper? #

faster-whisper 是使用 CTranslate2(一个用于 Transformer 模型的高性能 C++ 推理引擎)对 OpenAI Whisper 自动语音识别(ASR)模型的重新实现。它运行与原始 Whisper 相同的模型权重,但通过自定义 CUDA 内核、INT8/FP16 量化和融合注意力操作,实现了显著更高的吞吐量和更低的内存使用。

该项目由 Guillaume Klein 发起,现由 SYSTRAN 在 MIT 许可下维护。它支持所有 Whisper 模型尺寸(从 tiny 到 large-v3),可在 CPU 和 NVIDIA GPU 上运行,并支持首次加载时从 Hugging Face Hub 自动转换模型。

faster-whisper 的工作原理 #

其架构使用 CTranslate2 优化的运行时替代了 PyTorch 推理:

CTranslate2 架构

图 2:CTranslate2 推理引擎 —— 通过自定义 CUDA 内核和量化技术为 faster-whisper 提供加速的 C++ 后端。

实现加速的关键技术决策:

  • 权重量化:INT8 将模型内存减少约 50%,准确率损失可忽略不计(< 0.1% WER)。
  • 融合内核:CTranslate2 将多个 GPU 操作合并为单一内核启动,减少调度开销。
  • Flash Attention 支持:在 Ampere GPU(RTX 30xx+)上提供额外的内存带宽节省。
  • 批处理推理:在 GPU 上并行处理多个音频块,实现接近线性的吞吐量扩展。
  • Silero VAD 集成:内置语音活动检测跳过静音段,减少无效计算。

安装与配置 #

环境要求 #

  • Python 3.9+
  • GPU 推理:支持 CUDA 12.x 的 NVIDIA GPU 和 cuDNN 9.x
  • 无需安装 FFmpeg(通过 PyAV 内置)

pip 安装(CPU) #

# 创建虚拟环境
python -m venv venv-whisper
source venv-whisper/bin/activate

# 安装 faster-whisper
pip install faster-whisper

pip 安装(GPU 支持) #

# 通过 pip 安装 cuBLAS 和 cuDNN(仅限 Linux)
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*

# 设置库路径
export LD_LIBRARY_PATH=$(python3 -c 'import os; import nvidia.cublas.lib; import nvidia.cudnn.lib; print(os.path.dirname(nvidia.cublas.lib.__file__) + ":" + os.path.dirname(nvidia.cudnn.lib.__file__))')

# 安装 faster-whisper
pip install faster-whisper

Docker 部署 #

# 拉取官方 NVIDIA CUDA 镜像
docker run -it --rm --gpus all \
  -v $(pwd)/audio:/audio \
  nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04 \
  bash

# 容器内
apt-get update && apt-get install -y python3-pip
pip install faster-whisper

验证安装 #

# verify_setup.py
from faster_whisper import WhisperModel
import torch

print(f"PyTorch CUDA 可用: {torch.cuda.is_available()}")
print(f"CUDA 设备数: {torch.cuda.device_count()}")

model = WhisperModel("tiny", device="cuda", compute_type="float16")
print(f"模型加载设备: {model.model.device}")
print("安装验证成功")

首次转录 #

from faster_whisper import WhisperModel

# 加载模型(首次运行时自动从 Hugging Face 下载)
model = WhisperModel("large-v3", device="cuda", compute_type="int8")

# 转录音频
segments, info = model.transcribe("audio.mp3", beam_size=5)

print(f"检测语言: {info.language} (概率: {info.language_probability:.2f})")

for segment in segments:
    print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

与流行工具集成 #

WhisperX(说话人分离) #

WhisperX 基于 faster-whisper 构建,增加了词级时间戳和说话人分离功能。它是会议转录的首选工具。

pip install whisperx
import whisperx
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"
audio_file = "meeting.mp3"

# 1. 使用 faster-whisper 后端转录
model = whisperx.load_model("large-v3", device, compute_type="int8")
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=8)

# 2. 对齐获取词级时间戳
model_a, metadata = whisperx.load_align_model(
    language_code=result["language"], device=device
)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)

# 3. 说话人分离(需要 Hugging Face token)
diarize_model = whisperx.DiarizationPipeline(
    use_auth_token="your_hf_token", device=device
)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)

for segment in result["segments"]:
    speaker = segment.get("speaker", "UNKNOWN")
    print(f"[{segment['start']:.2f}s -> {segment['end']:.2f}s] "
          f"{speaker}: {segment['text']}")

whisper-asr-webservice(OpenAI 兼容 API) #

通过 OpenAI 兼容的 HTTP API 暴露 faster-whisper:

docker run -d --gpus all \
  -p 9000:9000 \
  -e ASR_MODEL=large-v3 \
  -e ASR_ENGINE=faster_whisper \
  -e COMPUTE_TYPE=int8 \
  onerahming/openai-whisper-asr
import requests

with open("audio.mp3", "rb") as f:
    response = requests.post(
        "http://localhost:9000/asr",
        files={"audio_file": f},
        data={"language": "en", "output": "json"}
    )
print(response.json())

Speaches(自托管 OpenAI 兼容服务器) #

docker run -d --gpus all \
  -p 8000:8000 \
  -e WHISPER__MODEL=large-v3 \
  -e WHISPER__COMPUTE_TYPE=int8 \
  fedirz/speaches:latest-gpu
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="dummy")

with open("audio.mp3", "rb") as f:
    transcript = client.audio.transcriptions.create(model="large-v3", file=f)
print(transcript.text)

LibreTranslate(翻译流水线) #

将转录与翻译串联用于多语言工作流:

from faster_whisper import WhisperModel
import requests

model = WhisperModel("large-v3", device="cuda", compute_type="int8")
segments, info = model.transcribe("japanese_audio.mp3", beam_size=5)
japanese_text = " ".join([s.text for s in segments])

response = requests.post("http://localhost:5000/translate", json={
    "q": japanese_text, "source": "ja", "target": "en"
})
print(response.json()["translatedText"])

基准测试 / 实际用例 #

基准对比图表

图 3:官方基准测试结果 —— faster-whisper 在 RTX 3070 Ti 上通过批处理 INT8 推理实现高达 8.9 倍加速。

GPU 基准测试:13 分钟音频,large-v2 模型 #

实现方案精度Beam Size耗时显存占用
openai/whisperfp1652分23秒4708 MB
whisper.cpp (Flash Attention)fp1651分05秒4127 MB
transformers (SDPA)fp1651分52秒4960 MB
faster-whisperfp1651分03秒4525 MB
faster-whisper (batch_size=8)fp16517秒6090 MB
faster-whisperint8559秒2926 MB
faster-whisper (batch_size=8)int8516秒4500 MB

在 NVIDIA RTX 3070 Ti 8GB 上使用 CUDA 12.4 执行。

CPU 基准测试:13 分钟音频,small 模型 #

实现方案精度Beam Size耗时内存占用
openai/whisperfp3256分58秒2335 MB
whisper.cppfp3252分05秒1049 MB
whisper.cpp (OpenVINO)fp3251分45秒1642 MB
faster-whisperint851分42秒1477 MB
faster-whisper (batch_size=8)int8551秒3608 MB

在 Intel Core i7-12700K 上使用 8 线程执行。

生产用例 #

用例模型硬件性能
会议转录(1小时音频)large-v3 int8RTX 4070~3 分钟处理
播客批量处理(100 文件)large-v3 int8 batch=8A100 40GB100 小时约 20 分钟
实时字幕small int8RTX 3060~200ms 延迟
呼叫中心分析medium int8CPU 8 核~2 倍实时

高级用法 / 生产环境加固 #

VAD 过滤器预分段 #

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="int8")

segments, info = model.transcribe(
    "audio.mp3",
    vad_filter=True,
    vad_parameters=dict(
        min_silence_duration_ms=500,
        speech_pad_ms=200,
        threshold=0.5
    ),
    beam_size=5
)

批处理推理最大化吞吐量 #

from faster_whisper import WhisperModel
import glob, time

model = WhisperModel("large-v3", device="cuda", compute_type="int8")
audio_files = glob.glob("podcasts/*.mp3")

start = time.time()
for file_path in audio_files:
    segments, _ = model.transcribe(file_path, batch_size=8, beam_size=5)
    text = " ".join([s.text for s in segments])
    print(f"{file_path}: {len(text)} 字符")
print(f"总耗时: {time.time() - start:.1f}秒,处理 {len(audio_files)} 个文件")

词级时间戳 #

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)
for segment in segments:
    for word in segment.words:
        print(f"[{word.start:.2f}s -> {word.end:.2f}s] {word.word}")

自定义模型转换 #

pip install transformers[torch]>=4.23

ct2-transformers-converter \
  --model openai/whisper-large-v3 \
  --output_dir whisper-large-v3-ct2 \
  --copy_files tokenizer.json preprocessor_config.json \
  --quantization float16

使用 Prometheus 监控 #

from faster_whisper import WhisperModel
from prometheus_client import Counter, Histogram, start_http_server

REQUEST_COUNT = Counter("transcription_requests_total", "总请求数")
REQUEST_DURATION = Histogram("transcription_duration_seconds", "请求耗时")

model = WhisperModel("large-v3", device="cuda", compute_type="int8")

@REQUEST_DURATION.time()
def transcribe(audio_path):
    REQUEST_COUNT.inc()
    return model.transcribe(audio_path, beam_size=5)

start_http_server(8000)

优雅错误处理 #

from faster_whisper import WhisperModel

def safe_transcribe(audio_path, device="cuda"):
    compute_types = ["int8", "int8_float16", "float16", "float32"]
    for compute_type in compute_types:
        try:
            model = WhisperModel("large-v3", device=device, compute_type=compute_type)
            segments, info = model.transcribe(audio_path, beam_size=5)
            return segments, info, compute_type
        except RuntimeError as e:
            print(f"{compute_type} 失败: {e},重试中...")
            continue
    raise RuntimeError("所有计算类型均失败")

与替代方案对比 #

特性faster-whisperOpenAI WhisperWhisperXwhisper.cpp
GPU 速度 (large-v3)~12 倍实时~3 倍实时~12 倍实时~8 倍实时
显存占用 (large-v3)~2.5 GB (int8)~11 GB (fp16)~3 GB~3 GB
Python API原生支持原生支持原生支持仅支持包装器
说话人分离不支持不支持内置不支持
词级时间戳支持不支持支持 (wav2vec2)支持
Apple Silicon仅 CPUCPU/GPU仅 CPUMetal (最快)
NVIDIA GPUCUDA (最快)CUDACUDACUDA
AMD GPU不支持不支持不支持Vulkan/ROCm
CPU 优化int8 SIMD基础优化int8 SIMDAVX2/NEON
VAD 过滤器内置 Silero内置手动调参
批处理推理支持不支持支持有限支持
模型量化int8/fp16/fp32fp16/fp32int8/fp16q4/q5/fp16
许可协议MITMITMITMIT
Stars (2026年5月)23,000+15,000+12,000+44,000+

选择建议 #

  • faster-whisper:NVIDIA GPU 或 CPU 上的 Python 流水线。最佳集成生态。用于生产 STT 服务、批处理和实时 Python 应用。
  • OpenAI Whisper:需要参考实现的研究和实验。避免用于生产工作负载。
  • WhisperX:需要说话人标签的会议转录、播客和访谈。基于 faster-whisper 构建。
  • whisper.cpp:Apple Silicon、嵌入式设备、边缘部署和跨平台应用。无需 Python 依赖。

局限性 / 诚实评估 #

faster-whisper 并非适用于所有场景。以下情况不建议使用:

  1. Apple Silicon GPU 加速:faster-whisper 没有 Metal 后端。在 M 系列 Mac 上,它仅以 CPU 运行 large-v3 约 3 倍实时速度。whisper.cpp 配合 Metal 可达 ~10 倍实时 —— 快 3 倍。

  2. AMD GPU 支持:CTranslate2 在 GPU 上仅支持 CUDA。不支持 AMD GPU。请改用支持 Vulkan 或 ROCm 的 whisper.cpp。

  3. 极端边缘设备:虽然 faster-whisper 可在 CPU 上运行,但 Python 运行时开销使其不如 whisper.cpp 适合树莓派 Zero 等微型设备。whisper.cpp 可在 1 GB 内存内运行且无需 Python。

  4. 说话人分离:faster-whisper 仅输出转录文本。识别"谁说了什么"需要 WhisperX 或单独的分离流水线。

  5. 超长音频扩展性:对于非常长的音频(>30 分钟),在某些 CPU 受限场景下 whisper.cpp 可能表现出更好的扩展特性。请在您的硬件上进行基准测试。

  6. 非 NVIDIA GPU 服务器:如果您的设备使用 AMD Instinct 或 Intel Arc GPU,faster-whisper 将回退到 CPU。这是 CTranslate2 的硬性限制。

常见问题 #

运行 faster-whisper 需要什么硬件? #

GPU 推理需要支持 CUDA 12.x 的 NVIDIA GPU。INT8 量化可在 8GB 显存(RTX 3060、RTX 4060)上舒适运行。CPU 推理则需要 4 核以上和 8GB 内存即可运行 small 模型。large-v3 模型在 CPU 上使用 INT8 需要约 3GB 内存。

如何在 Docker 中安装 faster-whisper? #

使用带有 cuDNN 9 的官方 NVIDIA CUDA 运行时镜像。上面的安装与配置部分展示了完整的 Dockerfile。关键要求是 nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04 基础镜像。使用 --gpus all 参数暴露 GPU。

转录准确率与 OpenAI Whisper 相同吗? #

是的。faster-whisper 使用相同的模型权重和分词器。词错误率(WER)差异在 0.1% 以内 —— 实践中无法区分。任何差异来自束搜索随机性,而非推理引擎。

我的 GPU 应该使用哪种 compute_type? #

对于 8GB GPU 和 GTX 10xx 显卡使用 int8 以获得最大显存节省。对于现代 GPU(RTX 30xx/40xx/50xx、A100、H100)使用 float16 获得最佳速度。Pascal 消费级显卡(GTX 1060/1070/1080)因 fp16 支持有限应使用 int8

faster-whisper 与 WhisperX 相比如何? #

WhisperX 基于 faster-whisper 构建,增加了说话人分离和通过 wav2vec2 的词级时间戳对齐。对于纯转录,faster-whisper 已经足够。当需要会议或访谈中的"谁说了什么"标签时使用 WhisperX。

可以将 faster-whisper 用于实时流式处理吗? #

可以,通过与 Whisper-Streaming 或 WhisperLive 集成。faster-whisper 本身不支持原生流式,但其低延迟使其成为流式服务器的理想后端。small 模型在 GPU 上的典型端到端延迟为 200-500 毫秒。

如何转换微调的 Whisper 模型? #

使用 ct2-transformers-converter CLI 工具(高级用法部分展示)。Hugging Face Hub 上的任何模型或与 Transformers 兼容的本地检查点都可以转换。转换期间支持 FP16 和 INT8 量化。

faster-whisper 是否支持所有 Whisper 模型尺寸? #

是的 —— 支持 tiny、base、small、medium、large-v1、large-v2 和 large-v3。distil-whisper 变体(distil-large-v3)也支持,能以微小准确率代价实现更快的推理。

结论 #

faster-whisper 是 Python 环境中 OpenAI Whisper 的生产级运行时选择。凭借比参考实现快 4 倍的加速、INT8 量化带来的 70% 显存减少,以及成熟的集成生态(WhisperX、speaches、whisper-asr-webservice),它能处理从单文件转录到批量处理数百小时音频的一切任务。

数据很明确:如果您使用 NVIDIA GPU 和 Python,faster-whisper 就是基准选择。一般用途从 int8 large-v3 模型开始,实时场景降至 small,需要说话人标签时集成 WhisperX。

行动清单:

  1. pip install faster-whisper 并运行上面的验证脚本。
  2. 使用仓库中的 13 分钟测试音频对您的硬件进行基准测试。
  3. 为生产流水线设置 Docker 部署。
  4. 加入 dibi8.com Telegram 群组 分享基准测试结果并获取生产环境支持。

推荐部署与基础设施 #

上述工具想要落地生产,靠谱的基础设施是前提。dibi8 自己也在用的两个选择:

  • DigitalOcean — 新用户 60 天 $200 免费额度,14+ 全球节点。运行开源 AI 工具的首选。
  • HTStack — 香港 VPS,国内访问低延迟,dibi8.com 自己也跑在它上面,生产环境验证过。

Aff 链接 — 不增加你的成本,但能帮 dibi8 持续运营。

来源与延伸阅读 #

  • faster-whisper GitHub 仓库:https://github.com/SYSTRAN/faster-whisper
  • CTranslate2 文档:https://opennmt.net/CTranslate2/
  • WhisperX(说话人分离):https://github.com/m-bain/whisperX
  • whisper.cpp(C++ 移植版):https://github.com/ggml-org/whisper.cpp
  • OpenAI Whisper(参考实现):https://github.com/openai/whisper
  • Speaches(OpenAI 兼容服务器):https://github.com/speaches-ai/speaches
  • Whisper-Streaming(实时流式):https://github.com/ufal/whisper_streaming
  • PyAV(音频解码):https://github.com/PyAV-Org/PyAV
  • Silero VAD:https://github.com/snakers4/silero-vad

💬 留言讨论