faster-whisper 语音转文字 4 倍速完全指南:13 分钟音频 1 分钟出结果
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
13 分钟的会议录音,原版 Whisper 转一遍要 2 分多钟?faster-whisper 是 OpenAI Whisper 的加速语音转文字实现,精度不变,速度最高提升 4 倍,内存还更省。
🧠 原理一句话:模型没变,换的是引擎
faster-whisper 不是重写模型,而是换了推理引擎:加载同一份 Whisper 权重,用 CTranslate2 这个 Transformer 推理引擎来跑——同一辆车,换了台更快更省油的发动机。
13 分钟音频、large-v2 模型在 GPU 上的官方基准:
| 实现方式 | 精度 | 耗时 | 显存 |
|---|---|---|---|
| openai/whisper | fp16 | 2分23秒 | 4708MB |
| faster-whisper | fp16 | 1分03秒 | 4525MB |
| faster-whisper(批量 8) | fp16 | 17秒 | 6090MB |
| faster-whisper | int8 | 59秒 | 2926MB |
这意味着:精度不动,速度提升约 2.5 倍;再上 int8 量化,显存直接砍半;批量推理还能把 13 分钟压到 17 秒。
⚡ faster-whisper 上手:三步跑通
环境与依赖
- Python 3.9 及以上
- 不用单独装 FFmpeg,PyAV 库已打包好解码组件
- GPU(可选):CUDA 12 对应的 cuBLAS 和 cuDNN 9
- CUDA 11 用户:降级
ctranslate2==3.24.0
一条命令安装
装包只需要一行:
pip install faster-whisper首次加载模型时会自动从 Hugging Face Hub 下载对应权重,网络要通。
最小可运行示例
下面这段代码加载模型、转写音频,并把带时间戳的逐段结果打出来:
from faster_whisper import WhisperModel # 加载模型:GPU + FP16(无卡可改 device="cpu", compute_type="int8") model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5) print(f"检测到语言: {info.language} (概率 {info.language_probability:.2f})") for segment in segments: # 每个片段自带起止时间戳和对应文本 print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")注意:segments是生成器,不迭代就不会真正开始转写。想立即跑完就segments = list(segments)。
进阶:单词级时间戳
下面的代码把结果细化到每个单词,输出每个词的开始和结束时间:
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_filter=True就能自动跳过静音段,更省时。
🎛 调优与避坑:实操清单
模型越大越准?不一定,怎么选看场景:
模型选择:如果你……就选……
- 如果你要最高精度且多语言,选
large-v3 - 如果你想省一半时间,选
turbo或distil-large-v3 - 如果你只有 CPU,选
small或base,配int8省内存 - 如果你对延迟敏感,选
tiny
性能加速要点
- 用 int8 量化(
compute_type="int8"):内存大降,精度几乎不掉 - GPU 上换
BatchedInferencePipeline批量推理:13 分钟音频从 1 分钟干到 17 秒 - 调低
beam_size(默认 5):越小越快,精度略降 - CPU 场景设置
OMP_NUM_THREADS:固定线程数,性能稳定可复现
三个常见坑
⚠️现象:transcribe返回了,却什么都没打印。 原因:segments是生成器,转写还没真正开始。 解法:迭代它,或先list(segments)。
⚠️现象:GPU 加载报找不到 cuBLAS / cuDNN。 原因:最新版 ctranslate2 只支持 CUDA 12 + cuDNN 9。 解法:装对应 NVIDIA 库;CUDA 11 就降级ctranslate2==3.24.0。
⚠️现象:实测速度跟官方基准对不上。 原因:beam_size、线程数等设置不一致。 解法:先固定beam_size和OMP_NUM_THREADS再对比。
🗺 源码地图:5 个核心文件
- faster_whisper/transcribe.py — 主转写逻辑:模型加载、分段转写、单词时间戳
- faster_whisper/audio.py — 音频解码并重采样为 16kHz 单声道
- faster_whisper/feature_extractor.py — 波形转 log-mel 频谱特征
- faster_whisper/tokenizer.py — 多语言分词与时间戳 token 处理
- faster_whisper/vad.py — 语音活动检测,过滤无语音片段
🔗 上下游生态
- WhisperX — 在它之上加说话人分离和更精准的词级时间戳
- speaches — OpenAI 兼容的 API 服务器,支持流式转写
- whisper-diarize — 基于它和 NVIDIA NeMo 的说话人分离工具
- WhisperLive — 准实时转写,以它为后端
- whisper-standalone-win — 免装环境的独立 CLI 工具包
📦 谁该用这个
做会议转写、视频字幕、长音频批处理的人,直接用;要真流式实时场景的,去看基于它做的 Whisper-Streaming 这类项目。拿到源码就能开始:
git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考