faster-whisper 快速上手:3 步装好语音转文字,再学会两个进阶用法
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
拿到一段一小时的会议录音,等原版 Whisper 把它转成文字,得泡上一杯咖啡的时间。faster-whisper 用 CTranslate2(一个针对 Transformer 模型优化的推理引擎)重写了 Whisper,同样的识别精度,速度最高提升 4 倍,内存占用更低。这篇文章带你 3 步装好并跑通第一次语音转文字,再学会词级时间戳和静音过滤两个进阶用法。
它能帮你干什么
读完这一节,你能确认 faster-whisper 是否匹配你的场景。
- 会议、访谈录音转文字:输入一个音频文件,输出每句带起止秒数的文本,直接就是会议纪要的骨架。
- 播客、网课变可搜索文本:支持指定语言(如
language="zh")或自动检测,一行 for 循环就能批量处理整个文件夹的音频。 - 长录音只转人声部分:录音里有大段静音时,开 VAD(语音活动检测)自动剪掉无声片段,不浪费算力。
- 省 GPU/CPU 资源:仓库 README 的官方基准里,转写 13 分钟音频(large-v2 模型,NVIDIA RTX 3070 Ti,CUDA 12.4):openai/whisper fp16 耗时 2 分 23 秒、显存 4708MB,faster-whisper int8 耗时 59 秒、显存 2926MB;CPU 侧(Intel i7-12700K,8 线程,small 模型):6 分 58 秒 vs 1 分 42 秒。
三步跑起来
按下面 3 步走,你可以在本机完成第一次语音转文字。
第 1 步:装好
需要 Python 3.9 及以上。音频解码走 PyAV 库(自带 FFmpeg 解码能力),所以系统里不需要另装 FFmpeg。
python --version # 确认 Python 3.9+ pip install faster-whisper # 从 PyPI 安装💡 要用 GPU 加速的话,先装好 NVIDIA cuBLAS 和 cuDNN 9(CUDA 12)两个库,安装方法见 README 的 GPU 一节。
第 2 步:跑通最小示例
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}")首次运行会从 Hugging Face Hub 自动下载 base 模型并缓存到本地,之后直接走缓存。
第 3 步:看懂输出
每行输出是「起始秒 -> 结束秒 + 文本」。info里还有info.language(检测到的语言)和info.language_probability(置信度);不想自动检测时,在 transcribe 里直接传language="en"即可。模型尺寸可选 tiny / base / small / medium / large-v3 / turbo,越大越准,CPU 上建议配 int8 量化。
进阶:最值得学的一个用法
这一节深入讲两个拿来即用的功能:词级时间戳和 VAD 静音过滤。
词级时间戳解决「字幕、关键词定位要知道每个字几点几分出现」;VAD 过滤解决「长录音里静音占大头,转录时间被白白浪费」。
# 词级时间戳 + 跳过静音部分 segments, _ = model.transcribe( "audio.mp3", word_timestamps=True, # 开启词级时间戳 vad_filter=True, # 开启 VAD 过滤静音 vad_parameters=dict(min_silence_duration_ms=500), # 超过 500ms 的静音被剪掉 ) for segment in segments: for word in segment.words: print(f"[{word.start:.2f}s -> {word.end:.2f}s] {word.word}")VAD 默认只剪掉超过 2 秒的静音,用min_silence_duration_ms可以调得更激进。
其余能力一句话带过,完整参数看 WhisperModel 源码:
BatchedInferencePipeline批量转录,README 基准里batch_size=8把 GPU 耗时从 1 分 03 秒压到 17 秒;distil-large-v3蒸馏模型,天生为这套转录流程设计;initial_prompt提供上下文文本、hotwords提升专有词识别;cpu_threads控制 CPU 线程数(默认 4)。
这几个坑先避开
下面 3 个是新手最常撞的,遇到先对号入座。
⚠️ 调了 transcribe(),半天没输出现象:执行完segments, info = model.transcribe(...)后,等了半天什么都没打印。 原因:segments是个生成器(惰性的、迭代时才产出结果的迭代器),不迭代转录就不会开始。 解决:套for循环打印,或直接segments = list(segments)。
⚠️ 指定 device="cuda" 报 cuBLAS/cuDNN 相关错误现象:GPU 运行时报缺 NVIDIA 库、CUDA 版本不匹配。 原因:最新 ctranslate2 只支持 CUDA 12 + cuDNN 9,而这两个库默认不在系统里。 解决:Linux 上pip install nvidia-cublas-cu12 nvidia-cudnn-cu12==9.*,并按 README 设置好LD_LIBRARY_PATH再启动;实在只能留在 CUDA 11 环境,就pip install --force-reinstall ctranslate2==3.24.0降级。
⚠️ 第一次运行特别慢,像卡死了现象:第一次构造WhisperModel("base")时耗时长得反常。 原因:首次加载会从 Hugging Face Hub 自动下载对应的 CTranslate2 模型文件。 解决:等这一次把模型缓存下来,或提前把模型放到本地目录,用WhisperModel("/path/to/model")指定加载。
faster-whisper 把「音频转成带时间戳的文字」做成了几行 Python 的事,精度与原版相当,速度最高 4 倍,且 CPU/GPU 都能跑。
- 完整文档与基准数据:README.md
- 转录参数细节:faster_whisper/transcribe.py
- 基准测试脚本:benchmark/
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考