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如果你需要把会议录音、讲座或播客转成文字这篇文章适合你。faster-whisper 是基于 CTranslate2 推理引擎的 Whisper 语音转文字实现官方基准中同精度下速度可达原版的最高 4 倍且占用更少内存。读完你能完成四件事在本地跑通第一段转录、给视频产出逐词时间戳、批量处理整个音频文件夹并按排错手册解决安装与性能问题。文中所有性能数据均来自仓库 README 的基准测试测试口径见下文。五分钟快速上手安装 faster-whisper 并跑通第一段转录目标5 分钟内从空环境拿到第一条带时间戳的转录结果。环境要求Python 3.9 及以上。音频解码由依赖包 PyAV 完成无需在系统里另装 FFmpeg。pip install faster-whisper然后运行最小示例audio.mp3换成你的音频路径即可from faster_whisper import WhisperModel model WhisperModel(tiny, devicecpu, compute_typeint8) segments, info model.transcribe(audio.mp3) print(f语言: {info.language}概率 {info.language_probability:.2f}) for segment in segments: print(f[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text})这段代码做了什么WhisperModel按模型名自动下载并加载 CTranslate2 权重transcribe返回音频信息和分段结果tiny是最小档位用于先验证流程后续可换成更大模型。注意segments是生成器真正开始转录是在你遍历它的 for 循环或执行list(segments)那一刻。示意输出实际内容取决于你的音频语言: en概率 0.99 [0.00s - 5.49s] And so my fellow Americans...转录会议录音用 VAD 过滤静音片段场景一小时会议里夹杂大量停顿先去掉无声部分再解码省时并减少乱码。segments, _ model.transcribe( meeting.m4a, vad_filterTrue, vad_parametersdict(min_silence_duration_ms500), )这段代码做了什么vad_filterTrue启用内置的 Silero VAD 检测器。它的默认行为偏保守只过滤超过 2 秒的静音如果你把min_silence_duration_ms调小短停顿也会被切掉。各参数的完整含义见 faster_whisper/vad.py。给视频做逐词字幕word_timestamps 用法场景做字幕或时间轴对齐需要每个词自己的起止时间。segments, _ model.transcribe(lecture.mp3, word_timestampsTrue) for segment in segments: for word in segment.words: print(f[{word.start:.2f}s - {word.end:.2f}s] {word.word})这段代码做了什么开启逐词时间戳后每个 segment 额外携带words列表输出即为 (start, end, word) 三元组可直接映射为 SRT 等字幕格式。如果只需要上一节那种段落级时间戳不要开这个参数速度更快。批量处理一个音频文件夹场景目录里有一批录音要一次性出文稿。模型加载是固定开销正确做法是只加载一次在循环里只调用transcribeimport os from faster_whisper import WhisperModel model WhisperModel(small, devicecpu, compute_typeint8) for name in sorted(os.listdir(recordings)): if name.endswith((.mp3, .m4a, .wav)): segments, _ model.transcribe(os.path.join(recordings, name)) print(, name) for segment in segments: print(f{segment.start:.2f}\t{segment.text})把recordings换成你的目录即可有 GPU 时把device/compute_type换回cuda/float16。长音频加速批量推理 pipeline场景单条长音频在 GPU 上仍嫌慢。仓库提供了BatchedInferencePipeline作为transcribe的替代入口README 基准中 13 分钟音频在 int8、batch_size8下约 16 秒完成NVIDIA RTX 3070 Ti 8GBCUDA 12.4。from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched BatchedInferencePipeline(model) segments, info batched.transcribe(audio.mp3, batch_size16)批量推理路径默认已开启 VAD 过滤长音频可少写一个参数。⚙️ GPU / CPU 模型大小与计算类型怎么选本节给出选型逻辑和参数背后的原因所有数据来自 README 基准GPURTX 3070 Ti 8GB、CUDA 12.4CPUIntel Core i7-12700K、8 线程。硬件推荐配置依据NVIDIA GPU显存充裕large-v3 / turbo float1613 分钟音频 1m03s显存 4525MBlarge-v2beam_size5NVIDIA GPU显存紧张int8_float16同基准下 59s显存降到 2926MB无 GPUsmall int8实时场景用 tinysmall 模型 13 分钟音频fp32 需 2m37sint8 为 1m42s选型原则先按硬件定compute_type再按内存余量定模型档位int8 量化在 CPU 和 GPU 上都能进一步压缩占用README 结论。beam_size 为什么默认是 5transcribe的beam_size默认值为 5。README 专门提醒与其他 Whisper 实现横向对比时必须固定该参数openai/whisper 的默认是 1。调大更稳但更慢追求速度可降到 1。其他值得动的参数initial_prompt提供领域上下文文本用于压低专有名词的误识别率。hotwordsfaster_whisper/transcribe.py 中TranscriptionOptions定义的热词字段处理特定领域术语时可关注。condition_on_previous_text是否让当前片段参考上文解码distil 系列官方示例中显式关闭了它长文本场景注意这个开关。 排错手册按安装、性能、精度三组排查每条按现象—可能原因—解决办法给出。安装类现象初始化 GPU 报 CUDA 相关错误。可能原因最新版 ctranslate2 只支持 CUDA 12 cuDNN 9。解决安装 CUDA 12 的 cuBLAS 与 cuDNN 9CUDA 11 环境执行pip install --force-reinstall ctranslate23.24.0CUDA 12 cuDNN 8 环境执行pip install --force-reinstall ctranslate24.4.0。现象import 报 Python 版本错误。可能原因版本低于 3.9。解决升级到 Python 3.9 及以上。性能类现象CPU 转录很慢。可能原因使用 fp32 或线程数未受控。解决compute_type换 int8运行时用环境变量控制线程如OMP_NUM_THREADS4 python3 my_script.py。现象GPU 显存不足。可能原因float16 下大模型偏大。解决换 int8_float16或改用更小模型。精度类现象专有名词、领域术语识别错。解决用initial_prompt提供上下文或关注TranscriptionOptions的hotwords字段。现象出现重复文本或幻觉。解决调整condition_on_previous_text与temperatures重试策略完整选项集见 faster_whisper/transcribe.py。进阶入口转换自训或第三方模型先pip install transformers[torch]4.23再用ct2-transformers-converter转换完整命令与--copy_files、--quantization参数说明见 README.md 的 Model conversion 一节转换出的本地目录可直接传给WhisperModel加载。批量推理与 distil-large-v3 的用法细节同样见 README.md 对应小节。想复现本文引用的基准数据可运行仓库自带的 benchmark/speed_benchmark.py。需要观察解码细节时用logging.getLogger(faster_whisper).setLevel(logging.DEBUG)打开调试日志。faster-whisper 覆盖的是离线批量转录这条主线实时与多说话人需求README 的 Community integrations 一节列出了基于它的成熟方案。三个后续方向供参考说话人分离WhisperX、whisper-diarize 等项目在 faster-whisper 之上补了 diarization 能力。近似实时转写Whisper-Streaming、WhisperLive 以 faster-whisper 为后端的流式方案。自训模型接入把微调权重转成 CTranslate2 格式后按上文加载即可复用整套流水线。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表