faster-whisper 快速上手指南:Whisper 语音转文字,速度最高提升 4 倍
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是基于 CTranslate2 重构的 Whisper 语音转文字引擎,准确率与 openai/whisper 保持一致,速度最高提升 4 倍且占用更少内存。本文带你完成安装、跑通第一次转录、掌握核心功能,并给出常见坑的解决办法。
🚀 快速上手
一条命令安装
pip install faster-whisper环境要求 Python 3.9 及以上。与 openai-whisper 不同,你不需要在系统里安装 FFmpeg,音频解码由 PyAV 库自带完成。
跑通第一次转录
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") # GPU + FP16 segments, info = model.transcribe("audio.mp3", beam_size=5) print(info.language, info.language_probability) # 自动检测的语言及置信度 for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")没有 NVIDIA 显卡时,可改用 CPU 方式加载:WhisperModel("small", device="cpu", compute_type="int8")。
有一个必须知道的行为:segments是生成器,transcribe()返回时并未开始推理,迭代它时转录才真正执行。需要立刻跑完就把它转成列表:
segments, _ = model.transcribe("audio.mp3") segments = list(segments) # 转录在这里实际运行💡 核心功能讲解
批量转录:长音频提速
BatchedInferencePipeline是WhisperModel.transcribe的即插即替接口,把音频分块批量推理,VAD 过滤默认开启。官方基准中,13 分钟音频在 GPU 上从 1 分 03 秒(fp16 单条)缩短到 17 秒(batch_size=8)。
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)词级时间戳:直接做字幕
开启word_timestamps=True后,每个Segment会附带words列表,每个词都带起止时间和置信度,适合字幕制作、逐词高亮等场景。
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}")VAD 静音过滤:跳过无语音片段
内置 Silero VAD 模型会先筛掉没有语音的片段再送进模型,长音频里的大段静音、音乐不再浪费算力。默认策略偏保守:只剔除超过 2 秒的静音,可通过vad_parameters字典自定义阈值。
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), # 静音超过 500ms 即切分 )注意:VAD 过滤依赖onnxruntime包,缺失时开启该功能会直接报错(见后文常见问题)。
📊 配置与选型
模型怎么选
WhisperModel第一个参数支持模型尺寸名(自动从 Hugging Face Hub 下载 CTranslate2 模型)、本地转换后的模型目录或 Hub 模型 ID。可选尺寸包括 tiny / base / small / medium / large-v1 ~ v3 系列、turbo(large-v3-turbo)、distil-large-v3 等,另有.en单语言版本。
| 模型 | 定位 | 说明 |
|---|---|---|
| tiny / base | 极速档 | 延迟敏感场景,精度有限 |
| small | 平衡档 | 日常使用的稳妥起点 |
| medium | 高质量 | 速度明显变慢 |
| large-v3 | 精度最高 | 官方示例默认选择 |
| turbo | 快速变体 | large-v3 加速版,配合批量模式效果明显 |
| distil-large-v3 | 蒸馏模型 | 需显式指定language="en"并关闭condition_on_previous_text |
设备与计算类型怎么选
| 场景 | device | compute_type |
|---|---|---|
| GPU 显存充裕 | cuda | float16(默认推荐) |
| GPU 显存紧张 | cuda | int8_float16 |
| 无 GPU | cpu | int8 |
官方在 NVIDIA RTX 3070 Ti 8GB(CUDA 12.4)上测得:large-v2 模型转录 13 分钟音频,fp16 用时 1 分 03 秒、显存 4525MB;int8 量化后显存降至 2926MB;batch_size=8时 17 秒完成。
几个容易忽略的参数:
beam_size:本项目默认 5,openai/whisper 默认 1,跨实现比较速度时务必对齐cpu_threads:CPU 推理线程数,默认 4hotwords:为特定词汇做偏置,见 faster_whisper/transcribe.py
❓ 常见问题
转录一直没输出、感觉"没开始"
- 现象:调用
transcribe()后程序长时间无输出 - 原因:
segments是生成器,不迭代就不推理 - 解决:用
list(segments)或for循环消费结果,确认进度可加 tqdm 日志
GPU 报错:CUDA / cuDNN 版本不兼容
- 现象:加载 CUDA 模型时提示 cuBLAS/cuDNN 缺失或版本错误
- 原因:新版 ctranslate2 只支持 CUDA 12 + cuDNN 9
- 解决:CUDA 11 + cuDNN 8 环境执行
pip install ctranslate2==3.24.0;CUDA 12 + cuDNN 8 执行pip install ctranslate2==4.4.0。Linux 上也可pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*并设置LD_LIBRARY_PATH
开启 VAD 报错 "requires the onnxruntime package"
- 现象:
vad_filter=True时抛出 RuntimeError - 原因:Silero VAD 模型用 ONNX Runtime 在 CPU 上运行
- 解决:
pip install onnxruntime
GPU 显存不足(OOM)
- 现象:大模型加载或转录时显存溢出
- 原因:模型体积或批大小超出显存上限
- 解决:改用
compute_type="int8_float16"(基准中 large-v2 显存从 4525MB 降到 2926MB),或换更小模型、调小batch_size
CPU 转录偏慢
- 现象:CPU 模式耗时远超预期
- 原因:线程数未对齐,或使用了 FP32
- 解决:启动脚本时设置
OMP_NUM_THREADS(如OMP_NUM_THREADS=4 python3 my_script.py),或使用int8计算类型(基准中 small 模型 CPU 从 2 分 37 秒降到 1 分 42 秒)
🔭 进阶方向
- 转换自定义微调的 Whisper 模型为 CTranslate2 格式,见 README.md 的 Model conversion 一节
- 更多转录参数(hotwords、clip_timestamps 等)见 faster_whisper/transcribe.py
- VAD 全部参数与默认值见 faster_whisper/vad.py
- 速度 / 内存基准脚本位于 benchmark/
小结
faster-whisper 的定位很明确:用 CTranslate2 重跑 Whisper,更快、更省内存,且无需系统安装 FFmpeg。上手路径就是「pip 安装 → 三行代码转录 → 按硬件选模型与量化」。遇到输出不产生、CUDA 版本报错、显存不足这三类问题,基本都能按上文对应解决。
- 完整文档与基准数据:README.md
- 转录参数与模型加载实现:faster_whisper/transcribe.py
- 性能基准脚本:benchmark/
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考