faster-whisper 离线语音转写快速上手
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
如果 40 分钟的会议录音跑十几分钟才出稿、内存几乎被打满,这就是你现在卡住的地方。faster-whisper 是基于 CTranslate2 重写 OpenAI Whisper 的语音转写推理实现,吃进音频就吐出带时间戳的逐字稿。同等精度下最高快 4 倍,int8 量化还能进一步省内存,适合想用 N 卡或纯 CPU 做离线转写、又不想单独装 FFmpeg 的开发者(PyAV 依赖把解码库打包好了)。
看懂与原版 openai-whisper 的差异
说白了,模型权重没换,换的是推理引擎:同一套 Whisper 模型放到 CTranslate2 上跑。看官方基准(RTX 3070 Ti,beam size 5):large-v2 转写 13 分钟音频,faster-whisper fp16 用时 1 分 03 秒、显存约 4.5GB,int8 59 秒、约 2.9GB,原版 openai/whisper 则要 2 分 23 秒。
核对 Python 版本与 GPU 环境
在终端跑这条命令做环境自检,要求 Python 3.9 及以上,不满足就先装新版再来。打算在 N 卡上跑的话,还要备好 CUDA 12 的 cuBLAS 与 cuDNN 9 运行库,缺失时的处理见「处理两个高频报错」一节。
python -V完成第一次转写
装主包
一条命令装好 faster-whisper,ctranslate2、tokenizers、onnxruntime 等依赖会自动带上。
pip install faster-whisper加载模型并跑转写
加载 base 档模型(首次试跑小且快),转写一段音频并打印带时间戳的句子。
from faster_whisper import WhisperModel # 有 N 卡用 cuda + float16;没有就改 device="cpu"、compute_type="int8" model = WhisperModel("base", device="cuda", compute_type="float16") segments, info = model.transcribe("meeting.mp3", beam_size=5, vad_filter=True) # vad 先剪静音 print(f"语言: {info.language},置信度 {info.language_probability:.2f}") for seg in segments: # 转写真正在这次遍历中执行 print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")vad_filter=True 让内置 Silero VAD 先剪掉长静音再送模型,省算力;beam_size 控制解码精度,值越大越准也越慢。
长音频切批量推理
分钟级以上的时长切到 BatchedInferencePipeline,把多个片段合并成批处理,基准里 13 分钟音频从 1 分 03 秒降到 17 秒左右。
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("large-v3", device="cuda", compute_type="float16") pipeline = BatchedInferencePipeline(model=model) segments, _ = pipeline.transcribe("meeting.mp3", batch_size=16) # 批量模式默认启用 VAD for seg in list(segments): print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")模型档位的选择:base、small 试跑够用,正式出稿再上 large-v3 或 turbo。
处理两个高频报错
遇到 CUDA 运行库加载失败时
先检查 CUDA 12 的 cuBLAS 与 cuDNN 9 是否装好、库目录是否在 LD_LIBRARY_PATH(Windows 是 PATH)里。Linux 上可直接pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*,把库目录加入环境变量后重启 Python。老环境的对应关系:CUDA 11 + cuDNN 8 回退 ctranslate2 3.24.0;CUDA 12 + cuDNN 8 回退 4.4.0。
遇到 transcribe 无文本输出时
先检查是否在遍历 segments:transcribe 返回的是生成器,转写真正开始运行是在遍历那一刻;把结果套一层list(segments)或 for 循环就能跑出文本。
挑 3 个方向继续深入
- 做词级时间戳:转写时加
word_timestamps=True,句子里的每个词都会带上起止时间(seg.words),适合做字幕或卡拉 OK,参数细节见 transcribe.py。 - 调 VAD 切分省算力:长音频说话占比低时,把
vad_parameters里的min_silence_duration_ms收紧到 500,静音切分更激进,默认值与含义见 vad.py。 - 转换自定义模型:README.md 的 Model conversion 一节给了
ct2-transformers-converter命令,把你微调的权重转成 CTranslate2 模型,之后按本地路径加载即可。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考