faster-whisper 语音转文字:4倍速入门实战
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是一个基于 CTranslate2 推理引擎重写的 Whisper 语音转文字工具。它在与原版 openai/whisper 保持相同准确率的前提下,速度最快提升 4 倍,并且占用更少的内存,让普通 CPU 也能在可接受的时间内完成较长录音的转写。
一分钟认识 faster-whisper
读完这一节,你会知道 faster-whisper 和原版 Whisper 的关系,以及它的核心性能指标。
它是 OpenAI Whisper 模型用 CTranslate2 推理引擎做的重新实现,也就是说模型能力与原版一致,换的只是"跑得动的引擎"。除速度外,它支持 8-bit 量化,在 CPU 和 GPU 上都能进一步省内存。
| 指标 | 说明 |
|---|---|
| 定位 | OpenAI Whisper 的 CTranslate2 重实现,模型兼容 |
| 速度 | 同等准确率下,比 openai/whisper 最快快 4 倍 |
| 内存 | 13 分钟音频、large-v2 模型、GPU 上:int8 量化仅 2926MB,原版 fp16 为 4708MB |
| CPU 表现 | 13 分钟音频、small 模型:int8 下 1m42s,原版 fp32 为 6m58s |
| 环境要求 | Python 3.9+,不需要单独安装 FFmpeg(PyAV 已打包 FFmpeg 库) |
🚀 先跑起来:faster-whisper 安装教程
读完这一节,你能在本地跑通第一段音频转写。
faster-whisper 通过 PyPI 发布,一条命令即可安装,要求 Python 3.9 或更高版本。和原版 whisper 不同,它不要求系统里装 FFmpeg,音频解码由 PyAV 库完成。
pip install faster-whisper下面是最小可运行示例,用 base 模型处理一段音频:
from faster_whisper import WhisperModel model = WhisperModel("base", device="auto", compute_type="default") segments, info = model.transcribe("audio.mp3") print(f"Detected language: {info.language} ({info.language_probability:.2f})") for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")device="auto"会自动选择可用的设备。运行后屏幕上先打印一行检测到的语言及置信度,随后逐段输出带起止时间的文本,形如[0.00s -> 2.34s] Hello everyone。注意首次运行会从 Hugging Face Hub 自动下载对应模型并缓存到本地,需要等待下载完成,之后再次运行就不会重复下载。
3个马上用得上的功能
读完这一节,你会拿到三个最常用的参数:词级时间戳、静音过滤和批量推理。
词级时间戳:让每个词都带起止时间,做字幕对齐、逐词分析时直接可用。
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):内置 Silero VAD,把没有人声的片段跳过,长音频里大量停顿不再浪费算力。默认行为比较保守,只过滤超过 2 秒的静音,可以通过vad_parameters调整,所有参数和默认值见 vad.py。
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )批量推理:BatchedInferencePipeline是WhisperModel.transcribe的替代品,传入batch_size后可显著加快长音频处理,README 基准中 large-v2 在 GPU 上处理 13 分钟音频可从 1m03s 降到 17s(batch_size=8)。
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") batched_model = BatchedInferencePipeline(model=model) segments, info = batched_model.transcribe("audio.mp3", batch_size=16)⚙️ 配置怎么选:模型与量化速查
读完这一节,你不用再纠结 model_size、device 和 compute_type 三个参数怎么填。
device支持cpu、cuda、auto(默认);compute_type默认是default,GPU 上推荐float16,CPU 或显存紧张时推荐int8。模型从 tiny 到 turbo 都有,完整列表见 transcribe.py 中WhisperModel的文档字符串。
| 使用场景 | 推荐配置 | 一句话理由 |
|---|---|---|
| 只有 CPU、日常转写 | base或small+compute_type="int8" | small 模型 int8 下 13 分钟音频 1m42s,内存约 1477MB |
| NVIDIA GPU、追求精度 | large-v3+compute_type="float16" | README 默认示例的组合,精度最高 |
| GPU 显存紧张 | large-v2或large-v3+int8 | large-v2 显存从 4525MB 降到 2926MB |
| 批量处理长音频 | BatchedInferencePipeline+batch_size=8 | GPU 上 13 分钟音频从 1m03s 降到 17s |
| 只转英文音频 | tiny.en、base.en、small.en等 | 官方模型列表中提供的英文专用变体 |
⚠️ 新手翻车记录:3个高频坑
读完这一节,你能对上号地避开新手最常踩的三个问题。
坑一:调用 transcribe 后屏幕上什么都没输出,像是卡住了。原因:segments是一个生成器,只有开始迭代时转写才真正启动。 解决:用for segment in segments:遍历,或先执行segments = list(segments)跑完全部转写。
坑二:首次运行非常慢,还伴随着下载进度条。原因:按尺寸(如WhisperModel("base"))加载时,模型会自动从 Hugging Face Hub 下载并缓存。 解决:属正常现象,等待首次下载完成即可,之后运行直接走本地缓存。
坑三:想用 GPU 加速,却报找不到 cuBLAS / cuDNN 的错。原因:GPU 运行需要单独安装 CUDA 12 的 cuBLAS 和 cuDNN 9,pip install faster-whisper不会替你装。 解决:按 NVIDIA 官方文档安装这两套库(或用带 cuDNN 的 CUDA Docker 镜像),环境没配好时先退回device="cpu"。
❓ 常见问题
读完这一节,你能确认几个新手最关心的问题:依赖、模型来源、语言、自定义模型。
Q1:需要单独安装 FFmpeg 吗?不需要。音频解码由 PyAV 库完成,FFmpeg 库已打包在 PyAV 里。
Q2:默认 beam size 是多少?faster-whisper 默认 beam size 为 5,而 openai/whisper 默认为 1,跨实现对比时要注意这一差异。
Q3:可以指定识别语言吗?可以,给transcribe()传language参数(如language="en");不传则自动检测语言并给出置信度。
Q4:GPU 上 float16 和 int8 怎么选?显存充足用float16;显存紧张用int8,large-v2 在 GPU 上显存可从 4525MB 降到 2926MB,耗时 59s。
Q5:自己微调过的 Whisper 模型能用吗?能。仓库提供ct2-transformers-converter转换脚本,把模型转成 CTranslate2 格式后,把本地目录路径传给WhisperModel即可加载。
更多模型和转写选项的说明,可以看 WhisperModel 源码;想复现性能数据,可以看 benchmark/ 目录下的基准脚本。
行动清单:现在就能做的3步
- 执行
pip install faster-whisper,确认 Python 版本为 3.9 或更高。 - 准备一段音频文件,运行上面"先跑起来"一节的最小示例,等待首次模型下载完成后查看带时间戳的输出。
- 对照"配置怎么选"的速查表,按你的硬件(CPU 或 NVIDIA GPU)确定 model_size 和 compute_type,再试一次词级时间戳和 VAD 过滤。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考