faster-whisper:基于 CTranslate2 的高速 Whisper 语音识别实现
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是用 CTranslate2 重写的 OpenAI Whisper 推理引擎,做的是 faster-whisper 语音识别:同精度下比原实现至多快 4 倍、内存占用更低,适合会议转写、字幕生成这类长音频任务。
faster-whisper 是什么
一句话:它是 Whisper 的 CTranslate2 重实现,接口和原项目对齐,速度更快、更省内存,8-bit 量化可在 CPU 与 GPU 上进一步降开销。
和 openai/whisper 相比需要注意的差别:
- 依赖 ctranslate2 推理引擎,GPU 跑分要求 CUDA 12 + cuDNN 9,旧环境要锁版本
- 系统无需装 FFmpeg,解码由内置的 PyAV 完成
transcribe默认beam_size为 5,原实现默认是 1,横向对比时要对齐口径
三步跑通 first transcription
- 环境要求:Python 3.9 及以上;用 NVIDIA GPU 需装 cuBLAS 与 cuDNN(CUDA 12)。
- 安装:
pip install faster-whisper,依赖(含 PyAV)随包解析。 - 第一次成功:加载模型并转录一段音频,逐条打印分段:
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("clip.mp3", beam_size=5) for seg in segments: print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")注意:segments是生成器,只有开始遍历(或先list())时转录才真正执行。
按硬件选配置
以下组合均出自项目 README 的基准测试:GPU 侧为 13 分钟音频、RTX 3070 Ti(large-v2,beam size 5);CPU 侧为 small 模型、i7-12700K 8 线程。
| 硬件 | 模型 | 精度 / 参数 | 实测表现 | 适合场景 |
|---|---|---|---|---|
| NVIDIA GPU | large-v2 | fp16,beam_size=5 | 1m03s / 4525MB | 精度优先的日常转写 |
| NVIDIA GPU | large-v2 | batch_size=8, fp16 | 17s / 6090MB | 显存充足时批量处理 |
| NVIDIA GPU | large-v2 | int8,beam_size=5 | 59s / 2926MB | 显存紧张(<3GB) |
| Intel CPU | small | fp32 | 2m37s / 2257MB | 无 GPU 的基线运行 |
| Intel CPU | small | int8,batch_size=8 | 51s / 3608MB | 内存够用、求最快 |
说明:batch_size>1需要显存/内存翻倍余量;CPU 线程数可用环境变量OMP_NUM_THREADS固定后再对比。
值得调的参数
beam_size:精度与速度的权衡
默认 5。减小可提速,增大会更准但更慢;和原实现对比时务必用同一个值。
segments, _ = model.transcribe("clip.mp3", beam_size=1)word_timestamps:词级时间戳
需要逐词定位(做歌词对齐、逐词高亮)时打开:
segments, _ = model.transcribe("clip.mp3", word_timestamps=True) for seg in segments: for w in seg.words: print(w.start, w.end, w.word)vad_filter:跳过无声片段
内置 Silero VAD 会先滤掉无声段,减少空段幻觉、也省算力;默认只删 2 秒以上静音,可用vad_parameters收紧:
segments, _ = model.transcribe( "clip.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )核心文件导读
- faster_whisper/transcribe.py:
WhisperModel、BatchedInferencePipeline与主转录循环,语言检测、词级对齐都在这里 - faster_whisper/audio.py:基于 PyAV 把任意格式音频解成 16 kHz 波形,替代系统 FFmpeg
- faster_whisper/feature_extractor.py:波形转 log-Mel 频谱,产出模型输入特征
- faster_whisper/vad.py:Silero VAD 集成,负责切分语音段与无声段
卡住时看这里
GPU 报缺 cuBLAS / cuDNN 库?官方版本仅支持 CUDA 12 + cuDNN 9。CUDA 11 环境把 ctranslate2 锁到 3.24.0,CUDA 12 + cuDNN 8 锁到 4.4.0 即可。
代码"跑完"却没任何输出?transcribe()返回生成器,惰性执行;加一行segments = list(segments)或用for遍历才会真正转录。
CPU 上内存大、速度慢?改用compute_type="int8",并固定OMP_NUM_THREADS控制线程数后再做性能对比。
以上配置均来自仓库自带的基准与说明,参数在 faster_whisper/transcribe.py 中可继续查阅。先从"按硬件选配置"表格里的一行起步,再把不满意的输出逐项对应到参数里改。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考