faster-whisper 语音转文字:本地离线跑通,比原版快 4 倍
2026/9/12 1:55:29 网站建设 项目流程

faster-whisper 语音转文字:本地离线跑通,比原版快 4 倍

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

会议录音一个多小时、外语视频没有字幕,你总不能逐字听吧?faster-whisper 用 CTranslate2 引擎重写了 OpenAI Whisper,在准确率基本不变的前提下,把转写速度提到原版的约 4 倍,还能离线跑、内存占用更低。

🚀 三步跑通第一次转写,拿到你的第一份文字

先别管配置,把最小闭环走通。它要求 Python 3.9+,音频解码由 PyAV 自带,不需要你另外装 FFmpeg;只有在用 NVIDIA 显卡时才需要额外的 cuBLAS 和 cuDNN。

# 安装主包(要求 Python 3.9+) pip install faster-whisper

装完直接跑下面这段。WhisperModel按名字加载模型,首次会自动从 Hugging Face 下载并缓存到本地,第二次就快了。

from faster_whisper import WhisperModel # 没有 NVIDIA 显卡:用 CPU + int8 量化,内存更省 model = WhisperModel("base", device="cpu", compute_type="int8") segments, info = model.transcribe("audio.mp3", beam_size=5) print("语言:", info.language, "置信度:", round(info.language_probability, 2)) for seg in segments: # segments 是生成器,开始遍历才真正启动转写 print(f"[{seg.start:.2f}s -> {seg.end:.2f}s] {seg.text}")

跑通这一步,你就有了带时间戳的文字稿。所有可调参数都集中在WhisperModel.transcribe里,完整签名可以在 faster_whisper/transcribe.py 里对照。

适用场景:会议录音、访谈、语音笔记等任意音频文件的快速出稿。

⚙️ 选对模型与计算类型,把速度榨出来

模型档位和计算类型(compute_type)决定了"多快、占多少内存"。官方基准是在同一硬件上测得的可验证数字:

GPU(NVIDIA RTX 3070 Ti,large-v2 模型,13 分钟音频):

实现精度耗时显存占用
openai/whisperfp162m23s4708MB
faster-whisperfp161m03s4525MB
faster-whisper(batch_size=8)fp1617s6090MB
faster-whisper(int8)int859s2926MB

CPU(Intel i7-12700K,small 模型,13 分钟音频):

实现精度耗时内存占用
openai/whisperfp326m58s2335MB
faster-whisper(int8)int81m42s1477MB

结论很直接:GPU 上加batch_size冲吞吐,CPU 上优先int8省内存。按你的硬件和精度要求挑档位:

档位精度取向推荐计算类型适配硬件典型用途
tiny / base快、省CPUint8普通笔记本试错、实时、长音频粗转
small平衡CPUint8/ GPUfloat16入门独显日常会议、播客
medium较准GPUfloat16中端独显精度要求更高
large-v3最高GPUfloat16/int8_float16大显存正式交付、多语言
turbo大模型速度GPUfloat16独显大批量、追吞吐

[!TIP]segments是生成器,不会在transcribe那一刻就开始算。想一次性跑完就list(segments);追求速度时在 GPU 上把batch_size调大(如 8、16),实测能把 13 分钟音频从 1 分钟压到十几秒。

适用场景:确定你的硬件和精度底线后,用这张表锁定model_sizecompute_type

🔤 解锁词级时间戳、翻译与静音过滤

基础出稿之外,三个参数值得单独记住,它们覆盖绝大多数进阶需求。

# 词级时间戳 + 翻译 + 静音过滤,一次配齐 segments, _ = model.transcribe( "audio.mp3", language="zh", # 显式指定中文,避免自动误判 task="translate", # 需要译成英文时填 "translate" word_timestamps=True, # 逐词时间戳,做字幕的刚需 vad_filter=True, # 用内置 Silero VAD 跳过静音段 vad_parameters=dict(min_silence_duration_ms=500), # 停顿超 500ms 才断开 ) for seg in segments: for word in seg.words: # 每个词都有 start / end / word print(f"{word.start:.2f}s {word.word}")

几个关键点:

  • word_timestamps=True:把时间戳精确到每个词,做字幕、逐词分析都靠它。
  • task="translate":把源语言转写成英文文本,配合language指定源语言即可跨语言。
  • vad_filter=True:内置 Silero VAD 过滤无语音片段,默认只会去掉超过 2 秒的静音,参数默认值见 faster_whisper/vad.py。

[!WARNING] 如果结果出现重复、时间戳错乱或陷入循环,多半是解码卡进了失败循环。把它设成condition_on_previous_text=False,用上一段输出做提示的机制会关闭,稳定性明显提升。

适用场景:视频字幕制作、外语内容转译、长访谈里大段停顿的录音整理。

⚠️ 绕开五个最常见的坑

现象更可能的原因处理方式
首次运行卡很久正在自动下载模型下载完会缓存本地,第二次直接复用
CUDA 报错 / 找不到库缺 cuBLAS、cuDNN,或 CUDA 版本不符装 CUDA 12 的 cuBLAS 与 cuDNN 9;没有卡就直接用 CPU
中文识别不准语言被自动误判transcribe里显式写language="zh"
输出重复、乱码循环解码陷入失败循环condition_on_previous_text=False
显存不足(OOM)模型太大或精度太高换更小模型,或compute_type="int8"

语言支持可查 faster_whisper/tokenizer.py 里的_LANGUAGE_CODES,内置代码覆盖了 100 种语言,中文(zh)也在其中。完整基准与换算模型的命令都在 README.md,需要复现对比时以它为准。

适用场景:第一次跑不顺、或跨语言/中文效果不达预期时,按这张表逐项排查。

🧭 按你的角色,把下一步做对

不同人拿到这套工具后的落点不一样,对号入座:

  • 学生 / 研究者:先base试错,讲课录音、访谈素材批量出稿,再用词级时间戳整理引用位置。
  • 职场 / 会议:日常用small+vad_filter,长会议开batch_size,把纪要整理时间省下来。
  • 字幕 / 内容创作word_timestamps=True直接导出逐词时间轴,配task="translate"做多语言字幕。
  • 开发者 / 批量:GPU 上turbolarge-v3+batch_size拉吞吐,把转写嵌进自动化管道。

最后,用这四步把它真正用起来:

  1. pip install faster-whisper,确认 Python 版本达标;
  2. 跑通上面的最小示例,拿到第一份带时间戳的文字;
  3. 按你的硬件选对model_sizecompute_type,需要快就加batch_size、省内存就int8
  4. 按场景叠加word_timestampstranslatevad_filter,把出稿变成能直接交付的结果。

【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询