faster-whisper 快速上手教程:免费实现比原版快 4 倍的语音转文字
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 是一个用 CTranslate2 推理引擎重写的 OpenAI Whisper 语音转文字工具,同样的识别准确率下,速度最高可达原版的 4 倍,占用的内存反而更少。它是免费开源的,一条命令安装,几行 Python 代码就能把一段录音变成带时间戳的文字。
它能帮你做什么
你手里有一段 13 分钟的会议录音,想 1 分钟内拿到逐字稿?它能做。你正在剪辑视频,需要词级时间戳来对齐字幕?它能做。你攒了一堆语音备忘录,想批量转成可搜索的文字?它也能做。
按项目自带的基准测试,用 large-v2 模型在 GPU 上处理 13 分钟音频:原版 Whisper 要 2 分 23 秒,faster-whisper 只要 1 分 03 秒,开启 int8 量化后 59 秒出结果。
3 分钟完成 faster-whisper 安装
先确认环境:Python 3.9 及以上即可。不用装 FFmpeg,音频解码由 PyAV 库自带完成,比原版少一个麻烦。
安装只有一条命令:
pip install faster-whisper有 NVIDIA 显卡的话,还需要装 cuBLAS(CUDA 12)和 cuDNN 9 这两个库才能启用 GPU,具体说明见 README.md。没有显卡也完全没问题,CPU 模式一样能跑。
第一次运行:3 行代码转出文字
先跑通再说。下面这个例子选 base 模型 + CPU + int8,是新手最不容易出错的组合:
from faster_whisper import WhisperModel model = WhisperModel("base", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3") for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")它做了三件事:加载 base 模型(首次运行会自动下载并缓存)、转录audio.mp3并自动检测语言、按句子打印每段文字和起止时间。把模型名换成 "small"、"medium"、"large-v3" 就能在速度和精度之间取舍。
跟着做一遍:时间戳 + 静音过滤
字幕制作最有用的是词级时间戳,加一个word_timestamps=True参数就行:
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}")segment.words里每个词都带独立的 start/end,直接就能导出成 SRT 或逐字稿对齐文件。
第二个高频参数是静音过滤。长音频里大量静音段落其实不用送进模型,加vad_filter=True会自动跳过没有说话声的部分(底层是 Silero VAD,参数细节见 faster_whisper/vad.py):
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )默认规则偏保守,只剔除超过 2 秒的静音;min_silence_duration_ms=500表示超过半秒的静音就切掉,处理背景音乐多的音频时速度提升很明显。
让识别速度再翻倍的设置
模型和计算类型是速度、精度、内存三者的调节旋钮:
- 模型:tiny 最快、small 均衡、medium 偏质量、large-v3 精度最高,另有 turbo 和 distil-large-v3 可选(distil 模型记得传
language="en")。 - 计算类型:GPU 推荐
compute_type="float16";显存紧张换"int8_float16";纯 CPU 用"int8"。 - 批量推理:显存够的话,用
BatchedInferencePipeline加batch_size=16,同一份 13 分钟音频从 63 秒压到 17 秒,这是 README 实测数据。
int8 量化对速度的帮助同样可观:CPU 上 small 模型从 1 分 42 秒(int8)对比原版的 6 分 58 秒,快了一大截。所有参数都在 faster_whisper/transcribe.py 的transcribe方法里,可以逐个试。
常见问题与避坑
Q:调用了 transcribe 但打印不出来?segments是个生成器,转录只在遍历它时才开始执行。用for循环或list(segments)收一遍,文字才会真正产出。这是新手最常踩的坑。
Q:GPU 报 CUDA 相关错误?最新版 ctranslate2 只支持 CUDA 12 + cuDNN 9。如果是 CUDA 11 环境,降级pip install ctranslate2==3.24.0;CUDA 12 但 cuDNN 8 则用ctranslate2==4.4.0。
Q:需要单独装 FFmpeg 吗?不需要。PyAV 已经把 FFmpeg 库打进了 pip 包里,直接转 mp3、wav、m4a 都没问题。
Q:显存不够怎么办?先换int8_float16计算类型(large-v2 的显存占用从 4525MB 降到 2926MB),再不行就降级模型,或调小chunk_length。
Q:能用自己的微调模型吗?能。用ct2-transformers-converter把 Transformers 格式的 Whisper 模型转成 CTranslate2 格式后,把WhisperModel("本地目录")指向该目录即可,方法见 README.md 的 Model conversion 一节。
适合哪些场景
- 会议记录:长录音一键转逐字稿,分段带时间戳,方便回查谁在什么时候说了什么。
- 视频字幕:
word_timestamps输出可直接喂给字幕工具,中英混录也能自动识别语言。 - 语音备忘录:把零散的语音笔记批量转成文字,之后可以搜索、归档。
- 播客与课程:长音频配 VAD 静音过滤,转写完还能顺手做内容索引。
仓库里还带了现成测试音频(如 tests/data/jfk.flac)和 benchmark/ 下的速度、内存、WER 基准脚本,想验证自己机器上的真实表现可以直接跑。
写在最后
faster-whisper 的价值一句话概括:不牺牲准确率的 Whisper 加速版,装完三行代码就能用。
下一步建议:用batch_size试试批量推理能快多少;跑一遍 benchmark/speed_benchmark.py 看看自己机器的实测数据;最后尝试转换一个自己微调过的模型,把这套流程接到真实业务里。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考