ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从安装到调参的 faster-whisper 实用指南:Whisper 转录提速 4 倍的完整方法

从安装到调参的 faster-whisper 实用指南:Whisper 转录提速 4 倍的完整方法 从安装到调参的 faster-whisper 实用指南Whisper 转录提速 4 倍的完整方法【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisperfaster-whisper 是基于 CTranslate2 对 OpenAI Whisper 的重新实现官方基准显示同精度下最高比原版快 4 倍且占用更少的内存配合 8 位量化还能进一步压低开销。本文按安装 → 首次转录 → 解读官方基准 → 按硬件选参数的顺序把这套语音转文字引擎的落地流程完整走一遍最后列出几个新手容易忽略的坑。 长音频转录的等待成本从哪里省下来用原版 openai/whisper 处理一段十几分钟的录音时瓶颈通常是两点一是推理本身慢CPU 上要等好几分钟GPU 上也不快二是显存占用高大模型在消费级显卡上很容易逼近上限。faster-whisper 的思路不是改动 Whisper 的模型结构而是把推理后端换成 CTranslate2 这个专为 Transformer 设计的推理引擎并用 int8 量化进一步压缩计算量。项目 README 给出的结论是在相同识别精度下速度最高达到原版的 4 倍内存占用更低CPU 和 GPU 两条路线都可以受益。它目前通过 PyPI 分发版本号在 faster_whisper/version.py 中维护当前为 1.2.1核心逻辑集中在 faster_whisper/transcribe.py。 一条命令安装八行代码出第一次转录结果依赖很轻只需要 Python 3.9 及以上。与 openai/whisper 不同系统上不需要单独安装 FFmpeg——音频解码由 PyAV 完成它的安装包已内置 FFmpeg 库。pip install faster-whisper最小可运行的示例如下GPU FP16 配置from faster_whisper import WhisperModel model WhisperModel(large-v3, devicecuda, compute_typefloat16) segments, info model.transcribe(audio.mp3, beam_size5) print(fDetected language {info.language} (p{info.language_probability:.2f})) for segment in segments: print(f[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text})CPU 上把构造参数换成devicecpu, compute_typeint8即可。有两点值得注意WhisperModel按名称如large-v3加载时会从 Hugging Face Hub 自动下载对应的 CTranslate2 转换模型首次运行需要联网模型缓存在本地 HF 目录。transcribe()返回的segments是生成器只有开始迭代时转录才真正执行。想一次性拿到全部结果用list(segments)包一层。如果要在容器里部署 GPU 版本仓库的 docker/ 目录提供了现成的 Dockerfile 和示例脚本可作参考。 官方基准数据GPU 与 CPU 各一组对照以下数字直接来自 README 的 Benchmark 一节转录对象是同一段 13 分钟的音频beam size 统一为 5。faster-whisper 使用 v1.1.0对照组为 openai/whisperv20240930、whisper.cppv1.7.2、transformersv4.46.3。GPUlarge-v2 模型NVIDIA RTX 3070 Ti 8GBCUDA 12.4实现 / 配置精度耗时显存openai/whisperfp162m23s4708MBfaster-whisperfp161m03s4525MBfaster-whisperbatch_size8fp1617s6090MBfaster-whisperint859s2926MBfaster-whisperbatch_size8int816s4500MBCPUsmall 模型Intel Core i7-12700K8 线程实现 / 配置精度耗时内存openai/whisperfp326m58s2335MBfaster-whisperfp322m37s2257MBfaster-whisperbatch_size8fp321m06s4230MBfaster-whisperint81m42s1477MBfaster-whisperbatch_size8int851s3608MB蒸馏模型distil-whisper-large-v3GPUbatch_size16fp16实现耗时YT Commons WERtransformersSDPA46m12s14.801faster-whisper25m50s13.527读表的关键单条推理下 faster-whisper 相对原版的提升在 2 倍左右而真正的速度差主要来自batch_size批量推理17s / 16s 这两行——但批处理会显著抬高显存/内存占用这是在快和省之间做取舍不是免费的。复现这些数字可以参考仓库自带的 benchmark/ 脚本。 三个值得展开的功能词级时间戳、VAD 与批量推理词级时间戳与静音过滤词级时间戳transcribe(..., word_timestampsTrue)后每个 segment 会带上segment.words每个词都有start/end时间适合做字幕高亮、逐词对齐这类需求。Silero VAD 过滤vad_filterTrue时库会先用内置的 Silero VAD 模型onnx 模型文件位于 faster_whisper/assets/切掉无人声的部分再转录长音频中静音多时能明显省时间。默认策略比较保守只过滤超过 2 秒的静音想更激进可以用vad_parametersdict(min_silence_duration_ms500)之类的参数调整完整默认值见 faster_whisper/vad.py。注意WhisperModel.transcribe的vad_filter默认值就是True而批量推理管线BatchedInferencePipeline.transcribe中默认为False两条入口行为不同按需显式指定更稳妥。批量推理BatchedInferencePipeline前面基准表里最漂亮的那几行数据都来自它。用法是把WhisperModel包一层from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched BatchedInferencePipeline(modelmodel) segments, info batched.transcribe(audio.mp3, batch_size16)BatchedInferencePipeline.transcribe与WhisperModel.transcribe是即插即用的替换关系。它把音频切成多个 30 秒片段并行送入 GPU适合显存够用的场景CPU 上同样生效但收益小于 GPU。另外distil 系列蒸馏模型distil-large-v3等与 faster-whisper 原生兼容README 建议配合languageen, condition_on_previous_textFalse使用。️ 不同硬件下怎么选 device、compute_type 与模型设备与精度组合WhisperModel的三个关键参数完整参数说明见源码 faster_whisper/transcribe.pydevicecpu/cuda/autodevice_index传列表如[0, 1]可把模型放到多张 GPU 上配合num_workers让多线程的transcribe()调用真正并行。compute_typefloat16GPU 首选、int8CPU 首选、int8_float16GPU 混合量化、default。cpu_threadsCPU 线程数默认 4显式设置后会覆盖OMP_NUM_THREADS环境变量。模型规格从tiny、base、small、medium到large-v1/v2/v3、turbo即 large-v3-turbo另有.en英文专用版和distil-*蒸馏版可选。经验上实时性要求高的场景用base.en/small起步离线处理重要音频再上large-v3或turbo显存紧张时优先考虑 int8 而不是换小模型精度损失通常更小。GPU 环境的 CUDA 依赖最容易卡住的一步GPU 运行需要 NVIDIA 的 cuBLASCUDA 12 版和 cuDNN 9 两个库装不上时 Python 会直接报错。版本对应关系要注意最新版ctranslate2只支持 CUDA 12 cuDNN 9CUDA 11 cuDNN 8 的环境需要把ctranslate2降到3.24.0CUDA 12 cuDNN 8降到4.4.0。Linux 上可以用pip install nvidia-cublas-cu12 nvidia-cudnn-cu129.*装库需先设置LD_LIBRARY_PATH不想折腾的话直接用nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04这类官方 CUDA 镜像仓库 docker/ 里的 Dockerfile 就是这条路线。微调过的模型怎么办官方提供的WhisperModel只覆盖预训练 checkpoint。如果自己微调过 Whisper可以用ct2-transformers-converter命令把 Transformers 格式的模型转成 CTranslate2 格式可选--quantization float16/int8转换后即可用本地目录路径直接加载。依赖见 requirements.conversion.txt。⚠️ 常见坑点与适用边界segments 是生成器model.transcribe()返回时还没有做任何计算忘记迭代会得到看似跑完、实则没跑的结果。这是 Issue 区最高频的困惑之一。横向对比时先看 beam sizefaster-whisper 默认beam_size5而 openai/whisper 的默认是 1两者默认值不同直接比速度或比 WER 都会失真CPU 对比时还要对齐线程数OMP_NUM_THREADS。量化有精度代价int8 在绝大多数场景下 WER 变化可忽略但低资源语言、强噪声音频上的退化会更明显关键业务建议用fp16/fp32与int8各跑一遍对比。批处理换的是显存batch_size8/16的速度是拿内存换的8GB 显卡上跑 large-v2 batch 时要留意 OOM。能力边界faster-whisper 本身不做说话人分离diarization、实时流式输出这些依赖社区项目如 README 中列出的 WhisperX、WhisperLive 等。它解决的是离线、批量、更快更省这一类需求。收尾faster-whisper 目前的价值很具体不改 Whisper 的模型权重只换推理后端和量化方式就在 GPU 上把 13 分钟音频的转录压到 1 分钟以内、CPU 上压到 2 分钟以内显存/内存占用同步下降API 与 openai/whisper 保持基本一致的形态。如果你手头已有转录脚本建议的迁移路径是先用pip install faster-whisper装好在 CPU int8 small 模型上验证流程跑通再按硬件升级到 GPU float16 或批量推理管线最后用仓库 tests/ 里的测试数据做回归。参数拿不准时直接读 faster_whisper/transcribe.py 中transcribe()的签名注释所有默认值都写在里面。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进