ARTICLE DETAIL

资讯详情

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

faster-whisper 语音转录快速指南:1 分钟转写 13 分钟音频

faster-whisper 语音转录快速指南:1 分钟转写 13 分钟音频 faster-whisper 语音转录快速指南1 分钟转写 13 分钟音频【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisperfaster-whisper 是用 CTranslate2 推理引擎重新实现 OpenAI Whisper 的语音转录库相同准确率下最快比原版快 4 倍。官方基准13 分钟音频在 GPU 上 1 分 03 秒完成原版 openai/whisper 需要 2 分 23 秒改用 int8 量化后内存降到 2926MB。安装一条 pip 命令不用装 FFmpeg环境准备只有一条命令pip install faster-whisper只需 Python 3.9 或更高版本。与原版不同它不要求系统安装 FFmpeg音频解码走 PyAV 库FFmpeg 的依赖已经包含在包内。按模型尺寸名tiny、small、large-v3、turbo 等加载模型时会自动从 Hugging Face Hub 下载对应的 CTranslate2 模型无需手动下载离线环境可以用download_root指定模型保存目录并传local_files_onlyTrue跳过联网。使用 GPU 的话还需要 NVIDIA 的 cuBLAS 和 cuDNN 9 库CUDA 12 环境。如果机器上还是 CUDA 11先执行pip install --force-reinstall ctranslate23.24.0锁定旧版引擎。仓库 docker/ 目录下的 Dockerfile 展示了如何基于 NVIDIA 官方 CUDA 镜像打包适合直接起服务。第一次转录3 行代码拿到带时间轴的结果from faster_whisper import WhisperModel model WhisperModel(large-v3, devicecuda, compute_typefloat16) # GPU FP16CPU 改为 devicecpu, compute_typeint8 segments, info model.transcribe(audio.mp3, beam_size5) # 默认 beam 搜索宽度 5 for segment in segments: print(f[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text})有两个容易卡住的点segments是一个生成器转录在你迭代它之前并不会开始。想一次性跑完用list(segments)包一层。语言会从音频前 30 秒自动检测info.language和info.language_probability给出结果已知语言时直接传languagezh跳过检测更稳。同一个transcribe接口既支持tasktranscribe转写也支持tasktranslate翻译成英文做双语字幕不用切换模型。设备与计算精度怎么选决定速度的两个参数速度和内存主要由WhisperModel构造时的两个参数决定devicecuda、cpu或autodevice_index可以传列表如 [0, 1]把模型分到多块 GPU 上再配合num_workers支持多线程并行转录。compute_type常见组合是 GPU 用float16或int8_float16CPU 用int8int8 量化在两种硬件上都支持。以 README 里 13 分钟音频的数据为参照large-v2 模型RTX 3070 TiCUDA 12.4模式耗时GPU 内存openai/whisperfp162 分 23 秒4708MBfaster-whisperfp161 分 03 秒4525MBfaster-whisperint859 秒2926MBfaster-whisperint8batch_size816 秒4500MB没有 GPU 也能跑small 模型加 int8 在 i7-12700K CPU 上 1 分 42 秒完成内存只占 1477MB。cpu_threads默认 4 线程可以按核心数调整。另外提醒一句和别的实现对比速度时要确保 beam_size 和OMP_NUM_THREADS设置一致否则数字没有可比性原版默认 beam size 是 1这里是 5。拿到你要的输出词级时间戳、静音过滤、上下文提示model.transcribe有三个常用参数能解决大部分实际场景的问题词级时间戳传word_timestampsTrue每个 segment 的segment.words会给出每个词的起止时间做 SRT 字幕或卡拉OK 对齐直接可用。静音过滤VAD 默认开启内置 Silero VAD 模型实现见 faster_whisper/vad.py。默认只去掉超过 2 秒的静音可用vad_parametersdict(min_silence_duration_ms500)调整避免把句子中间的短停顿也切掉。上下文提示initial_prompt可以传入一段文字提示比如音频主题、高频术语对专业领域音频的识别有帮助反复听错的人名也可以试试hotwords参数。换模型时注意权衡tiny/base最快small是均衡之选large-v3精度最高turbo偏重速度蒸馏版distil-large-v3官方建议搭配languageen, condition_on_previous_textFalse使用完整模型尺寸列表见 README.md。批量处理批推理把 13 分钟压到 16 秒要连续处理多个文件或长音频换成BatchedInferencePipeline。它是WhisperModel.transcribe的直接替代品且 VAD 默认开启from faster_whisper import WhisperModel, BatchedInferencePipeline model WhisperModel(turbo, devicecuda, compute_typefloat16) batched BatchedInferencePipeline(modelmodel) # 批推理管道 segments, info batched.transcribe(audio.mp3, batch_size16) # 批大小按显存调大基准里batch_size8能把 13 分钟音频从 1 分 03 秒压到 17 秒代价是内存升到 6090MB显存富余就把 batch_size 往上调。过程想看进度加log_progressTrue即可显示进度条。微调与自定义模型转换一次之后直接加载需要自己微调模型或使用已有 Whisper 权重时先把它转成 CTranslate2 格式。装好pip install transformers[torch]4.23依赖清单见 requirements.conversion.txt然后执行ct2-transformers-converter --model Hub 模型名或本地目录 --output_dir 输出目录 --quantization float16转换是一次性操作之后加载本地目录就行例如WhisperModel(whisper-large-v3-ct2)。想在自己的机器上复现上面的数字仓库 benchmark/ 目录有速度、内存、词错误率WER三个脚本跑一下python benchmark/speed_benchmark.py就知道你的硬件处于什么水平。第一次使用的建议CPU 上用smallint8GPU 用base或tiny先转一段 1 分钟以内的短音频确认流程跑通再换large-v3处理正式内容边看输出边决定要不要调参数。【免费下载链接】faster-whisperFaster Whisper transcription with CTranslate2项目地址: https://gitcode.com/GitHub_Trending/fa/faster-whisper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表