¡Una API para transcribir audio con OpenAi's Whisper Garm V3! Impulsado por? Transformers, Optimum & Flash-Attn
Características:
Basado en el proyecto Insanely Fast Whisper CLI. Compruébelo si desea configurar este proyecto localmente o comprender los antecedentes de Whisper increíblemente rápido.
Este proyecto se centra en proporcionar una API Fast Whisper implementable con infraestructura en la nube con GPU para casos de uso de producción escalables.
¡Con el lanzamiento reciente del servicio de GPU de Fly.io, he configurado el archivo de configuración de Fly para implementar fácilmente en máquinas de mosca! Sin embargo, puede implementar esto en cualquier otro entorno de VM que admita GPU y Docker.
¿Aquí hay algunos puntos de referencia que ejecutamos en Nvidia A100 - 80 GB y Fly.io GPU Infra?
Tipo de optimización | Tiempo para transcribir (150 minutos de audio) |
---|---|
Gran-V3 (Transformadores) ( fp16 + batching [24] + Flash Attention 2 ) | ~ 2 ( 1 min 38 segundos ) |
Gran-V3 (Transformadores) ( fp16 + batching [24] + Flash Attention 2 + diarization ) | ~ 2 ( 3 min 16 segundos ) |
Gran-V3 (transformadores) ( fp16 + batching [24] + Flash Attention 2 + fly machine startup ) | ~ 2 ( 1 min 58 segundos ) |
Gran-V3 (Transformadores) ( fp16 + batching [24] + Flash Attention 2 + diarization + fly machine startup ) | ~ 2 ( 3 min 36 segundos ) |
El tiempo de inicio estimado para la máquina de moscas con GPU y la carga del modelo es de alrededor de ~ 20 segundos. El resto del tiempo se gasta en el cálculo real.
yoeven/insanely-fast-whisper-api:latest
Docker Hub: Yoeven/Insanely-Fast-Whisper-Api
app
en el fly.toml
si lo deseaimage = 'yoeven/insanely-fast-whisper-api:latest'
en fly.toml
solo si desea reconstruir la imagen del Dockerfile
Instale Fly CLI si aún no lo tiene
Solo necesito ejecutar esto la primera vez que lanza una nueva aplicación de mosca
fly launch
Fly se indicará: Would you like to copy its configuration to the new app? (y/N)
. Sí ( y
) para copiar la configuración del repositorio.
Fly se presentará: Do you want to tweak these settings before proceeding
si no tiene nada que ajustar? La mayoría de las configuraciones requeridas ya están configuradas en el archivo fly.toml
. No n
para proceder e implementar.
La primera vez que lo implementa llevará algún tiempo ya que la imagen es enorme. Las implementaciones posteriores serán mucho más rápidas.
Ejecute lo siguiente si desea configurar la diarización del altavoz o un token de autenticación para asegurar su API:
fly secrets set ADMIN_KEY= < your_token > HF_TOKEN= < your_hf_key >
Ejecute fly secrets list
para verificar si existen los secretos.
Para obtener la token facial de abrazos para la diarización del altavoz, debe hacer lo siguiente:
pyannote/segmentation-3.0
Condiciones del usuariopyannote/speaker-diarization-3.1
condiciones del usuariohf.co/settings/tokens
.Tu API debería verse algo así:
https://insanely-fast-whisper-api.fly.dev
Ejecutar fly logs -a insanely-fast-whisper-api
para ver los registros en tiempo real de su máquina de moscas.
Dado que esta es una aplicación dockerizada, puede implementarla en cualquier proveedor de nube que admita Docker y GPU con algunos ajustes de configuración.
Jigsawstack proporciona un montón de poderosas API para varios casos de uso y mantiene bajos los costos. Este proyecto está disponible como una API totalmente administrada aquí con una mejor escalabilidad de la nube para una rentabilidad y un alto tiempo de actividad. ¡Regístrese aquí gratis!
Si hubiera configurado el secreto de entorno ADMIN_KEY
. Deberá pasar x-admin-api-key
en el encabezado con el valor de la clave que estableció anteriormente.
Si se despliega en Fly, la URL base debería verse algo así:
https://{app_name}.fly.dev/{path}
Dependiendo del proveedor de la nube que implementa, la URL base será diferente.
/
Transcribir o traducir audio al texto
Nombre | valor |
---|---|
URL (requerido) | URL de audio |
tarea | transcribe , translate predeterminado: transcribe |
idioma | None , en , otros idiomas predeterminados: None detecta el idioma automático |
lote_size | Número de lotes paralelos que desea calcular. Reduzca si enfrenta OOMS. Valor predeterminado: 64 |
marca de tiempo | chunk , word predeterminada: chunk |
diarise_audio | Diare los clips de audio por altavoz. Deberá establecer hf_token. Valor predeterminado: false |
webhook | Webhook POST Llame sobre la finalización o el error. Valor predeterminado: None |
webhook.url | URL para enviar el webhook |
Webhook.header | Encabezados para enviar con el webhook |
is_async | Ejecute la tarea en segundo plano y envía resultados a Webhook URL. true , false predeterminado: false |
Managed_task_id | ID de tarea personalizada utilizada para hacer referencia a la tarea continua. Valor predeterminado: uuid() v4 will be generated for each transcription task |
/tasks
Obtenga todas las tareas de transcripción activa, tanto tareas de antecedentes como tareas continuas
/status/{task_id}
Obtenga el estado de una tarea, las tareas completadas se eliminarán de la lista que puede lanzar un error
/cancel/{task_id}
Cancelar la tarea de fondo de Async. Solo los trabajos de transcripción creados con is_async
establecido en true
se pueden cancelar.
# clone the repo
$ git clone https://github.com/jigsawstack/insanely-fast-whisper-api.git
# change the working directory
$ cd insanely-fast-whisper-api
# install torch
$ pip3 install torch torchvision torchaudio
# upgrade wheel and install required packages for FlashAttention
$ pip3 install -U wheel && pip install ninja packaging
# install FlashAttention
$ pip3 install flash-attn --no-build-isolation
# generate updated requirements.txt if you want to use other management tools (Optional)
$ poetry export --output requirements.txt
# get the path of python
$ which python3
# setup virtual environment
$ poetry env use /full/path/to/python
# install the requirements
$ poetry install
# run the app
$ uvicorn app.app:app --reload
Las máquinas de moscas son cargadas por el segundo y pueden tomar hasta 15 minutos de inactividad antes de que decida apagarlo. Puede apagar la máquina cuando haya terminado con la API para ahorrar costos. Puede hacer esto enviando una solicitud POST
al siguiente punto final:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
Encabezado de autorización:
Authorization Bearer <fly_token>
Lear más aquí
Este proyecto es parte de Jigsawstack, un conjunto de API poderosas y amigables para los desarrolladores para varios casos de uso al tiempo que mantiene los costos bajos. ¡Regístrese aquí gratis!