faster-whisper 语音转文字:比原版快 4 倍的 ASR 引擎
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
会议录音攒了十几个 G,用 OpenAI Whisper 逐条转写要排一晚上。faster-whisper 把同样的 Whisper 模型换到 CTranslate2 推理引擎上重新实现,识别精度不变,速度最高提升 4 倍,还省内存。
它本质上是一个 Python 包:用 CTranslate2 重写 Whisper 推理流程,解决"识别慢、占显存、部署麻烦"三个问题,适合跑在 CPU 或 NVIDIA GPU 上。
跑通最小流程
要求只有一个:Python 3.9 以上。音频解码由 PyAV 内置的 FFmpeg 库完成,不用再单独装 FFmpeg。一条命令处理全部依赖:
pip install faster-whisper装完用下面这段代码验证,能打印出语言信息说明链路通了:
from faster_whisper import WhisperModel model = WhisperModel("small", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3") print(info.language, info.language_probability) for seg in list(segments): # segments 是生成器,需消费才真正运行 print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")核心能力拆解
4 倍速推理与 int8 量化
官方基准里,13 分钟音频用 large-v2 在 GPU 上跑 1 分 03 秒(fp16),开 int8 量化后显存从 4.5GB 降到 2.9GB,耗时 59 秒。CPU 上 small 模型 int8 量化 1 分 42 秒,比 openai/whisper 的 6 分 58 秒快约 4 倍。
词级时间戳
加一个参数就能拿到每个单词的起止时间,做字幕或高亮定位不需要再跑对齐模型:
segments, _ = model.transcribe("audio.mp3", word_timestamps=True) for seg in segments: for word in seg.words: print(word.start, word.end, word.word)VAD 静音过滤
内置 Silero VAD,vad_filter=True会先切掉长静音段再送模型,长音频里大量停顿的场景能省不少算力,还可选vad_parameters调静音阈值。
从示例到实际效果
下面这段可以直接跑,用 GPU 的 float16 转录一段中文会议录音:
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("audio.mp3", beam_size=5, vad_filter=True) print(f"语言: {info.language} (置信度 {info.language_probability:.2f})") for seg in list(segments): print(f"[{seg.start:7.2f} -> {seg.end:7.2f}] {seg.text}")输出形如[ 12.35 -> 18.90] 下季度的目标先定三个方向,每行带起止时间。拿到segments后直接写 SRT 就能生成字幕文件;info.language是自动检测的结果,检测错了可手动传language="zh"覆盖。
选型与调参建议
- 如果显存小于 8GB,则选
compute_type="int8_float16"量化,或改用 small/turbo 模型;纯 CPU 环境用device="cpu", compute_type="int8"。 - 如果识别偶有错字,则把
beam_size从 1 提到 5(本包默认就是 5,注意 openai/whisper 默认是 1,对比性能时这个差异很关键)。 - 如果要批量处理音频,则用
BatchedInferencePipeline配合batch_size=16,官方基准里 17 秒跑完 13 分钟音频,比单条顺序推理快约 3.5 倍。 - 如果要中文专有名词更准,可以在
transcribe里传initial_prompt或hotwords提示词。
项目内部怎么工作
- 音频解码模块:基于 PyAV 把 mp3/wav 等格式解成 16kHz 单声道波形,支持立体声拆分。
- 特征提取模块:对波形做 STFT 和 mel 滤波,产出 80 维特征喂给模型。
- 转录核心:WhisperModel 主类,负责语言检测、分段生成、词级时间戳对齐和异常片段过滤。
- VAD 过滤:Silero 模型切分语音与静音,
vad_filter=True时生效。
适合谁用
- 需要批量转写会议录音、播客、访谈的开发者,追求吞吐和成本。
- 做视频字幕自动生成的工具作者,需要词级时间戳和稳定 API。
- 在 CPU 服务器上自托管 ASR 的团队,不想为每路音频配 GPU。
回到开头那堆会议录音:先装好依赖再换大模型跑一遍。打开终端输入pip install faster-whisper,13 分钟音频 1 分钟内出稿。
【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考