使用 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,研究人员和开发者可以更加灵活和高效地处理大量音频数据,从而推动语音识别技术的进一步发展。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vc++全版本组件大全 VC++运行时(Visual C++ Runtime)是VC++开发环境中用于支持C和C++程序运行的基础库集合。这些库包含了执行C/C++程序所必需的基本函数和数据结构,例如内存管理、字符串操作、输入输出处理、异常处理等。VC++运行时库分为静态库和动态库两种形式,以适应不同类型的项目需求。 静态链接库 vs 动态链接库 静态链接库(Static Linking Libraries):在编译时,静态库的代码会被直接嵌入到最终生成的可执行文件中。这意味着每个使用静态库的程序都会包含库代码的一个副本,导致最终程序的体积较大,但不需要外部库文件支持即可独立运行。在VC++中,静态链接库的例子有LIBC.lib(用于单线程程序)和LIBCMT.lib(用于多线程程序)。 动态链接库(Dynamic Link Libraries):与静态链接相反,动态库的代码并不直接加入到应用程序中,而是在程序运行时被加载。这使得多个程序可以共享同一份库代码,节省了系统资源。VC++的动态运行时库主要通过msvcrt.dll(或其变体,如MSVCRTD.dll用于调试版本)实现,与之配套的导入库(Import Library)如CRTDLL.lib用于链接阶段。 运行时库的版本 VC++运行时库随着Visual Studio版本的更新而发展,每个版本都可能引入新的特性和优化,同时保持向后兼容性。例如,有VC++ 2005、2008、2010直至2019等多个版本的运行时库,每个版本都对应着特定的开发环境和Windows操作系统。 重要性 VC++运行时对于确保程序正确运行至关重要。当程序在没有安装相应运行时库的计算机上执行时,可能会遇到因缺失DLL文件(如MSVCP*.dll, VCRUNTIME*.dll等)而导致的错误。因此,开发完成后,通常需要分发相应的VC++ Redistributable Packages给最终用户安装,以确保程序能够在目标系统上顺利运行。 安装与部署 安装VC++运行时库通常是通过Microsoft提供的Redistributable Packages完成的,这是一个简单的过程,用户只需运行安装程序即可自动安装所需组件。对于开发者而言,了解和管理不同版本的运行时库对于确保应用程序的广泛兼容性和可靠性是必要的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值