news 2026/9/5 17:55:24

17秒转写13分钟音频:faster-whisper语音识别加速实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
17秒转写13分钟音频:faster-whisper语音识别加速实现

17秒转写13分钟音频:faster-whisper语音识别加速实现

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

faster-whisper 是基于 CTranslate2 推理引擎的语音识别实现,用于把 OpenAI Whisper 模型转写的音频转成文字。它在保持同等准确率的前提下最高可提速 4 倍,并降低内存占用,适合需要在产品里集成离线语音转文字的开发者和要批量处理会议、播客录音的使用者。

理解项目:CTranslate2 重写版 Whisper 在做什么

faster-whisper 用 CTranslate2 引擎重写了 Whisper 的推理流程,模型权重与原版一致,准确率不受影响。它和 openai/whisper、whisper.cpp 的差异可以从几组数据看出来:

  • GPU 上用 large-v2 模型转写 13 分钟音频,fp16 下耗时 1 分 03 秒,openai/whisper 同精度为 2 分 23 秒;
  • 切到 int8 量化后耗时降到 59 秒,显存占用 2926MB,低于 openai/whisper 的 4708MB;
  • CPU 上 small 模型 int8 量化耗时 1 分 42 秒,openai/whisper fp32 为 6 分 58 秒。

另外两点工程上的省事:系统无需安装 FFmpeg,音频解码由 pip 包自带的 PyAV 完成;内置 Silero VAD,可以在转写前过滤掉纯静音片段,减少无意义的计算。

环境检查:Python 版本与 CUDA 依赖清单

安装前逐项确认:

  • Python 3.9 及以上(当前发布版本为 1.2.1)
  • 无需系统级 FFmpeg
  • 核心依赖由 pip 自动解析:ctranslate2(4.x)、onnxruntime、av、tokenizers
  • GPU 运行(可选):NVIDIA 显卡 + CUDA 12 + cuBLAS + cuDNN 9
  • 如果你还在用 CUDA 11 或 cuDNN 8:需将 ctranslate2 降到ctranslate2==4.4.0(更老环境用 3.24.0)

没有 GPU 也能跑通,CPU 配 int8 量化即可覆盖多数离线场景。

安装 faster-whisper 并验证版本

安装只需一条命令:pip install faster-whisper,依赖会自动处理。装完后执行python -c "import faster_whisper; print(faster_whisper.__version__)",终端打印出版本号(如 1.2.1)即代表安装成功。

首次运行:用 small 模型拿到带时间戳的分段结果

下面这段代码在 CPU 上用 int8 量化加载 small 模型,转写仓库测试目录里的 JFK 音频,并逐段打印起止时间和文本:

from faster_whisper import WhisperModel model = WhisperModel("small", device="cpu", compute_type="int8") segments, info = model.transcribe("tests/data/jfk.flac", beam_size=5) for segment in segments: print(f"[{segment.start:.2f}s -> {segment.end:.2f}s] {segment.text}")

首次运行会先下载一次模型权重,之后你会看到形如[0.00s -> 2.44s] And so my fellow Americans...的带时间戳输出。

调优选项:常用参数取值与适用场景

选项常用取值适用场景
devicecpu / cuda有 GPU 选 cuda,否则 cpu
compute_typefloat16 / int8_float16 / int8GPU 首选 float16;显存紧张用 int8_float16;CPU 用 int8
beam_size1–5,默认 5值越小解码越快,越大识别越稳定
batch_size8 / 16长音频批量转写,需配合 BatchedInferencePipeline
vad_filterTrue过滤录音中的静音段,阈值经 vad_parameters 调整
word_timestampsTrue需要词级时间戳(字幕对齐、热词定位)
languageen / zh 等已知语种时跳过自动检测,速度更稳

完整参数说明可以直接看 faster_whisper/transcribe.py 中 transcribe 方法的签名和注释。

典型场景:批量转写与静音过滤

如果你需要批量处理大量长录音并吃满 GPU,可以换用批处理推理管线,它是对常规 transcribe 的即插即用替换:

from faster_whisper import WhisperModel, BatchedInferencePipeline model = WhisperModel("turbo", device="cuda", compute_type="float16") pipeline = BatchedInferencePipeline(model) segments, info = pipeline.transcribe("audio.mp3", batch_size=16)

同样在 GPU 上跑 large-v2,batch_size=8 时转写 13 分钟音频的耗时从 1 分 03 秒降到 17 秒。

如果你需要自动跳过会议录音里的长段沉默,给 transcribe 传vad_filter=True即可,默认只移除超过 2 秒的静音,也可以用vad_parameters=dict(min_silence_duration_ms=500)这类方式调整判定阈值。如果你要做字幕级的词级对齐,传word_timestamps=True,然后从每个 segment 的 words 字段读取每个词的起止时间。

排障:GPU、内存与无输出的常见报错

现象可能原因解决办法
加载 GPU 时报 CUDA 相关错误缺 cuBLAS/cuDNN,或 CUDA 11 环境配了新版 ctranslate2按 CUDA 12 安装 cuBLAS 和 cuDNN 9,或降级ctranslate2==4.4.0
GPU 显存不足(OOM)模型过大或 fp16 占用偏高compute_type 改用 int8_float16,或换更小模型
转写速度远低于预期CPU 上跑大模型,或 beam_size 偏高换小模型 + int8,或用 GPU;长音频走 batched 推理
调用 transcribe 后一直没有输出segments 是生成器,遍历前不会真正开始转写用 for 循环遍历或 list(segments) 强制执行
首次运行特别慢首次加载会从 Hugging Face 下载模型权重等待一次即可,之后本地缓存;也可把模型目录转换后直接加载

下一步:用真实录音对比量化方案

faster-whisper 解决的是 Whisper 推理慢、占用高的问题,int8 量化和批量推理在内存与吞吐上还有明显余量。建议下一步拿一段真实录音,分别用 float16 和 int8 跑一遍,对比耗时、内存和识别差异,再决定线上用哪套配置。想看更多参数组合可以读 faster_whisper/transcribe.py,想复现前文数据可以运行 benchmark/ 目录下的基准脚本。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 17:52:43

MATLAB QPSK误码率仿真:从Eb/N0原理到工程可信度

简介:本资源是一份面向通信工程初学者与MATLAB实践者的QPSK数字调制系统误码率仿真工具包,聚焦于无线通信链路性能分析核心环节——误码率(BER)随信噪比(Eb/N0)变化关系的建模与可视化。压缩包共含2个文件&…

作者头像 李华
网站建设 2026/9/5 17:52:07

5 分钟跑通 Apktool:APK 逆向工程最短上手路径

5 分钟跑通 Apktool:APK 逆向工程最短上手路径 【免费下载链接】Apktool A tool for reverse engineering Android apk files 项目地址: https://gitcode.com/GitHub_Trending/ap/Apktool APK(安卓应用的安装包)看不懂、改不动&#x…

作者头像 李华
网站建设 2026/9/5 17:51:36

core-js@3 如何让 Babel polyfill 不再踩坑?一份完整选型指南

core-js3 如何让 Babel polyfill 不再踩坑?一份完整选型指南 【免费下载链接】core-js Standard Library 项目地址: https://gitcode.com/GitHub_Trending/co/core-js babel/polyfill 弃用后,入口文件里那行 import 该换成什么?core-j…

作者头像 李华