faster-whisper:语音转文字,快 4 倍

faster-whisper 在 GitHub 上已经拿到 23.8K Star 了。

SYSTRAN 开源了这个工具,用 CTranslate2 重新实现了 OpenAI 的 Whisper 模型。做一件事——把音频转成文字。速度比原版快 4 倍,内存占用更少,还支持 8 位量化。

正文顶部截图

为什么要用它

做过语音识别的人都知道,Whisper 效果好,但速度慢。处理一段 13 分钟的音频,原版 Whisper 在 GPU 上要 2 分 23 秒。faster-whisper 只要 1 分 03 秒。

开了批处理模式,16 段音频一起跑,17 秒搞定。用 INT8 量化,VRAM 从 4708MB 降到 2926MB,速度还能再快一点。

CPU 上也快。Small 模型,原版要 6 分 58 秒,faster-whisper 批处理模式 51 秒。

README区域截图

支持哪些功能

  • 多语言识别,自动检测语言
  • 词级时间戳,精确到每个词的起止时间
  • VAD 过滤,自动跳过静音片段
  • 批处理模式,多段音频同时处理
  • 支持 Distil-Whisper 蒸馏模型,速度更快
  • 自定义模型转换, fine-tuned 模型也能用

安装使用

安装:

pip install faster-whisper

GPU 需要额外装 NVIDIA 的库。CUDA 12 和 cuDNN 9。Linux 可以用 pip 装,Windows 和 Linux 也能从 Purfview 的仓库下载。

基本用法:

from faster_whisper import WhisperModel

model = WhisperModel("large-v3", device="cuda", compute_type="float16")
segments, info = model.transcribe("audio.mp3", beam_size=5)

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

批处理:

from faster_whisper import WhisperModel, BatchedInferencePipeline

model = WhisperModel("turbo", device="cuda", compute_type="float16")
batched_model = BatchedInferencePipeline(model=model)
segments, info = batched_model.transcribe("audio.mp3", batch_size=16)

不需要装 FFmpeg,用 PyAV 解码音频。

适合哪些人用

  • 需要把大量音频转成文字的人
  • 在做实时语音识别的开发者
  • 想在本地跑语音识别、不想调 API 的人
  • 需要处理多语言音频的场景

社区已经有不少项目基于 faster-whisper 构建:WhisperX 做了说话人分离,WhisperLive 做了实时转录,aTrain 做了图形界面。

faster-whisper 构建:WhisperX 做了说话人分离,WhisperLive 做了实时转录,aTrain 做了图形界面。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