使用 Inference Endpoints 实现极速 Whisper 转录

发布于 2025 年 5 月 13 日
在 GitHub 上更新

今天,我们很高兴地宣布 Inference Endpoints 上新增了极速的 OpenAI Whisper 部署选项。与以前的版本相比,它提供了高达 8 倍的性能提升,使每个人都能通过一键部署专用的、强大的转录模型,以经济高效的方式利用 AI 社区的卓越成果。

通过此次发布,我们希望使 Inference Endpoints 更加以社区为中心,并允许任何人参与并贡献,在 Hugging Face 平台上创建令人难以置信的推理部署。我们将与社区一起,通过使用出色的现有开源技术,为各种任务提供优化的部署方案。

Hugging Face 独特的地位在于,它身处开源 AI 社区的核心,与个人、机构和工业合作伙伴携手合作,使其成为在各种硬件和软件上部署 AI 模型进行推理时,最为异构的平台。

推理栈

新的 Whisper 端点利用了出色的开源社区项目。推理由 vLLM 项目提供支持,该项目提供了在各种硬件系列(尤其是但不限于 NVIDIA GPU)上运行 AI 模型的有效方式。我们使用 vLLM 对 OpenAI Whisper 模型的实现,使我们能够在软件栈中实现更进一步的底层优化。

在此初始版本中,我们针对计算能力为 8.9 或更高(Ada Lovelace)的 NVIDIA GPU(如 L4 和 L40s),这解锁了广泛的软件优化。

  • PyTorch 编译 (torch.compile)
  • CUDA 图
  • 使用 torch.compile 进行 float8 KV 缓存编译可以即时 (JIT) 生成优化的内核,它可以修改计算图、重新排序操作、调用专用方法等。

CUDA 图记录了在 GPU 上发生的顺序操作或内核的流程,并尝试将它们作为更大的工作单元块进行分组,以便在 GPU 上执行。这种分组操作通过执行单个更大的工作单元,而不是多个较小的工作单元,减少了数据移动、同步和 GPU 调度开销。

最后但同样重要的是,我们正在动态量化激活,以减少 KV 缓存所需的内存。计算以半精度(在本例中为 bfloat16)完成,输出以降低的精度存储(float8 为 1 字节,而 bfloat16 为 2 字节),这使我们能够在 KV 缓存中存储更多元素,从而提高缓存命中率。

有很多方法可以继续推动这项工作,我们正准备与社区携手合作,共同改进!

基准测试

Whisper Large V3 在 RTFx 方面实现了近 8 倍的改进,从而在不损失转录质量的情况下实现了更快的推理。

我们评估了几种基于 Whisper 的模型——Whisper Large V3、Whisper Large V3-Turbo 和 Distil-Whisper Large V3.5 的转录质量和运行时效率,并将它们与 Transformers 库上的实现进行了比较,以评估在相同条件下的准确性和解码速度。

我们计算了 Open ASR 排行榜中 8 个标准数据集的词错误率 (WER),包括 AMI、GigaSpeech、LibriSpeech (Clean 和 Other)、SPGISpeech、Tedlium、VoxPopuli 和 Earnings22。这些数据集涵盖了不同的领域和录音条件,确保了对泛化和实际转录质量的稳健评估。WER 通过计算错误预测的单词百分比(通过插入、删除或替换)来衡量转录准确性;WER 越低表示性能越好。所有三种 Whisper 变体都保持了与其 Transformer 基线相当的 WER 性能。词错误率比较

为了评估推理效率,我们从 rev16 长格式数据集进行采样,该数据集包含长度超过 45 分钟的音频片段——代表了会议、播客或采访等实际转录工作负载。我们测量了实时因子 (RTFx),定义为音频持续时间与转录时间的比率,并对样本进行了平均。所有模型都在单个 L4 GPU 上以 bfloat16 格式进行评估,使用一致的解码设置(语言、波束大小和批处理大小)。

Real-Time Factor comparison

如何部署

您可以通过 Hugging Face Endpoints 部署自己的 ASR 推理管道。Endpoints 允许任何希望将 AI 模型部署到生产就绪环境的人,只需填写几个参数即可实现。它还拥有市场上最完整的 AI 硬件舰队,以满足您对成本和性能的需求。所有这些都直接从 AI 社区的建立地获取。要开始使用,没有比这更简单的了,只需选择您要部署的模型:

推理

在已部署的模型端点上运行推理只需几行 Python 代码即可完成,您也可以在 Javascript 或任何其他您熟悉的语言中使用相同的结构。

以下是一个快速测试已部署检查点的小片段。

import requests

ENDPOINT_URL = "https://<your‑hf‑endpoint>.cloud/api/v1/audio/transcriptions"  # 🌐 replace with your URL endpoint
HF_TOKEN     = "hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"                              # 🔑 replace with your HF token
AUDIO_FILE   = "sample.wav"                                                    # 🔊 path to your local audio file

headers = {"Authorization": f"Bearer {HF_TOKEN}"}

with open(AUDIO_FILE, "rb") as f:
    files = {"file": f.read()}

response = requests.post(ENDPOINT_URL, headers=headers, files=files)
response.raise_for_status()

print("Transcript:", response.json()["text"])

FastRTC 演示

有了这个极速的端点,就可以构建实时转录应用程序。请尝试这个使用 FastRTC 构建的示例。只需对着麦克风说话,即可实时看到您的语音被转录!

Spaces 可以轻松复制,因此请随意复制。以上所有内容都在 Hugging Face Hub 中我们的专用 HF Endpoints 组织中提供给社区使用。提出问题、建议用例并在此处贡献:hfendpoints-images (Inference Endpoints Images) 🚀

社区

文章作者

干得好!🔥

🔥🔥🔥

出色的性能!👏👏

它支持 CrisperWhisper 吗?

·
文章作者

我会在接下来的几天里尝试一下!

各位干得非常出色!这可以在本地部署吗?

·
文章作者

如果您在本地拉取 Docker 镜像并且您的计算机/服务器有可用的 GPU,那应该可以 👌

这提供单词级时间戳吗?我上次检查时,vLLM 不支持 Whisper 的时间戳。速度令人印象深刻。干得好!

·
文章作者

谢谢 @vectorventures !单词级时间戳尚未支持,据我所知,即使通过 OAI 平台使用 Whisper,它也不完美。

我正在研究 @razhan 提到的 CrisperWhisper,它似乎开箱即用就能提供一些良好/更好的单词级时间戳,所以也许这是我们可以在未来几周内研究的东西?您想看看并为此打开一个 PR 吗?

VLLM 目前在 RTX 5090 上运行时遇到问题

https://github.com/vllm-project/vllm/issues/13306

有人能确认这项服务是否在此板上运行吗?

注册登录 以评论