快速上手 faster-whisper:基于 CTranslate2 的 Whisper 转录,最高提速 4 倍
2026/9/5 19:01:48 网站建设 项目流程

快速上手 faster-whisper:基于 CTranslate2 的 Whisper 转录,最高提速 4 倍

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

faster-whisper 用 CTranslate2 重写了 OpenAI Whisper,解决"转录太慢、内存吃紧"的痛点:相同准确率下,官方基准中 13 分钟音频的 large-v3 转录从 1 分 03 秒缩短到 17 秒(batch_size=8),显存占用还能减半。它支持 98 种语言自动检测、VAD 静音过滤与词级时间戳,pip 一条命令即可装好,模型从 tiny 到 large-v3、turbo 任选。

项目速览

  • 定位:OpenAI Whisper 的 CTranslate2 高性能重实现,API 与原版风格一致
  • 核心能力:多尺寸模型自动下载、GPU/CPU 双端推理、INT8 量化、批量转录(BatchedInferencePipeline)、Silero VAD 静音过滤、词级时间戳
  • 音频解码由 PyAV 内置 FFmpeg 库完成,系统无需单独安装 FFmpeg
  • 适合:需要处理长音频、批量音频,或在有限显存上跑 large-v3 的开发者

环境与安装

环境要求清单

  • Python 3.9 或更高(setup.py 中python_requires=">=3.9"
  • GPU 推理需 NVIDIA cuBLAS(CUDA 12)+ cuDNN 9;CPU 推理无任何额外依赖
  • 首次运行会从 Hugging Face 自动下载对应 CTranslate2 模型

安装命令

pip install faster-whisper

依赖ctranslate2onnxruntimeav等会随包自动安装。

第一次运行验证

新建一个hello.py,用仓库自带的测试音频跑一遍:

from faster_whisper import WhisperModel model = WhisperModel("tiny", device="cpu", compute_type="int8") segments, info = model.transcribe("tests/data/jfk.flac") print("Detected language '%s' with probability %f" % (info.language, info.language_probability)) for segment in segments: print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

预期输出:先打印Detected language 'en' with probability 0.99一行,随后按分段打印带时间戳的英文文本,例如[00.00 -> 01.50] And so my fellow Americans。tiny + int8 在普通 CPU 上几秒内完成。

核心能力拆解

自动语言检测 + 静音过滤

不指定language时,模型基于音频前 30 秒判断语种并给出置信度(98 种语言)。vad_filter默认开启,只保留人声段落:官方默认是过滤超过 2 秒的静音(faster_whisper/vad.py),可减少长静音音频里的幻觉输出。

段级与词级时间戳

每段带start/end,开启word_timestamps=True后每个词都有独立时间戳,可直接对齐字幕轴:

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

批量转录 BatchedInferencePipeline

把多个 30 秒窗口拼成一批并行推理,是提速的关键:官方基准中 13 分钟音频,large-v3 fp16 从 1 分 03 秒降到 17 秒(batch_size=8,GPU);small int8 在 CPU 上从 1 分 42 秒降到 51 秒。

from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") batched = BatchedInferencePipeline(model=model) segments, info = batched.transcribe("audio.mp3", batch_size=16)

批量模式下 VAD 默认启用,无需手动打开。

8-bit 量化省内存

compute_type="int8"(CPU)或"int8_float16"(GPU)将 large-v3 显存从约 4.5 GB 压到 2.9 GB,准确率基本不变,小显存显卡跑大模型的常用手段。

关键参数速查

参数常见取值适用场景
model_sizetiny / small / medium / large-v3 / turbo / distil-large-v3速度优先选 tiny/small;精度优先选 large-v3;turbo 兼顾两者
device"cpu" / "cuda"有 NVIDIA 卡用 cuda,否则 cpu
compute_typefloat16 / int8_float16 / int8 / int8_float32GPU 首选 float16;显存不够用 int8_float16;纯 CPU 用 int8
beam_size默认 5;1=贪心越大越准但越慢;求快可设为 1
vad_filter默认 True长静音音频保持开启;纯语音短音频影响不大
batch_size默认 8,可上调至 16仅 BatchedInferencePipeline 有效,显存允许就调大
word_timestamps默认 False需要词级时间戳(字幕对齐)时开启

完整参数定义见 faster_whisper/transcribe.py 的WhisperModel.transcribe方法。

落地场景

  • 视频字幕生成word_timestamps=True输出词级时间戳,直接拼装 SRT/ASS 字幕,比逐段手工对齐快得多。
  • 长录音批量转写:播客、会议录音配合vad_filter=True跳过静音段,再用批量推理压时间;CPU 上 small+int8+batch_size=8 处理 13 分钟音频约 51 秒。
  • 多语言素材统一入库:不指定language自动检测语种,同一批脚本处理中英文混合素材,无需预先分流。

避坑清单

  • GPU 启动报 CUDA/cuDNN 错误:最新ctranslate2只支持 CUDA 12 + cuDNN 9;CUDA 11 环境可回退pip install ctranslate2==3.24.0(CUDA 12 + cuDNN 8 则用4.4.0
  • 调用transcribesegments是空的:它是生成器,迭代时才开始转录;需要结果先segments = list(segments)
  • 显存不足:把 compute_type 从 float16 降到 int8_float16,或改用 smaller 的模型
  • 转录速度慢:对比性能前先确认beam_size等设置一致;CPU 场景用OMP_NUM_THREADS固定线程数
  • 首次运行等待很久:是在从 Hugging Face 下载模型,之后会本地缓存

小结

faster-whisper 用 CTranslate2 重写推理引擎,在准确率不变的前提下把 Whisper 的速度和内存占用都拉到了更高一档,pip 安装即可落地。

延伸阅读:全部模型与转录参数看 faster_whisper/transcribe.py;VAD 默认值(如min_silence_duration_ms=2000speech_pad_ms=400)看 faster_whisper/vad.py。

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询