faster-whisper:一条命令把一小时音频转成文字,比原版 Whisper 快 4 倍
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
一小时的会议录音,手动整理要半天;用原版开源 Whisper 转,老笔记本上还得再等一个多小时。faster-whisper(语音转文字)把 OpenAI 的 Whisper 模型用 CTranslate2 推理引擎重写,官方基准里 13 分钟音频最快 59 秒跑完,比原实现最多快 4 倍,显存占用还更低。不需要额外装 FFmpeg,一条 pip 命令装完就能用。
它凭什么快这么多:CTranslate2 的加速原理
Whisper 本身是一个 Transformer 架构的模型(可以理解为"用神经网络预测下一秒该输出什么词"),瓶颈在于推理引擎的算力和内存调度。faster-whisper 不改模型参数,只把推理层换成 CTranslate2(OpenNMT 团队维护的 Transformer 专用推理引擎),它针对注意力计算和内存布局做了底层优化。在此基础上还能开启 8-bit 量化(int8,把权重从 16 位压到 8 位,精度损失很小),让 CPU 和 GPU 上再快一截、内存占用直接砍半。
faster-whisper 安装方法:一条命令 + 硬件要求
环境门槛很低:
- Python 3.9 及以上
- 无需手动安装 FFmpeg——音频解码由 PyAV 库(自带 FFmpeg 运行库的 Python 包)完成,装好即用
- 普通 CPU 即可跑,有 NVIDIA 显卡更快
安装只需一条命令:
pip install faster-whisper想用 GPU 加速,补装两个 NVIDIA 库即可:pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*。注意最新的 ctranslate2 只支持 CUDA 12 + cuDNN 9;如果你的环境是 CUDA 11/cuDNN 8,需要降级到ctranslate2==3.24.0,CUDA 12 + cuDNN 8 则用ctranslate2==4.4.0。
5 行代码跑通:转写第一段音频
from faster_whisper import WhisperModel model = WhisperModel("base", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3") for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")运行后每段话会带上起止时间戳和文本,自动检测语言。注意segments是生成器,真正开始转写是在 for 循环遍历时;有 GPU 的话把device改成"cuda"、compute_type换成"float16"或"int8_float16"即可。
实际能干什么:三个高频场景
- 视频字幕:转录时打开
word_timestamps=True拿到词级时间戳,逐词对齐后导出 SRT 字幕文件,做字幕比手工打轴快得多。 - 会议记录:长录音先过一遍内置的 Silero VAD(静音检测模型,自动剪掉没有声音的片段,
vad_filter=True开启),减少无效计算,产出的分段文本可直接交给摘要工具。 - 内容创作与播客:一次转写多段长音频,配合
BatchedInferencePipeline批量推理(batch_size=8时官方数据里 13 分钟音频只要 17 秒),把视频素材批量转成文稿做选题、二创或检索。
核心转录逻辑都在 transcribe.py 里,想调参数可以直接看WhisperModel.transcribe的完整选项。
性能参考:faster-whisper 与原方案的实测对比
以下数据来自仓库 README 的官方基准(13 分钟音频,8 线程 CPU / RTX 3070 Ti 8GB GPU),不是营销话术:
GPU 上跑 large-v2 模型:
| 实现 | 精度 | 耗时 | 显存 |
|---|---|---|---|
| openai/whisper | fp16 | 2m23s | 4708MB |
| faster-whisper | fp16 | 1m03s | 4525MB |
| faster-whisper(batch_size=8) | fp16 | 17s | 6090MB |
| faster-whisper | int8 | 59s | 2926MB |
CPU 上跑 small 模型(Intel i7-12700K):
| 实现 | 精度 | 耗时 | 内存 |
|---|---|---|---|
| openai/whisper | fp32 | 6m58s | 2335MB |
| faster-whisper | int8 | 1m42s | 1477MB |
| faster-whisper(batch_size=8) | int8 | 51s | 3608MB |
简单结论:显存紧张或没有 GPU 时,优先选 int8 量化,内存和速度两头都赚;批量处理长音频再考虑batch_size。
常见问题 FAQ:版本不匹配、显存不足、识别不准
问:GPU 报 cuDNN/cuBLAS 找不到或版本不兼容,怎么办? 答:确认你的 CUDA 和 cuDNN 版本:最新 ctranslate2 只认 CUDA 12 + cuDNN 9。CUDA 11 环境用pip install --force-reinstall ctranslate2==3.24.0降级;CUDA 12 但 cuDNN 8 则降到 4.4.0。也可以直接用官方 CUDA Docker 镜像(nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04)避开手动装库的坑。
问:显存不够、报 OOM 怎么办? 答:先换低精度:compute_type="int8_float16",large-v2 的显存占用能从约 4.5GB 降到约 2.9GB;再不行就换更小的模型(small/base)或减小batch_size。8GB 显存的卡跑 large-v2 开批量推理时占用约 6GB,建议留点余量。
问:转出来有重复、漏字、专有名词错,怎么改? 答:几个开关值得试:vad_filter=True过滤静音段,能减少模型"脑补";明确的语种别让它猜,直接传language="zh"等参数;对人名、术语多的内容用hotwords传入提示词;想核对每个字的时间点可开word_timestamps=True。
如果你手头有大量音频要批量转文字,或者受限于 CPU 和有限显存,faster-whisper 值得直接作为首选方案;只偶尔转一段短视频,原版工具也够用。想参与开发可以查看 CONTRIBUTING.md,项目采用 MIT 许可证(见 LICENSE),商用免费。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考