4倍速的语音转文字:faster-whisper 上手教程
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
13 分钟会议录音,原版 Whisper 在 GPU 上要 2 分 23 秒,faster-whisper 是 1 分 03 秒,开启 int8 量化后只要 59 秒。faster-whisper 是基于 CTranslate2 引擎重新实现的 OpenAI Whisper,核心功能就一件事:把语音转文字做得更快、占内存更少。
一、它凭什么值得关注(能力速览)
速度优势最直观。官方在 RTX 3070 Ti 上用 large-v2 模型测了 13 分钟音频:原版 Whisper 2 分 23 秒,faster-whisper(float16)1 分 03 秒,int8 量化 59 秒,准确率相同。
内存省掉近一半。int8 量化有点像图片改存 JPEG:肉眼看不出差别,体积却小得多。GPU 上显存从 4708MB 降到 2926MB,CPU 上 small 模型 int8 只要 1477MB。
接入门槛低。不用装 FFmpeg,PyAV 库自带解码依赖,一条 pip 命令装完。
二、从零到跑通:最短路经
前置条件只有 Python 3.9+,不需要单独安装 FFmpeg,必须执行的只有安装这一步:
pip install faster-whisper第一次运行时模型会自动下载并缓存,之后离线也能跑。先用 CPU + small 模型 + int8 把链路跑通,这是 CPU 上最省内存的组合:
from faster_whisper import WhisperModel # int8:内存减半且精度损失很小,CPU 首选 model = WhisperModel("small", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3", beam_size=5) for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")有一个细节:segments是生成器,真正开始转录是在你迭代它的那一刻。想提前跑完,就list(segments)包一层。
三、实战:一次完整调用
有 GPU 的话,先装 faster-whisper GPU 加速需要的两个 NVIDIA 依赖(要求 CUDA 12 + cuDNN 9,Linux 上运行前还需设置LD_LIBRARY_PATH指向库):
pip install nvidia-cublas-cu12 "nvidia-cudnn-cu12==9.*"再发起调用:
from faster_whisper import WhisperModel # float16 是 GPU 默认精度,显存紧张时换 int8_float16 model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5) print(info.language, info.language_probability) for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")跑起来后第一行是检测到的语言与置信度(不传language时会用音频前 30 秒自动判断);之后每行一个段落,start/end是秒级时间范围,text就是转录结果。
device与compute_type的组合速查:
| 运行环境 | device | compute_type | 定位 |
|---|---|---|---|
| GPU | cuda | float16 | 全精度,速度最佳 |
| 显存吃紧的 GPU | cuda | int8_float16 | 混合精度,省显存 |
| CPU | cpu | int8 | 内存占用低 |
四、进阶:解锁更多能力
词级时间戳
场景:做字幕、文字和视频逐字对齐,段落级时间不够细。怎么开:给transcribe加word_timestamps=True,然后遍历segment.words就能拿到每个词的开始与结束时间。注意:该特性默认关闭,只在需要精确到词时开,避免多一层遍历。
VAD 静音过滤
场景:访谈、会议这类长录音里静默很多,转录会浪费在无声段上。怎么开:这个能力默认就是打开的,且默认保守,只去掉超过 2 秒的静音;想过滤更激进,传vad_parameters=dict(min_silence_duration_ms=500)。注意:阈值调得越低越容易切断句间停顿,全部参数可看 vad.py。
批量推理
场景:一次要处理多条长音频,单文件转录时 GPU 利用率吃不满。怎么开:用BatchedInferencePipeline(model=model)包一层,转录时传batch_size=16之类的值。注意:官方基准里同一段 13 分钟音频,GPU 上单文件 1 分 03 秒,batch_size=8 时 17 秒;批量模式下 VAD 默认开启。
五、选型与调优决策
如果你只有 CPU:直接选 int8 量化,small 模型 13 分钟音频 1 分 42 秒,而原版 Whisper fp32 要 6 分 58 秒,内存分别是 1477MB 对 2335MB。
如果你有一块 8GB 级的主流 GPU:先用 float16,显存不够再切 int8_float16,以 large-v2 为例显存从 4525MB 降到 2926MB,精度代价很小。
如果你要的是最高准确率:选 large-v3;纯英文内容可以试 distil-large-v3,官方基准里比 transformers 实现快约 44%(46 分 12 秒对 25 分 50 秒),词错率还更低。
语音转文字的瓶颈往往在推理引擎而不是模型,换掉引擎,同样的 13 分钟录音就能从 2 分 23 秒压到 59 秒。下一步建议找一段真实录音,先用 small + int8 跑通,感觉速度够用之前,不必急着上 large-v3 或批量推理。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考