拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Faster-Whisper 本地部署实战:3步跑通语音识别,1小时录音从30分钟缩到2分钟

Faster-Whisper 本地部署实战3步跑通语音识别1小时录音从30分钟缩到2分钟【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper上周五收到一个需求把 1 小时的会议录音转成文字稿当天交付。用原版 Whisper 在笔记本 CPU 上跑1 小时录音要转将近半小时排进去三四条就得加班。换成 Faster-Whisper 做本地部署后同一台 GPU 用 int8 量化加批量推理这份录音 2 分钟左右就出结果。Faster-Whisper 是基于 CTranslate2 推理引擎重写的 Whisper 实现识别精度不变速度和内存占用明显更好。这篇文档讲清楚怎么装、怎么跑、实测有多快、参数怎么调、哪些坑会踩到。 快速上手3 步完成 Faster-Whisper 安装与首次转录第一步装包确认环境环境要求只有一个Python 3.9 及以上。相比原版 Whisper它不需要在系统里预装 FFmpeg——音频解码由 PyAV 库负责FFmpeg 组件随包一起分发少了一项常见的环境折腾。pip install faster-whisperGPU 用户额外需要 CUDA 12 和 cuDNN 9新版 CTranslate2 只支持这两个版本CPU 用户装完即可用。第二步加载模型模型尺寸用名字指定比如large-v3。首次加载会自动下载对应的 CTranslate2 格式权重并缓存到本地之后启动就是秒级。第三步跑第一个转录示例from faster_whisper import WhisperModel # GPU 半精度是最常用的配置CPU 用户改为 devicecpu, compute_typeint8 model WhisperModel(large-v3, devicecuda, compute_typefloat16) # beam_size 是束搜索宽度越大越准但越慢默认 5 即可 segments, info model.transcribe(meeting.mp3, beam_size5) print(f检测到语言: {info.language}置信度 {info.language_probability:.2f}) for seg in segments: # 注意segments 是惰性对象遍历它时才真正开始推理 print(f[{seg.start:7.2f} - {seg.end:7.2f}] {seg.text})看到按时间戳排列的中文转写结果就通了。如果确定音频语言比如全是中文给transcribe加languagezh可以省掉自动检测那一步速度更快也更稳。⚡️ 性能实测Faster-Whisper GPU/CPU 速度与内存对比以下数据来自项目自带的官方基准套件benchmark/含速度、内存、词错误率三组脚本全部测自13 分钟音频beam_size5。GPU 加速配置RTX 3070 Ti 8GB 实测CUDA 12.4large-v2 模型实现方案精度耗时显存占用相对 openai/whisper 省时faster-whisperbatch_size8int816s4500MB约 89%faster-whisperint859s2926MB约 59%faster-whisperfp161m03s4525MB约 56%whisper.cppFlash Attentionfp161m05s4127MB约 55%transformersSDPAfp161m52s4960MB约 22%openai/whisperfp162m23s4708MB—两个值得注意的点int8 量化指用 8 位整数代替浮点数存储和计算模型参数显存降到原来的三分之二左右识别精度几乎不受影响。它是投入最小、收益最确定的一档开关。批量推理batch_size8把 GPU 耗时从 59 秒压到 16 秒代价是多占 1.5GB 显存。显存富裕时非常划算。纯 CPU 方案8 核 i7-12700K 实测small 模型实现方案精度耗时内存占用相对 openai/whisper 省时faster-whisperbatch_size8int851s3608MB约 88%faster-whisperbatch_size8fp321m06s4230MB约 84%faster-whisperint81m42s1477MB约 76%whisper.cppOpenVINOfp321m45s1642MB约 75%whisper.cppfp322m05s1049MB约 70%faster-whisperfp322m37s2257MB约 62%openai/whisperfp326m58s2335MB—没有 GPU 的话CPU int8 是可用组合13 分钟音频 1 分 42 秒内存不到 1.5GB。线程数用OMP_NUM_THREADS对齐物理核心数别用默认值。 核心能力拆解按使用场景选功能下面四个能力全部通过transcribe的参数完成不需要额外搭逻辑。批量推理提速技巧让 GPU 不再空转BatchedInferencePipeline是WhisperModel.transcribe的直接替代品。它把音频切成片段、按批次打包后一起喂给 GPU单条 13 分钟的音频能从 59 秒提到 16 秒from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched BatchedInferencePipeline(modelmodel) # batch_size 为每批片段数越大越快、显存吃得越多 segments, info batched.transcribe(meeting.mp3, batch_size16) for seg in segments: print(f[{seg.start:7.2f} - {seg.end:7.2f}] {seg.text})批量模式下 VAD 过滤默认开启。文中的turbo是精度对齐 large-v3 的快模型适合这种吞吐场景。词级时间戳字幕对齐、按词检索的数据基础segments, _ model.transcribe(meeting.mp3, word_timestampsTrue) for seg in segments: for w in seg.words: # 每个词的起止时间 print(f{w.start:7.2f} - {w.end:7.2f} {w.word})做逐词字幕、会议记录按关键词跳转回放都靠它。VAD 静音过滤别让推理花在安静片段上VADVoice Activity Detection语音活动检测用 Silero 模型先扫一遍音频标出真正有人声的区间静音部分直接跳过、不进 Whisper 推理。对讲座、电话会议这类长静音录音速度省下来不说还能减少原版模型对着纯静音幻听出乱码的问题segments, _ model.transcribe( meeting.mp3, vad_filterTrue, # 开启语音活动检测 vad_parametersdict(min_silence_duration_ms500) # 静音超过 500ms 视为分段点 )默认阈值比较保守只剔除超过 2 秒的静音。min_speech_duration_ms、speech_pad_ms、max_speech_duration_s等参数都能在 faster_whisper/vad.py 里查到并自定义。中文识别与多语言配置支持 99 种语言识别加自动语言检测。生产环境建议显式指定languagezh省掉检测开销也避免开头静音导致误判。音频里有大量专名、术语被反复识别错时用initial_prompt给模型一段上下文提示生成会向这些词倾斜segments, _ model.transcribe( podcast.mp3, languagezh, # 锁定中文跳过自动检测 initial_prompt内容涉及分布式系统部署注意 Kubernetes、容器化等专有名词。 ) 调优实战硬件选型、参数调整与常见坑清单硬件选型先定模型和精度再谈参数高端 GPURTX 3090/4090large-v3或turbofloat16再把batch_size提到 8–16提速最明显中端 GPURTX 3060/30708GBlarge-v3int8_float16int8 权重 fp16 计算显存压到 3GB 上下只有 CPUsmall/baseint8内存大于 8GB 时试batch_size8速度约翻一倍想更小更快distil-large-v3是从 large-v3 蒸馏出的学生模型官方建议配合beam_size5, languageen, condition_on_previous_textFalse使用参数调整方向beam_size1 最快5 是默认平衡点追求极限准确率再上调condition_on_previous_text默认 True用前一段输出做上下文保持连贯如果开头识别错导致错误一路滚下去设 False 可以切断错误链temperature/best_of低置信度时 Whisper 会重试多次高准确率场景可压低 temperature、提高 best_ofCPU 线程数OMP_NUM_THREADS8 python3 script.py对齐物理核心常见坑清单segments是生成器不遍历就不推理需要完整结果时包一层list(segments)。这是踩得最多的一个坑。CUDA 版本不匹配CUDA 11 环境执行pip install --force-reinstall ctranslate23.24.0CUDA 12 cuDNN 8 换4.4.0。docker/ 目录里的 Dockerfile 基于 CUDA 12.4 官方镜像可直接参考。显存不够按顺序处理——先切int8再降beam_size最后换小模型批量模式会加显存先降batch_size。长音频出现乱码段落多半是静音被当成语音识别了开vad_filterTrue。CPU 上 fp32 比预期慢确认线程数设置正确线程没给够时 fp32 反而跑不过 whisper.cpp。 场景落地两个值得深入的方向媒体字幕自动化流水线就是三个能力的组合批量推理过整片 → 词级时间戳生成字幕文件 → VAD 裁掉片头片尾广告的长静音避免字幕被推位。批量模式下单条 4 小时的成片一次任务就能消化完产出后抽查时间戳即可。这是目前投入产出比最稳的用法。企业会议记录本地部署的核心卖点是录音不出内网。日常用法历史会议录音夜间批量转录VAD 自动切出发言片段词级时间戳让纪要可检索、可回放定位到具体一秒。中英混合的会议可以按片段让自动检测判断语言也可以直接锁language参数分别跑。 选型与进阶什么时候选它、什么时候不选适合选它音频不能出内网、转写量大需要批量吞吐、硬件资源有限int8 量化把内存压到原来三分之二。不必硬上需要毫秒级延迟的流式实时场景生态里有 Whisper-Streaming、WhisperLive 等基于它做的流式项目只是偶尔转几条音频且能接受上传云端直接调云 API 成本更低。自定义模型转换方法自己微调过 Transformers 体系的 Whisper 模型时可以转成 CTranslate2 格式给 Faster-Whisper 用pip install transformers[torch]4.23 ct2-transformers-converter --model openai/whisper-large-v3 \ --output_dir whisper-large-v3-ct2 \ --copy_files tokenizer.json preprocessor_config.json \ --quantization float16转换后把本地目录路径或上传到模型库后用自己的命名空间传给WhisperModel即可加载。生态扩展工具WhisperX加说话人分离和 wav2vec2 词级对齐适合多人会议whisper-ctranslate2命令行客户端用法对齐原版 Whisper CLI迁移脚本成本低speachesOpenAI 兼容的 API 服务Docker 一键起已接 OpenAI SDK 的项目可直接替换whisper-standalone-winWindows/Linux/macOS 独立可执行文件不想维护 Python 环境时用✅ 下一步行动建议按顺序做三件事今天用自己的真实音频跑通smallint8CPU或large-v3float16GPU确认安装、解码链路没问题本周用 benchmark/ 里的速度、内存脚本在自己的硬件上复测再按实测结果定模型尺寸和量化方案量上来之后把转录包成 speaches 服务或队列化批量脚本上线前用同一批音频对比精度确认 int8 在你的语料上没有可感知的退化【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门