使用 CTranslate2 实现 Faster Whisper 的加速转录

使用 CTranslate2 实现 Faster Whisper 的加速转录

近年来,语音识别技术得到了快速发展。OpenAI 的 Whisper 模型作为其中的佼佼者,以其高精度和强大的性能广受欢迎。然而,其较长的推理时间和高内存消耗也成为了限制其应用的一大因素。为了解决这些问题,社区开发了 Faster Whisper,这是一个基于 CTranslate2 的 Whisper 模型重实现,旨在提供更快的转录速度和更低的内存消耗。

什么是 Faster Whisper?

Faster Whisper 是对 OpenAI Whisper 模型的重新实现,使用 CTranslate2 这一高效的 Transformer 模型推理引擎。与原版模型相比,Faster Whisper 在同等精度下,推理速度提高了最多四倍,同时内存消耗显著减少。通过在 CPU 和 GPU 上进行 8 位量化,其效率可以进一步提升。

基准测试对比

为了更直观地了解 Faster Whisper 的性能优势,我们来看一组基准测试数据。这些数据对比了不同实现方式在处理 13 分钟音频时的时间和内存使用情况。

Large-v2 模型在 GPU 上的性能对比
实现方式精度Beam size时间最大 GPU 内存最大 CPU 内存
openai/whisperfp1654m30s11325MB9439MB
faster-whisperfp16554s4755MB3244MB
faster-whisperint8559s3091MB3117MB
Small 模型在 CPU 上的性能对比
实现方式精度Beam size时间最大内存
openai/whisperfp32510m31s3101MB
whisper.cppfp32517m42s1581MB
whisper.cppfp16512m39s873MB
faster-whisperfp3252m44s1675MB
faster-whisperint852m04s995MB

安装和使用

安装步骤

Faster Whisper 可以通过 PyPI 直接安装:

pip install faster-whisper

注意:与 openai-whisper 不同,Faster Whisper 不需要在系统上安装 FFmpeg。音频解码使用的是 PyAV,这个库将 FFmpeg 库打包在其内。

GPU 环境配置

如果希望在 GPU 上运行,需要安装以下 NVIDIA 库:

  • cuBLAS for CUDA 12
  • cuDNN 8 for CUDA 12

最新版本的 CTranslate2 仅支持 CUDA 12。如果需要在 CUDA 11 上运行,可以降级到 CTranslate2 的 3.24.0 版本:

pip install --force-reinstall ctranslate2==3.24.0

使用示例

下面是一个使用 Faster Whisper 进行音频转录的示例代码:

from faster_whisper import WhisperModel

model_size = "large-v3"

# 在 GPU 上运行,使用 FP16 精度
model = WhisperModel(model_size, device="cuda", compute_type="float16")

# 或在 GPU 上运行,使用 INT8 精度
# model = WhisperModel(model_size, device="cuda", compute_type="int8_float16")

# 或在 CPU 上运行,使用 INT8 精度
# model = WhisperModel(model_size, device="cpu", compute_type="int8")

segments, info = model.transcribe("audio.mp3", beam_size=5)

print("Detected language '%s' with probability %f" % (info.language, info.language_probability))

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))

扩展功能

支持 Distil-Whisper

Distil-Whisper 是 Faster Whisper 包兼容的简化版 Whisper 模型。以下示例展示了如何使用 distil-large-v3 模型进行推理:

from faster_whisper import WhisperModel

model_size = "distil-large-v3"

model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, info = model.transcribe("audio.mp3", beam_size=5, language="en", condition_on_previous_text=False)

for segment in segments:
    print("[%.2fs -> %.2fs] %s" % (segment.start, segment.end, segment.text))
词级时间戳

可以启用词级时间戳以获取更精确的转录结果:

segments, _ = model.transcribe("audio.mp3", word_timestamps=True)

for segment in segments:
    for word in segment.words:
        print("[%.2fs -> %.2fs] %s" % (word.start, word.end, word.word))
VAD 过滤

通过集成 Silero VAD 模型,可以过滤掉音频中无语音的部分:

segments, _ = model.transcribe("audio.mp3", vad_filter=True)

结论

Faster Whisper 提供了一种高效的解决方案,使得 Whisper 模型在保证精度的前提下,显著提升了推理速度并降低了内存消耗。无论是在学术研究还是工业应用中,这一改进都具有重要的实际意义。

通过安装和配置 Faster Whisper,研究人员和开发者可以更加灵活和高效地处理大量音频数据,从而推动语音识别技术的进一步发展。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值