尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

13分钟录音转录只要59秒:faster-whisper 低资源加速实战笔记

13分钟录音转录只要59秒:faster-whisper 低资源加速实战笔记 13分钟录音转录只要59秒faster-whisper 低资源加速实战笔记【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper一份13分钟的会议录音用原版Whisper在GPU上跑了2分23秒显存占掉4.7GB。faster-whisper 把同样的任务压到59秒、2.9GB它基于 CTranslate2 重写了 Whisper 的推理专治转录慢、吃内存。它是什么一个基于 CTranslate2 的 faster-whisperfaster-whisper 把 OpenAI 的 Whisper 模型重新实现了一遍推理不再走 PyTorch而是交给 CTranslate2一个专门给 Transformer 模型做推理加速的 C 引擎。对你来说它是 openai/whisper 的平替——同样是model.transcribe(audio)的调用习惯但同精度下速度最高快 4 倍内存占用更低并且支持 CPU 和 GPU 上的 8-bit 量化。两个减少环境折腾的细节只需 Python 3.9音频解码由 PyAV 自带的 FFmpeg 库完成系统里不用再单独装 FFmpeg。模型加载、转录参数、批量推理都集中在 WhisperModel 这一类 里翻一个文件就能看懂全部选项。faster-whisper 和常规方案差在哪一组实测数据以下数据来自仓库 README 的官方 benchmark统一为 13 分钟英语音频、beam size5GPU 环境是 RTX 3070 Ti 8GBCUDA 12.4跑 large-v2 模型CPU 行是 i7-12700K 8 线程跑 small 模型实现精度耗时显存/内存openai/whisperGPUfp162m23s4708MBfaster-whisperGPUfp161m03s4525MBfaster-whisperGPUint859s2926MBfaster-whisperCPUsmallint81m42s1477MB差距真正拉开的地方不是 fp16 那行那只是快了一半多而是 int8耗时和 fp16 基本持平显存却从 4.5GB 降到 2.9GB省了约 35%。CPU 场景下 small 模型 int8 也比原版快约 4 倍1.4GB 内存对低配机器相当友好。它是怎么做到快的三个关键机制1. INT8 量化32位精度换8位存储相当于把无损音乐压成高码率 MP3文件小了耳朵几乎听不出差别。实现上模型权重和中间激活从 16/32 位浮点改成 8 位整数存储与计算显存带宽压力减半以上加载时通过compute_typeint8CPU或int8_float16GPU开启参数入口就在 transcribe.py 的WhisperModel构造函数里。2. CTranslate2 引擎换个灶台重排计算同一道菜同一个 Whisper 模型换个灶台颠锅顺序重新排过出菜就快了。Whisper 权重先被导出成 CTranslate2 格式引擎对算子图做融合与重排减少 kernel 启动次数和内存拷贝对应的依赖声明在 requirements.txt 的ctranslate24.0。3. VAD 过滤没声的片段根本不进模型先让门卫筛一遍没人说话的时段直接跳过。内置的 Silero VAD语音活动检测模型onnx 文件放在 faster_whisper/assets/ 下把音频切成有声/无声片段开vad_filterTrue后只有有声片段送进解码器默认只过滤超过 2 秒的静音阈值细节在 vad.py 里可调。完整音频 → Silero VAD 切分 → 有声片段进 Whisper 解码 → 时间戳映射回原坐标三步跑起来最小可运行示例Step 1 安装一条命令Python 3.9 即可系统不需要装 FFmpeg。pip install faster-whisperStep 2 加载模型并发起转录。device和compute_type决定跑在哪、用什么精度首次运行会自动下载对应的 CTranslate2 格式权重约 1~3GB看模型大小。from faster_whisper import WhisperModel model WhisperModel(small, devicecpu, compute_typeint8) segments, info model.transcribe(audio.mp3, beam_size5)Step 3 遍历结果。注意segments是生成器不调用 for 之前转录其实还没开始执行。print(f语言: {info.language}置信度 {info.language_probability:.2f}) for seg in segments: print(f[{seg.start:.2f}s - {seg.end:.2f}s] {seg.text})不同场景怎么选一张速查表场景模型量化设备视频字幕、内容审核large-v3 / mediumfloat16 或 int8_float16GPU客服通话批量质检small / distil-large-v3int8CPU 或 GPU边缘设备、离线语音笔记tiny / baseint8CPU如果你追求实时性延迟要压到 1 秒内那么 tiny int8 上 CPU 也跑得动如果你对 WER 敏感质检要求低于 5%那么直接 large-v3 float16 上 GPU省下来的显存可以拿去开批量推理。容易踩的坑 进阶调优方向生成器陷阱transcribe()返回时还没开始计算必须迭代segments才触发转录要结果就list(segments)。GPU 版本匹配新版 ctranslate2 只支持 CUDA 12 cuDNN 9老环境按 README 说明降级到对应版本。超长音频超过 1 小时建议传clip_timestamps分段如0,600,1200避免单段拖死整体。首次运行下载模型离线机器提前下好用download_root指向本地目录。环境嘈杂背景音乐和噪声会让 WER 跳升普通transcribe的vad_filter默认是关的建议显式打开并配合no_speech_threshold调参。进阶方向有两个值得先看批量推理 BatchedInferencePipeline 可把多段音频合批README 里 batch_size8 时 13 分钟音频 16 秒出结果另外transcribe的hotwords参数可以注入领域热词表仓库测试数据里就有 hotwords.mp3 对应的用例可以参考。下次 13 分钟的录音还在慢慢跑记得有张 59 秒的捷径等着。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表