faster-whisper 从安装到跑出第一条字幕:新手最短上手路径
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
faster-whisper 用 CTranslate2 这个推理引擎重写了 OpenAI Whisper 的转录逻辑,把语音转文字的耗时压到原实现的约四分之一,同时占用的内存更少。你只要准备一段音频文件,几分钟内就能在本机跑通第一条带时间戳的转录结果。
这篇文章面向第一次接触语音转文字的人:先判断它适不适合你的场景,再给出一条从安装到看到输出的最短路径,最后把新手最容易卡住的几个点逐一说明。
先判断:它适合哪种使用场景
上手前确认三点,能帮你少走弯路:
- 环境门槛:只需要 Python 3.9 及以上。音频解码由 PyAV 库内置完成,不需要像 openai-whisper 那样在系统里单独装 FFmpeg。
- 硬件选择:纯 CPU 就能跑,适合个人机器;有 NVIDIA 显卡可以进一步提速,但需要配套 CUDA 12 的 cuBLAS 和 cuDNN 9 两个库(下文卡点部分会讲怎么配)。
- 典型任务:录音整理成文字、生成带时间戳的字幕、批量处理会议/播客音频。如果你的核心诉求是"把一段话变成文本并知道每句在什么时间点",它正好覆盖。
不适合的情况:如果你要的是实时逐句流式输出(说话的同时立刻出字),这个项目是离线批处理,实时场景需要用社区里基于它封装的流式方案。
安装与第一次转录:最短路径
第一步:安装依赖
普通用户直接用 pip 从 PyPI 安装即可:
pip install faster-whisper装完后 Python 里能import faster_whisper就表示成功。如果你还想浏览源码或参考仓库里自带的测试音频,可以克隆仓库:
git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper第二步:跑通最小转录脚本
下面这个脚本完成三件事:加载模型、转录一段音频、把每句的起止时间和文字打印出来。把audio.mp3换成你自己的文件(mp3、flac、wav 等常见格式都行):
from faster_whisper import WhisperModel # 小模型 + CPU + int8 量化,适合第一次验证 model = WhisperModel("base", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3") print("检测到语言: %s,置信度: %.2f" % (info.language, info.language_probability)) for segment in segments: print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))预期结果:先打印一行语言检测结果(比如检测到语言: en,置信度: 0.98),随后逐行输出带时间戳的句子。模型权重在首次加载时会自动下载,第一次运行慢一点属于正常现象。
💡 如果手边没有音频,克隆了仓库的话可以直接用测试目录里的样例tests/data/jfk.flac代替audio.mp3。
怎么确认自己跑通了:看第一次输出
一次成功的转录有三个可核对的标志:
- 语言行:
info.language给出检测到的语言代码,info.language_probability在 0 到 1 之间。置信度很低(比如低于 0.5)通常说明音频质量差或几乎没有人声。 - 时间戳连续:每句的
start和end以秒为单位递增,不会倒序或大幅跳变。 - 文字可读:输出的文本和音频内容基本对得上。想快速核对准确率,用一两句自己已知内容的短句测试最直观。
仓库自带的测试也用了同一个思路:对jfk.flac用tiny模型转录后断言语言是en、时长约 11 秒、文本与肯尼迪演讲的那句名言一致。你可以照着tests/test_transcribe.py里的断言来设计自己的验收标准。
跑通之后,三个值得加上的能力
单词级时间戳
需要精确到每个词的位置(做卡拉OK字幕、词汇标注时用)时,加一个参数:
segments, _ = model.transcribe("audio.mp3", word_timestamps=True) for segment in segments: for word in segment.words: print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))word_timestamps为 True 时,每个 segment 内多出一个words列表,每个元素带独立的起止时间。
用 VAD 跳过静音段
VAD 是语音活动检测,作用是把"没有人声的时段"先剔掉,模型只处理有人声的部分,长音频尤其受益。仓库集成了 Silero VAD 模型:
segments, _ = model.transcribe( "audio.mp3", vad_filter=True, vad_parameters=dict(min_silence_duration_ms=500), )默认策略比较保守,只去除超过 2 秒的静音;把min_silence_duration_ms调小(如上例 500)会更激进地剪掉停顿。完整的默认参数值以faster_whisper/vad.py源码为准。
批量推理:长音频提速
BatchedInferencePipeline是WhisperModel的替换入口,把音频切成小片段并行推理,长音频收益明显。README 的基准数据里,large-v2 在 GPU 上从 1 分 03 秒降到 17 秒就是靠batch_size=8的批量推理:
from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("large-v3", device="cuda", compute_type="float16") batched = BatchedInferencePipeline(model=model) segments, info = batched.transcribe("audio.mp3", batch_size=16)注意两点:批量推理的 VAD 过滤是默认开启的,不需要手动传vad_filter=True;显存吃紧时把batch_size调小。
新手常见卡点与处理动作
1. 调用 transcribe 后没有任何输出
现象:代码跑完但一行都没打印。可能原因:segments是个生成器,只有被迭代时转录才真正执行。处理动作:像上例一样写for循环消费它,或者用segments = list(segments)强制跑完。
2. GPU 加载模型报错,提示缺少 cuBLAS / cuDNN
现象:device="cuda"时报库加载失败。可能原因:最新的 ctranslate2 只支持 CUDA 12 + cuDNN 9,系统里没装这两个库或版本不对。处理动作:按 NVIDIA 官方文档安装 CUDA 12 的 cuBLAS 与 cuDNN 9;Linux 上也可以用pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*安装并设置LD_LIBRARY_PATH后再启动 Python。若只能停留在 CUDA 11 + cuDNN 8,则降级ctranslate2到 3.24.0。具体版本对应关系以 README 为准。
3. 首次运行卡在模型下载
现象:第一次加载模型时长时间无响应或下载失败。可能原因:权重从 Hugging Face Hub 自动拉取,网络不稳就会卡住。处理动作:在有网环境先把模型下好,之后把WhisperModel的参数换成本地模型目录路径加载;只允许用本地文件可以配合local_files_only=True避免联网。模型名称与下载地址的对应关系见faster_whisper/utils.py里的_MODELS表。
4. CPU 上转得太慢
现象:没有 GPU,几十秒的音频要等很久。可能原因:默认是浮点精度且未限制线程。处理动作:用compute_type="int8"做 8 位量化,显存和内存占用都能降下来;GPU 批量推理时同理。控制 CPU 线程数可用环境变量,例如OMP_NUM_THREADS=4 python3 my_script.py。
5. 和别人对比速度时发现"不更快"
现象:与 openai-whisper 等实现对比,速度差距不如预期。可能原因:本库transcribe的默认 beam size 是 5,而 openai/whisper 默认是 1,搜索范围不同结果自然不同;转录耗时还与词数强相关。处理动作:对比时固定 beam size、线程数和音频内容,README 末尾有专门的对比说明。
下一步做什么
按顺序推进即可:先用tiny或base模型确认流程,再按需升级到small、medium、large-v3或distil-large-v3等更大规格(完整清单可调用available_models()查看);有 GPU 时优先试float16,显存不够再退回int8。
常用入口:
- 完整用法与基准数据:README.md
- 转录参数全集(WhisperModel 类):faster_whisper/transcribe.py
- 仓库内置的测试音频与断言示例:tests/
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考