用 faster-whisper 离线转写 1 小时音频:CPU 与 GPU 实操备忘
2026/9/12 3:54:16 网站建设 项目流程

用 faster-whisper 离线转写 1 小时音频:CPU 与 GPU 实操备忘

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

周五下午 4 点,你手里有一段 47 分钟的访谈录音,周一早会前要交文字稿。逐字听打,一整个下午都未必完稿;交给在线服务,又要权衡录音内容的保密性。faster-whisper 是基于 CTranslate2 重写 OpenAI Whisper 的 Python 库,在本地把音频转写为文本,官方 README 给出的结论是:相同准确率下比 openai/whisper 快至 4 倍,且更省内存,8 位量化还能进一步压缩开销。

一张表看清能力边界与资源开销

维度表现依据
速度相同准确率下较 openai/whisper 快至 4 倍(README 原文"up to 4 times")官方 README
GPU 资源large-v2:int8 占显存 2926MB,fp16 占 4525MBREADME 基准(RTX 3070 Ti)
CPU 资源small 模型 int8 内存占用 1477MBREADME 基准(i7-12700K)
精度distil-large-v3 的 WER 为 13.527,对照 transformers 同环境 14.801README 基准(YT Commons)
语言覆盖多语言支持,默认按前 30 秒音频自动检测语言,也可显式指定源码transcribe.py
部署方式支持 / 部分支持 / 不支持:离线转写支持,批量推理支持,说话人分离不支持,GUI 不支持README 与社区清单

适合需要离线批量处理录音、且手里有 GPU 或高性能 CPU 的团队;不适合想零代码点鼠标出结果、或指望它直接做说话人分离的使用者。

按使用强度选模型档位与计算类型

先判断自己属于哪种强度,再定档位,而不是上来就装最大的模型:

  • 轻量试用(每月几条录音,CPU 即可)
    • 模型:basesmallcompute_type="int8"
    • 硬件门槛:4 核以上 CPU、8GB 内存(small int8 占用 1477MB,README 基准)
    • 预期耗时:13 分钟音频在 i7-12700K 上 int8 用时 1m42s,折算 1 小时录音约 8 分钟(按 README 数字推算)
  • 日常生产(每日会议、字幕批量转写,推荐 GPU)
    • 模型:large-v3turbocompute_type="float16";显存紧张改int8_float16
    • 硬件门槛:8GB 显存的 NVIDIA GPU(large-v2 fp16 4525MB、int8 2926MB,README 基准)
    • 预期耗时:batch_size=8时 13 分钟音频 17 秒,折算 1 小时约 80 秒(按 README 数字推算)
  • 高并发服务(给团队开批量转写任务)
    • 模型:GPU +BatchedInferencePipeline,README 基准中 distil-large-v3 用了batch_size=16
    • 硬件门槛:batch_size=8需 6090MB 显存(README 基准),更大批次建议 16GB 显存
    • 部署:仓库docker/目录提供示例 Dockerfile 与infer.py,可作为容器化起点

15 行跑通基础转写

pip install faster-whisper
from faster_whisper import WhisperModel model = WhisperModel("large-v3", device="cuda", compute_type="float16") segments, info = model.transcribe("interview.mp3", beam_size=5) print("语言:", info.language, "概率:", info.language_probability) for segment in segments: # 注意:遍历前不会真正开始转写 print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

适用边界:单文件、单机、一次性产出文字稿的场景够用;需要说话人分离或流式字幕时,要再套一层外部项目(README 的社区集成清单里有现成方案)。

常用参数速查(默认值来自 1.2.1 版本transcribe签名):

参数默认值什么时候调
vad_filterTrue内置 Silero VAD 默认只过滤超过 2 秒的静音,可用vad_parameters收紧
word_timestampsFalse做字幕时必须开,输出词级起止时间
language自动检测中文等语种显式传language="zh"更稳
tasktranscribe设为translate输出目标语言译文
hotwordsNone固定人名、产品名、术语的识别
condition_on_previous_textTrue长音频出现滚雪球式误识别时置False
batch_size8仅批量推理管线生效,越大越快、显存越高

