faster-whisper 安装使用完全指南:如何把 Whisper 语音识别提速 4 倍
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是基于 CTranslate2 推理引擎重写的 OpenAI Whisper 语音转文字工具,官方测试显示它比原版快最高 4 倍,内存占用更低,识别精度不变。如果你正被"转写一条 30 分钟录音要等半天"的问题拖慢工作,这篇文章会带你从零跑通它。
一行命令安装 faster-whisper:环境要求与首次运行
先确认两件事:
- Python 3.9 及以上(这是硬性要求)
- 有 NVIDIA 显卡更好;没有也没关系,CPU 完全可用,只是慢一些
和 openai-whisper 不同,faster-whisper不需要你单独安装 FFmpeg。音频解码由 PyAV 库完成,FFmpeg 相关组件已随包内置,省掉了一类最常见的安装报错。
pip install faster-whisper装好后,第一次运行只需要几行代码:
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5) print("识别到的语言:", info.language) for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")一个新手容易踩的坑:
transcribe()返回的segments是生成器,调用瞬间并不会开始转写,只有你真正遍历它时计算才会启动。想拿到完整结果,写segments = list(segments)即可。
模型权重在首次加载时按model_size自动下载,你不需要手动准备任何文件。
faster-whisper 能做什么:除转写之外的四个核心能力
- 自动语言检测:不指定语言时,模型会自己判断,并通过
info.language_probability给出置信度,支持近百种语言。 - 词级时间戳:每个词都带起止时间,做字幕、剪辑卡点时非常有用。
- 静音过滤(VAD):内置 Silero VAD 声源检测模型,自动跳过纯静音片段,长音频省时间更明显。相关实现在 faster_whisper/vad.py,检测权重在 faster_whisper/assets/silero_vad_v6.onnx。
- 批量推理:
BatchedInferencePipeline可以并发处理多条音频,GPU 利用率更高,官方基准里 13 分钟音频从 59 秒压到 16 秒。
实战:词级时间戳 + 静音过滤的组合用法
最常用的进阶写法,把时间戳和 VAD 一起打开:
segments, _ = model.transcribe( "audio.mp3", word_timestamps=True, # 输出每个词的时间 vad_filter=True, # 自动跳过静音段 vad_parameters=dict(min_silence_duration_ms=500), # 静音超过 500ms 才切掉 ) for seg in segments: for w in seg.words: print(f"{w.start:.2f}s -> {w.end:.2f}s {w.word}")多文件批量处理时,换成批量管线即可:
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)更多可配置项(温度、beam、上下文提示等)都集中在 faster_whisper/transcribe.py 的WhisperModel类里,遇到识别不准的问题先翻这个文件。
调优指南:模型大小与计算类型怎么选
模型大小:精度换速度的档位
| 模型 | 定位 | 适合场景 |
|---|---|---|
tiny/base | 最快 | 实时场景、快速草稿 |
small/medium | 均衡 | 日常会议、普通内容 |
large-v3 | 精度最高 | 专业交付、低容忍度场景 |
distil-large-v3 | 蒸馏版,接近 large 精度、更快 | 英文为主的长音频 |
turbo | 面向批量推理优化 | 大批量转写 |
计算类型:按硬件对号入座
| 硬件 | compute_type | 说明 |
|---|---|---|
| NVIDIA GPU(显存充足) | float16 | 速度最快,首选 |
| NVIDIA GPU(显存紧张) | int8_float16 | 显存近乎减半,精度损失很小 |
| CPU | int8 | 速度、内存平衡点 |
| CPU(追求极限精度) | float32 | 慢,一般不推荐 |
其他关键参数
beam_size:默认 5。调大更稳但更慢,调小更快但易出错。batch_size:仅在BatchedInferencePipeline中生效,显存够就调大。- CPU 线程数:用
OMP_NUM_THREADS环境变量控制,例如OMP_NUM_THREADS=4 python3 my_script.py,避免框架偷跑满线程拖慢整体。 initial_prompt:给一句带专业术语的文本作为上下文,能显著改善特定领域识别。
官方基准数据(13 分钟音频,large-v2,RTX 3070 Ti)
| 方案 | 耗时 | 显存 |
|---|---|---|
| openai/whisper (fp16) | 2m23s | 4708MB |
| faster-whisper (fp16) | 1m03s | 4525MB |
| faster-whisper (int8) | 59s | 2926MB |
| faster-whisper (int8, batch_size=8) | 16s | 4500MB |
想自己复现,可以直接跑 benchmark/speed_benchmark.py;GPU 环境还可以参考 docker/ 下的 Dockerfile 与 docker/infer.py 做端到端演示。
常见问题:3 个高频报错与解法
1. 启动报 cuDNN / CUDA 缺失或版本不符
新版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;Docker 用户直接用官方 CUDA 基础镜像更省事。
2. 显存不足(OOM)
按顺序尝试:换成int8_float16→ 换更小的模型 → 调小batch_size。这三步基本能解决绝大多数 OOM。
3. CPU 上速度慢
确认OMP_NUM_THREADS设置合理,并且优先用int8而不是float32;音频长时开启vad_filter能直接砍掉无效计算。
典型应用场景
- 会议纪要自动化:录音转文字后交给 LLM 总结,多说话人场景可结合社区的分角色工具链。
- 视频字幕生产:词级时间戳直接对接 SRT 导出,做双语字幕也很顺手。
- 播客/课程索引:长音频全文转录,建立可搜索的文字副本,方便按关键词定位片段。
- 语音备忘归档:手机语音条批量转写入库,配合
initial_prompt提升专业术语准确率。
下一步:从一条命令开始
现在就可以动手了:
- 先装:
pip install faster-whisper; - 用
tiny模型 + CPU 跑一段短音频,把流程走通; - 确认硬件后,再切到
large-v3和float16,对比同一份音频的效果与耗时。
如果本地代码不完整,可以从 https://link.gitcode.com/i/06cbdc50617364f4ddd365931aec85a8 克隆仓库,里面 tests/ 目录下就有现成的测试音频和用例可以直接对照运行。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考