faster-whisper 教程:在 GPU 与 CPU 上搭建高速 Whisper 语音转写
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是一个开源 Python 库,它用 CTranslate2 推理引擎重新实现了 OpenAI 的 Whisper 语音识别模型。相比原始 whisper,它在相同准确率下速度最高可达 4 倍,占用内存更低;再叠加 8 位量化,显存和内存还能进一步压缩。库自带语言自动检测、VAD 静音过滤和词级时间戳,适合做字幕生成、会议记录、音视频内容归档等场景。
三步快速上手
第一步:安装
pip install faster-whisper要求 Python 3.9 或更高版本。音频解码由 PyAV 库完成,系统里不需要额外安装 FFmpeg。
第二步:加载模型并转写
from faster_whisper import WhisperModel model = WhisperModel("small", device="cpu", 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}")按名字加载模型时,对应的 CTranslate2 权重会在首次运行时自动从 Hugging Face Hub 下载。
注意一个容易踩的坑:transcribe返回的segments是生成器,只有真正迭代它时转写才会执行。如果想一次性拿全结果,用segments = list(segments)收集即可。
第三步:词级时间戳
生成逐词对齐的文本(做字幕时常用):
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}")环境要求与 GPU 配置
- CPU 环境装上 Python 包即可运行;
- GPU 环境需要 NVIDIA 显卡,并安装 CUDA 12 对应的 cuBLAS 和 cuDNN 9。
获取 NVIDIA 运行库的几种方式:
- 使用官方 NVIDIA CUDA Docker 镜像(如
nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04),cuBLAS 与 cuDNN 已内置,仓库的 docker/ 目录提供了配套的 Dockerfile 和最小推理示例; - Linux 下可直接
pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*,并在启动 Python 前把两者所在目录加入LD_LIBRARY_PATH; - 按 NVIDIA 官方文档手动安装对应版本。
版本匹配是 GPU 部署中最常见的失败点:新版ctranslate2只支持 CUDA 12 + cuDNN 9。如果你的环境是 CUDA 11 / cuDNN 8,需要把ctranslate2降到 3.24.0;若是 CUDA 12 + cuDNN 8,则用 4.4.0:
pip install --force-reinstall ctranslate2==3.24.0模型与计算类型选择
按“速度需求 vs 精度需求”选模型:
- tiny / small:低延迟、高并发,或硬件条件有限时使用;
- medium:通用场景;
- large-v3:对识别精度要求最高时使用;
- distil-large-v3:蒸馏模型,英文任务上速度更快,建议同时传
language="en"并设置condition_on_previous_text=False。
compute_type决定精度与资源占用,三种常用组合:
# GPU + FP16(速度优先) WhisperModel("large-v3", device="cuda", compute_type="float16") # GPU + INT8(显存减半左右) WhisperModel("large-v3", device="cuda", compute_type="int8_float16") # CPU + INT8 WhisperModel("small", device="cpu", compute_type="int8")音频较长时可用批量推理管线,BatchedInferencePipeline.transcribe与WhisperModel.transcribe的参数用法一致,且默认开启 VAD 过滤:
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") pipeline = BatchedInferencePipeline(model=model) segments, info = pipeline.transcribe("audio.mp3", batch_size=16)性能参考
官方基准测的是 13 分钟音频的转写耗时与内存:
GPU(large-v2,RTX 3070 Ti,CUDA 12.4):
| 方案 | 耗时 | 显存 |
|---|---|---|
| openai/whisper(fp16) | 2m23s | 4708MB |
| faster-whisper(fp16) | 1m03s | 4525MB |
| faster-whisper(int8) | 59s | 2926MB |
| faster-whisper(int8,batch_size=8) | 16s | 4500MB |
CPU(small,i7-12700K,8 线程):
| 方案 | 耗时 | 内存 |
|---|---|---|
| faster-whisper(fp32) | 2m37s | 2257MB |
| faster-whisper(int8) | 1m42s | 1477MB |
| faster-whisper(int8,batch_size=8) | 51s | 3608MB |
原始测量脚本在 benchmark/ 目录,可用自己的硬件复测。对比不同实现时注意两点:本库默认beam_size=5,而 openai/whisper 默认是 1,条件不同速度不可直接比;CPU 上建议用OMP_NUM_THREADS固定线程数再测。
常见报错与排查
加载模型报 CUDA / cuDNN 库缺失:优先核对驱动、cuBLAS、cuDNN 三者的版本组合是否满足 ctranslate2 要求,必要时按上文降级
ctranslate2。GPU 显存不足(OOM):改用
int8_float16量化、换更小的模型,或调低batch_size。transcribe 调用后长时间无输出:生成器尚未被迭代,转写没有启动;用
list(segments)或 for 循环触发执行。结果里混入静音或幻觉文本:VAD 默认开启(默认只过滤超过 2 秒的静音),可通过
vad_parameters调整灵敏度:segments, _ = model.transcribe( "audio.mp3", vad_parameters=dict(min_silence_duration_ms=500), )准确率不理想:升级更大的模型;已知语种时显式传
language跳过自动检测;distil 模型记得关闭condition_on_previous_text。CPU 上转写偏慢:确认
compute_type为int8,并把OMP_NUM_THREADS设为物理核心数。
下一步可以做什么
- 转写自己微调过的模型:安装
transformers[torch]>=4.23后用ct2-transformers-converter命令把 OpenAI 格式(含微调权重)的模型转成 CTranslate2 格式,再直接把本地目录传给WhisperModel加载。 - 容器化部署:以 docker/ 里的 Dockerfile 为基础镜像,把
infer.py换成你的业务逻辑,即可得到可发布的转写服务。 - 调整更多参数:
transcribe的完整参数(temperature、initial_prompt、hotwords、VAD 选项等)见 faster_whisper/transcribe.py,VAD 各阈值默认值见 faster_whisper/vad.py。 - 实时流式转写:本库本身是离线批处理,若需要接近实时的效果,可关注基于 faster-whisper 构建的流式方案(如 Whisper-Streaming、WhisperLive 等开源项目)。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考