两个可直接照搬的工作流

一:CPU 上把 1 小时访谈压进 10 分钟

工具链:faster-whisper + 内置 Silero VAD + 笔记软件。

  1. 录音导出为 mp3(库加载时经 PyAV 解码,无需系统安装 FFmpeg,自动重采样为 16kHz 单声道,见源码faster_whisper/audio.py);
  2. transcribe(path, vad_filter=True),默认滤掉超过 2 秒的静音段;
  3. 遍历 segments 落盘为纯文本,粘进笔记软件校对专有名词。

可量化收益:small 模型 int8 下 13 分钟音频用时 1m42s(README 基准,i7-12700K 八线程),1 小时录音约 8 分钟出初稿。

二:GPU 上批量生成词级字幕

工具链:BatchedInferencePipeline+ct2-transformers-converter+ SRT 导出脚本。

  1. 模型权重首次运行自动从 Hugging Face Hub 下载,也可用转换器把自有微调模型转为 CTranslate2 格式;
  2. batched_model.transcribe(path, batch_size=8, word_timestamps=True)
  3. segment.words逐词导出 SRT;
  4. 导入剪辑软件对齐校对。

可量化收益:large-v2 在 RTX 3070 Ti 上 fp16、batch_size=8时 13 分钟音频仅需 17 秒(README 基准),2 小时长片推理约 2.5 分钟。

对照根因表排查高频故障

现象根因处理动作
初始化报 cuBLAS/cuDNN 缺失新版 ctranslate2 仅支持 CUDA 12 + cuDNN 9装 CUDA 12 的 cuBLAS/cuDNN;CUDA 11 环境按 README 降级 ctranslate2 到 3.24.0
首次运行卡在模型下载权重默认从 Hugging Face Hub 拉取手动下载 Systran 模型放到本地,WhisperModel直接传本地目录
CPU 转写明显慢于预期未量化、线程数未受控compute_type="int8";用OMP_NUM_THREADS固定线程数再对比
长音频同一句反复滚雪球式误识别condition_on_previous_text让错误累积False,或改用 distil-large-v3(README 示例即如此)
拿到 segments 却打印不出任何内容transcribe返回生成器,遍历前不执行list(segments)或放进 for 循环(README 明确警告)
GPU 显存不足大模型用了 fp16compute_type="int8_float16",large-v2 显存从 4525MB 降到 2926MB(README)

已知能力边界:本项目暂不支持原生说话人分离,也不提供真正的实时流式推理接口与任何图形界面——流式字幕和分离需要外挂社区项目(README 社区清单列有 Whisper-Streaming、whisper-diarize 等);它也不是训练框架,微调得到的 checkpoint 需先用ct2-transformers-converter转成 CTranslate2 格式才能加载。

三周从试用走到稳定生产

第 1 周(跑通):确认 Python ≥ 3.9,装库后用base+ int8 在自己 2~3 段真实录音上跑通transcribe,人工抽查准确率;同时确认机器走 CPU 还是 GPU 路线(GPU 需核对 cuBLAS/cuDNN 版本)。

第 2 周(调参):跑通 benchmark/ 下的脚本在自己机器上测出实时比基准;打开word_timestampshotwords,解决专有名词与字幕对齐问题;有 GPU 时切到large-v3/turbo+ fp16 复测耗时。

第 3 周(固化):把转写封装为批处理脚本或 Docker 服务,输出 SRT/Markdown 归档;对识别不稳的领域,微调模型后转换为 CTranslate2 格式接入。参数细节随时查 faster_whisper/transcribe.py 的transcribe签名,那里有全部选项的默认值与说明。

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

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

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

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

立即咨询