如何用 faster-whisper 做语音转文字:从安装到实战的完整教程

如何用 faster-whisper 做语音转文字:从安装到实战的完整教程 如何用 faster-whisper 做语音转文字从安装到实战的完整教程【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisperfaster-whisper 是一个基于 CTranslate2 推理引擎的免费开源语音转文字库重新实现了 OpenAI 的 Whisper 模型解决的核心问题是原版 whisper 转写慢、吃内存。在相同精度下它最高快 4 倍内存占用反而更低适合需要批量处理会议录音、视频音频、播客文稿的开发者和个人用户。 场景切入它解决哪些真实痛点会议录音转写太慢。按官方仓库的基准数据用原版 openai/whisper 在 CPU 上转写 13 分钟音频需要 6 分 58 秒一份 90 分钟的会议录音要等将近 45 分钟换成 faster-whisper 的 int8 量化同样 13 分钟只需 1 分 42 秒90 分钟的录音大约 12 分钟出结果等待时间从开完会才等完变成顺手就转完了。字幕要对齐到词。给视频做字幕光有文字不够还得知道每个词出现在哪一秒。faster-whisper 可以输出词级时间戳字幕轨道、高亮定位这类功能都能直接做。此外长音频归档、语音助手离线转写等场景也都适用。 faster-whisper 性能对比比原版快多少、省多少以下数据来自官方仓库的基准测试测试音频 13 分钟beam_size5脚本位于 benchmark/ 目录。GPU 场景large-v2 模型CUDA 12.4RTX 3070 Ti 8GB实现方式精度耗时显存openai/whisperfp162m23s4708MBfaster-whisperfp161m03s4525MBfaster-whisperint859s2926MBfaster-whisperbatch_size8int816s4500MBCPU 场景small 模型8 线程Intel Core i7-12700K实现方式精度耗时内存openai/whisperfp326m58s2335MBfaster-whisperint81m42s1477MBfaster-whisperbatch_size8int851s3608MB可以得出两个结论GPU 上 int8 量化把耗时从 2 分 23 秒压到 59 秒显存不到 3GBCPU 上差距更明显int8 下耗时约为原版的四分之一内存减少约 37%。如果显存宽裕开启批处理batch_size8还能把 GPU 耗时进一步压到 16 秒代价是多占约 1.5GB 显存。追求更高速度的话还可以搭配 distil-large-v3 蒸馏模型官方测试中它与原版 transformers 实现相比耗时减半词错率还略低。 faster-whisper 三步上手安装、跑通、看懂输出第一步安装要求 Python 3.9 及以上。和原版 whisper 最大的区别是不用单独装 FFmpeg音频解码由 PyAV 库完成FFmpeg 依赖已打包在其中。pip install faster-whisper第二步跑通第一个转录下面的代码加载 large-v3 模型首次运行会自动从 Hugging Face Hub 下载对应权重转写本地音频文件from faster_whisper import WhisperModel model WhisperModel(large-v3, devicecuda, compute_typefloat16) segments, info model.transcribe(audio.mp3) for segment in segments: print([%.2fs - %.2fs] %s % (segment.start, segment.end, segment.text))没有 GPU 的话把device改成cpu、compute_type改成int8即可。第三步看懂输出transcribe返回两个东西info含检测到的语言language和置信度language_probability和segments。这里要注意一个新手常见的坑segments是生成器转写并不会立刻开始只有真正迭代它时才会执行。想让它跑完比如先存下来再处理用segments list(segments)收集即可。每个 segment 包含start、end、text等字段全部可选参数见 WhisperModel 类源码。⚙️ faster-whisper 实战用法三个高频配置用法一拿到词级时间戳做字幕、歌词式高亮都需要词级时间。转写时加word_timestampsTrue每个 segment 会多出一个words列表segments, _ model.transcribe(audio.mp3, word_timestampsTrue) for segment in segments: for word in segment.words: print(word.start, word.end, word.word)用法二用 VAD 跳过静音段库内置了 Silero VAD语音活动检测可以把没有语音的片段直接跳过长录音里静默片段多时能省下不少时间。默认行为比较保守只剔除超过 2 秒的静音想更激进地剪掉短停顿可以通过vad_parameters调整比如把最小静音时长从 2000ms 降到 500mssegments, _ model.transcribe(audio.mp3, vad_filterTrue, vad_parametersdict(min_silence_duration_ms500))所有 VAD 参数及默认值可以在 vad.py 源码中查到。用法三批处理提高 GPU 吞吐BatchedInferencePipeline是WhisperModel.transcribe的即插即用替代同样从 faster_whisper 导入官方基准里 batch_size8 时 GPU 耗时降到 16 秒batch_size 再加大时收益依然明显pipeline BatchedInferencePipeline(modelmodel) segments, _ pipeline.transcribe(audio.mp3, batch_size16)这里要注意批处理模式下 VAD 默认开启显存占用也比单流模式高配置时要留足余量。❓ faster-whisper 常见报错与避坑问GPU 上提示 CUDA / cuDNN 相关错误ctranslate2 加载失败最新版 ctranslate2 只支持 CUDA 12 和 cuDNN 9。如果你环境里是 CUDA 11需要降级pip install --force-reinstall ctranslate23.24.0CUDA 12 但 cuDNN 8 的场景则用ctranslate24.4.0。图省事的话可以直接用官方 NVIDIA 镜像nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04cuBLAS、cuDNN 都装好了。问显存或内存不够报 OOM换低精度GPU 用compute_typeint8_float16CPU 用int8。large-v2 模型在 GPU 上的显存能从 4525MB 降到 2926MB如果开了批处理先调小batch_size。问调用 transcribe 后像卡住了一样一直不出结果转写发生在迭代生成器的那一刻直接调用函数本身并不启动计算。先用segments list(segments)强制跑完或者进入 for 循环再往下走。问需要装 FFmpeg 吗自己微调的模型怎么用FFmpeg 不用装PyAV 已打包好依赖。自己微调过的模型兼容 Transformers 库可以用ct2-transformers-converter工具转成 CTranslate2 格式先pip install transformers[torch]4.23转换后直接传本地目录加载faster_whisper.WhisperModel(whisper-large-v3-ct2)。faster-whisper 已经把 VAD 过滤、批处理推理和蒸馏模型支持都做进了主流程围绕它的服务端部署、流式转写、说话人分离等开源项目也有不少二次开发和集成的成本很低。想自己改代码或直接部署的可以拉取源码git clone https://gitcode.com/GitHub_Trending/fa/faster-whisper【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考