ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

1分钟03秒转录13分钟音频:CPU与GPU都提速的faster-whisper语音识别加速

1分钟03秒转录13分钟音频:CPU与GPU都提速的faster-whisper语音识别加速 1分钟03秒转录13分钟音频CPU与GPU都提速的faster-whisper语音识别加速【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisperfaster-whisper 是基于 CTranslate2一个专门跑 Transformer 模型的开源推理引擎重构的语音识别加速引擎同一批模型、同等精度比原版 openai/whisper 最快快4倍且占用更少内存。整个接口只有一个WhisperModel类CPU、GPU 都能用。 安装并跑通首次转录只需三步免装 FFmpeg一条 pip 命令完成安装只要求 Python 3.9 以上。音频解码由 PyAV 库负责它把 FFmpeg 的解码库打包在依赖里你不需要在系统里单独装 FFmpeg少踩一类安装坑。pip install faster-whisper8行代码看到第一段转录结果small、large-v3这类模型名会在首次加载时自动下载对应的 CTranslate2 权重无需手动转换。small 模型约 500MB首次下载后走本地缓存from faster_whisper import WhisperModel model WhisperModel(small, devicecpu, compute_typeint8) segments, info model.transcribe(audio.mp3, beam_size5) print(f语言: {info.language} ({info.language_probability:.2f})) for seg in segments: print(f[{seg.start:.2f}s - {seg.end:.2f}s] {seg.text})跑完你会得到检测到的语言、置信度以及每段带起止时间的文本这就是 faster-whisper 的完整转录闭环。 效果验证实测比 openai/whisper 快多少CPU 转录13分钟音频从6分58秒到1分42秒场景普通云服务器Intel Core i78线程批量转客服录音用 small 模型。官方基准里同一段 13 分钟音频 openai/whisper 在 fp32 下要 6 分 58 秒faster-whisper 的 int8 只要1分42秒接近 4 倍内存从 2335MB 降到 1477MB。实现精度耗时内存openai/whisperfp326m58s2335MBwhisper.cppfp322m05s1049MBfaster-whisperfp322m37s2257MBfaster-whisperint81m42s1477MB提速来自 CTranslate2 的推理优化和量化不是减少计算量。纯 CPU 场景下small 或 medium 模型加 int8 是性价比最高的组合。GPU 显存吃紧时INT8 量化省约38%显存场景RTX 3070 Ti8GB用 large-v2 转同一段 13 分钟音频。faster-whisper 的 fp16 要 1 分 03 秒已经快于 openai/whisper 的 2 分 23 秒换成 int8 耗时 59 秒显存降到 2926MBfp16 为 4525MB。8GB 单卡还驻着别的服务时量化能多留出空间。⚙️ 调优只讲透最影响结果的三个参数选精度和束宽compute_type 与 beam_size 两个抓手精度参数决定模型加载后的计算方式它对速度和内存的影响比后面所有转录参数都大。CPU 环境推荐int8INT8 量化即用更少的位来表示权重GPU 环境显存够选float16显存紧张选int8_float16。beam_size解码时同时搜索的候选路径条数默认 5。调到 10 对困难音频精度略有提升但速度下降不建议盲目拉满多数场景 5 已够用。防错防切碎condition_on_previous_text 与 VAD 两个开关condition_on_previous_text为 True默认时模型会受到上一段文本的影响某一段认错会带着后面一起错多语言混合、语言切换频繁的音频里把它关掉能避免错误级联。VAD 过滤默认只切 2 秒以上的静音口语里的短暂停顿容易被切成多段。把min_silence_duration_ms两个语音段之间的最小静音长度调到 500ms分段会更宽松segments, _ model.transcribe( audio.mp3, vad_filterTrue, vad_parametersdict(min_silence_duration_ms500), )VAD 用的是仓库自带的 Silero 语音活动检测模型判断音频片段有没有人说话。调完可以检查info.duration_after_vad看实际滤掉了多少静音参数默认值和完整逻辑在 VAD 过滤模块。 生产部署从 demo 到上线的4条清单批量转录BatchedInferencePipeline 让单文件也快4倍批量推理把多个音频片段拼进同一次前向计算单文件就明显提速GPU 上 large-v2 的 fp16 从 1 分 03 秒压到 17 秒batch_size8。多文件并发时同样用批量模式按batch_size拼批即可from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(medium, devicecuda, compute_typefloat16) pipeline BatchedInferencePipeline(modelmodel) segments, info pipeline.transcribe(audio.mp3, batch_size16)部署要点每条一句话GPU 环境用官方nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04镜像cuBLAS 和 cuDNN 自带可参考 Docker 部署配置CPU 线程数运行脚本前设置OMP_NUM_THREADS核数与物理核心一致批量吞吐用BatchedInferencePipeline加batch_size替换WhisperModel.transcribe自训模型转换ct2-transformers-converter --model 你的模型 --output_dir 输出目录 --quantization float16️ 高频问题自救三个最常见情况transcribe 没输出先查生成器现象model.transcribe(...)立刻返回没有任何文本和进度。原因segments是生成器真正转录在你迭代它时才开始。解法用for seg in segments:走完或先list(segments)收拢。GPU OOM先看精度和 CUDA 版本现象GPU 上 OOM显存不足或提示缺少 cuBLAS/cuDNN。原因当前 ctranslate2 只支持 CUDA 12 和 cuDNN 9且精度开得太高。解法换成int8_float16必须留在 CUDA 11 时把ctranslate2降级到 3.24.0。音频读不开先排除文件本身现象加载 mp3、flac 时报错。原因多半不是格式问题库用自带的 PyAV 解码不依赖系统 FFmpeg。解法先用其他工具打开同一文件确认完好再检查传给脚本的路径编码。跑通上面的流程后把示例音频换成你自己的会议录音再试word_timestampsTrue拿到词级时间戳是通往字幕生产的第一步。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表