faster-whisper:快 4 倍省一半内存的 Whisper 语音转录方案

faster-whisper:快 4 倍省一半内存的 Whisper 语音转录方案 faster-whisper快 4 倍省一半内存的 Whisper 语音转录方案【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper给一段 13 分钟的播客做语音转文字openai/whisper 在 CPU 上要 6 分 58 秒whisper.cpp 要 2 分 05 秒而 faster-whisper 开 INT8 批处理只需 51 秒数据出自官方 README benchmark测试环境见后文表格。faster-whisper 是基于 CTranslate2 重写的 Whisper 语音识别引擎官方给出的结论是同等准确率下比 openai/whisper 最高快 4 倍且更省内存。对播客转写、会议记录、字幕生产这类音频量大的场景它是最省事的替代方案。它凭什么又快又省CTranslate2 推理引擎速度 4 倍的来源Whisper 是一个 Transformer 模型原实现按 PyTorch 原生方式逐段解码大量时间耗在低效的算子上。faster-whisper 把模型整体迁移到 CTranslate2一个专为 Transformer 打造的推理引擎白话讲就是给模型换了辆更省油的发动机算子经过融合内存复用更充分GPU 和 CPU 都能直接受益这就是 README 宣称最高 4 倍速的来源。INT8 量化显存与内存再砍一刀量化是把权重从 16 位数字压缩成 8 位数字体积变小、计算变轻识别精度基本不变类比把高清图压成体积减半的图肉眼看不出差别。实测 large-v2 模型在 GPU 上FP16 占显存 4525MBINT8 只要 2926MB时间仅从 1 分 03 秒增加到 59 秒CPU 上内存从 2257MB 降到 1477MB。加载时把compute_type设为int8_float16GPU或int8CPU即可。Silero VAD 过滤让模型不转录空气VADVoice Activity Detection语音活动检测先用一个小模型标出哪里有说话转录时只算有声片段静音和噪音直接跳过。内置的 Silero VAD 默认比较保守只切掉超过 2 秒的静音如果音频里短停顿多可用vad_parameters传min_silence_duration_ms500收紧切分各参数含义见 faster_whisper/vad.py。动手跑通装环境依赖 Python 3.9音频解码由 PyAV 内置的 FFmpeg 库完成不用单独装 FFmpegpip install faster-whisperGPU 需 NVIDIA 的 cuBLAS 与 cuDNNCUDA 12 版本安装细节参考 README。最小可运行示例from faster_whisper import WhisperModel model WhisperModel(large-v3, devicecuda, compute_typefloat16) segments, info model.transcribe(audio.mp3, beam_size5, vad_filterTrue) print(Detected language: %s, probability: %.2f % (info.language, info.language_probability)) for segment in segments: print([%.2fs - %.2fs] %s % (segment.start, segment.end, segment.text)) # 参考 README Usage 与 faster_whisper/transcribe.py参数怎么调最稳参数推荐值作用beam_size5默认值调大精度略升、速度略降vad_filterTrue跳过静音段长音频提速明显word_timestamps做字幕时开 True输出每个词的开始/结束时间可逐词对齐hotwords专有名词字符串引导模型正确写出术语、人名、产品名完整参数列表在WhisperModel.transcribe的文档字符串里不确定的用法以官方 README 为准。数据验证官方 benchmark 里跑得有多快以下数据全部来自 README 的 Benchmark 章节GPU 环境为 NVIDIA RTX 3070 TiCUDA 12.4CPU 环境为 Intel Core i7-12700K8 线程GPU 转录 13 分钟音频large-v2 模型beam_size5实现精度耗时显存openai/whisperfp162m23s4708MBfaster-whisperfp161m03s4525MBfaster-whisperbatch_size8fp1617s6090MBfaster-whisperint859s2926MBfaster-whisperbatch_size8int816s4500MBCPU 转录 13 分钟音频small 模型beam_size5实现精度耗时内存openai/whisperfp326m58s2335MBwhisper.cppfp322m05s1049MBfaster-whisperfp322m37s2257MBfaster-whisperint81m42s1477MBfaster-whisperbatch_size8int851s3608MB两点提醒README 特别提示 faster-whisper 默认beam_size5而 openai/whisper 默认是 1直接比速度不公平对比前应对齐参数并核对 WER。另外优势最明显的场景是 GPU 上大模型开批处理13 分钟音频从 2 分 23 秒压到 17 秒CPU 上跑小模型时裸跑 fp32 并不占优此时应优先选 int8 或批处理模式别硬用默认配置。工程落地Docker 一键起 GPU 服务仓库自带 docker/ 目录基于 NVIDIA 官方 CUDA 镜像README 推荐nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04cuBLAS 和 cuDNN 依赖全部内置适合快速验证或内网部署docker build -t faster-whisper -f docker/Dockerfile docker/ docker run --gpus all faster-whisper镜像里自带示例脚本 docker/infer.py加载 tiny 模型转录一段音频并打印带词级时间戳的结果拿到环境先跑它确认链路没问题。批处理把 GPU 喂饱BatchedInferencePipeline是WhisperModel.transcribe的即插即用替身让 GPU 同时并行解码多段音频README 实测 GPU 上 large-v2 从 1 分 03 秒降到 17 秒。要点model.transcribe返回的 segments 是生成器批处理接口返回的同样是生成器记得遍历或list()才会真正执行。成本怎么省CPU 场景compute_typeint8加 8 线程内存与耗时双降GPU 显存紧张把batch_size从 8 往下调比如 17s6090MB换 59sint8 仅 2926MB音频以英文为主换distil-large-v3或turbo蒸馏模型进一步压缩耗时README 给出了对应示例。避坑清单调完 transcribe 就打印却没有任何输出segments是生成器转录在你迭代它之前根本没开始。解法放进 for 循环或list(segments)后再处理。GPU 起模型报 CUDA/cuDNN 库找不到新版 ctranslate2 只支持 CUDA 12 cuDNN 9。解法按 README 降级ctranslate23.24.0CUDA 11或4.4.0CUDA 12 cuDNN 8或直接改用上面的官方 Docker 镜像。开vad_filter报 onnxruntime 缺失VAD 模型是 ONNX 格式由 onnxruntime 执行pip 主包不带。解法pip install onnxruntime。对比测试里速度对不上默认 beam_size 不同这里默认 5openai/whisper 的model.transcribe默认 1且转录速度受结果词数影响。解法先对齐 beam_size再核对两边 WER 是否接近。手动装了 FFmpeg 才想起能跑不必装。PyAV 已把 FFmpeg 解码库打进 pip 包decode_audio直接可用。收尾一条命令开始faster-whisper 同等准确率下快最多 4 倍的 Whisper 转录引擎一条命令就能装pip install faster-whisper下一篇准备聊聊 distil-large-v3 蒸馏模型和自训练 Whisper 模型怎么转成 CTranslate2 格式接进来。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考