超高速Whisper API
一种可以使用OpenAI的Whisper Large v3对音频进行转录的API!由🤗 Transformers、Optimum和flash-attn提供技术支持
特点:
- 🎤 超高速将音频转录为文本
- 📖 完全开源并可部署于任何GPU云服务提供商
- 🗣️ 内置的说话人分离功能
- ⚡ 使用简单且响应快速的API层
- 📃 异步后台任务和webhooks
- 🔥 针对并发和并行处理进行了优化
- ✅ 任务管理、取消和状态查询端点
- 🔒 安全的API访问管理员认证
- 🧩 在JigsawStack上提供完全托管的API服务
基于超高速Whisper CLI项目。如果您想在本地设置此项目或了解其背景,请查看该项目。
本项目旨在提供一个可部署的超高速Whisper API,使用Docker和GPU云基础设施,满足可扩展的生产环境需求。
通过Fly.io最新的GPU服务发布,我已设置Fly配置文件,方便在fly机器上部署!当然,您也可以在支持GPU和Docker的其他虚拟机环境中部署此项目。
以下是在Nvidia A100 - 80GB和fly.io GPU基础设施上的一些基准测试👇
优化类型 | 转录时间(150分钟音频) |
---|---|
large-v3(Transformers)(fp16 + batching [24] + Flash Attention 2 ) | ~2(1分钟38秒) |
large-v3(Transformers)(fp16 + batching [24] + Flash Attention 2 + diarization ) | ~2(3分钟16秒) |
large-v3(Transformers)(fp16 + batching [24] + Flash Attention 2 + fly机器启动 ) | ~2(1分钟58秒) |
large-v3(Transformers)(fp16 + batching [24] + Flash Attention 2 + diarization + fly机器启动 ) | ~2(3分钟36秒) |
Fly机器启动加载模型的预计启动时间约为~20秒。其余时间用于实际计算。
Docker镜像
yoeven/insanely-fast-whisper-api:latest
Docker Hub: yoeven/insanely-fast-whisper-api
部署到Fly
- 确保您已获得访问Fly GPUs的权限。
- 本地克隆项目并在根目录中打开终端
- 如果需要,可以重命名
fly.toml
中的app
名称 - 仅在需要从
Dockerfile
重新构建镜像时,删除fly.toml
中的image = 'yoeven/insanely-fast-whisper-api:latest'
安装 fly cli(如果尚未安装)
首次启动新的Fly app只需运行此命令
fly launch
- Fly会提示:
Would you like to copy its configuration to the new app? (y/N)
。选择是(y
)以从库中复制配置。 - Fly会提示:
Do you want to tweak these settings before proceeding
,如果没有需要调整的地方,大部分所需设置已在fly.toml
中配置完成。选择否(n
)继续并部署。
首次部署由于镜像较大会花费一些时间。后续部署则会快很多。
要设置说话人分离或API安全认证令牌,请运行以下命令:
fly secrets set ADMIN_KEY=<your_token> HF_TOKEN=<your_hf_key>
运行fly secrets list
查看密钥是否存在。
要获取用于话者分离的Hugging Face令牌,您需要执行以下步骤:
- 接受
pyannote/segmentation-3.0
用户条件 - 接受
pyannote/speaker-diarization-3.1
用户条件 - 前往
hf.co/settings/tokens
创建访问令牌。
您的API网址应类似于:
https://insanely-fast-whisper-api.fly.dev
运行fly logs -a insanely-fast-whisper-api
以实时查看fly机器的日志。
部署到其他云服务提供商
由于这是一个Docker化的应用程序,您可以通过一些配置调整将其部署到任何支持Docker和GPU的云提供商。
完全托管和可扩展的API
JigsawStack提供适用于各种用例的一系列强大API,同时保持低成本。此项目作为完全托管的API提供这里,具有增强的云扩展性,以实现成本效益和高在线时间。立即免费注册这里!
API使用
认证
如果您已设置ADMIN_KEY
环境密钥。您需要在请求头中传递x-admin-api-key
,值为您之前设置的密钥。
端点
基础URL
如果在Fly上部署,基础URL应类似于:
https://{app_name}.fly.dev/{path}
根据您部署的云服务提供商,基础URL会有所不同。
POST /
将音频转录或翻译为文本
请求体参数(JSON)
名称 | 值 |
---|---|
url(必需) | 音频URL |
task | transcribe ,translate ,默认:transcribe |
language | None ,en ,其他语言 默认:None 自动检测语言 |
batch_size | 要计算的并行批处理数。若遇到OOM,减少此值。默认:64 |
timestamp | chunk ,work 默认:chunk |
diarise_audio | 按说话者分离音频剪辑。需设置hf_token。默认:false |
webhook | 完成或出错时调用的Webhook POST 。默认:None |
webhook.url | 发送Webhook的URL |
webhook.header | 发送Webhook的请求头 |
is_async | 在后台运行任务并将结果发送到Webhook URL。true ,false 默认:false |
managed_task_id | 用于引用正在进行的任务的自定义任务ID。默认:为每个转录任务生成的uuid() v4 |
GET /tasks
获取所有活动的转录任务,包括异步后台任务和正在进行的任务
GET /status/{task_id}
获取任务状态,已完成的任务将从列表中删除,这可能会引发错误
DELETE /cancel/{task_id}
取消异步后台任务。仅当转录作业设置了is_async
为true
时可以取消。
本地运行
# 克隆库
$ git clone https://github.com/jigsawstack/insanely-fast-whisper-api.git
# 更改工作目录
$ cd insanely-fast-whisper-api
# 安装torch
$ pip3 install torch torchvision torchaudio
# 升级wheel并安装FlashAttention所需的包
$ pip3 install -U wheel && pip install ninja packaging
# 安装FlashAttention
$ pip3 install flash-attn --no-build-isolation
# 如果您想使用其他管理工具,生成更新的requirements.txt(可选项)
$ poetry export --output requirements.txt
# 获取python路径
$ which python3
# 设置虚拟环境
$ poetry env use /full/path/to/python
# 安装依赖
$ poetry install
# 运行应用
$ uvicorn app.app:app --reload
额外
通过编程关闭Fly机器
Fly机器按秒计费,并可能需要长达15分钟的空闲时间才能自动关闭。您可以在完成API使用后关闭机器以节省成本。可以通过向以下端点发送POST
请求来执行此操作:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
认证头:
Authorization Bearer <fly_token>
了解更多这里
致谢
- 感谢Vaibhav Srivastav撰写了此项目的大多数代码及CLI版本。
- 感谢OpenAI Whisper
JigsawStack
此项目是JigsawStack的一部分 - 提供适用于各种用例的一系列强大且开发者友好的API,同时保持低成本。立即免费注册这里!