Uma API para transcrever o áudio com o Whisper Large V3 do OpenAI! Distribuído por ? Transformers, ideal e flash-attn
Características:
Baseado no projeto CLI sussurrado insanamente rápido. Confira se você quiser configurar este projeto localmente ou entenda o pano de fundo de um branco insanamente rápido.
Este projeto está focado no fornecimento de uma API de sussurro rápida em chamas com o Docker na infraestrutura de nuvem com GPUs para casos de uso de produção escalonáveis.
Com o lançamento recente do Serviço de GPU Fly.io, eu configurei o arquivo de configuração do FLY para implantar facilmente em Machines Fly! No entanto, você pode implantar isso em qualquer outro ambiente de VM que suporta GPUs e Docker.
Aqui estão alguns benchmarks que executamos na NVIDIA A100 - 80 GB e Fly.io GPU Infra?
Tipo de otimização | Hora de transcrever (150 minutos de áudio) |
---|---|
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 ) | ~ 2 ( 1 min 38 s ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization ) | ~ 2 ( 3 min 16 seg ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + fly machine startup ) | ~ 2 ( 1 min 58 s ) |
Large-V3 (Transformers) ( fp16 + batching [24] + Flash Attention 2 + diarization + fly machine startup ) | ~ 2 ( 3 min 36 seg ) |
O tempo de inicialização estimado para a máquina de mosca com a GPU e o carregamento do modelo é de cerca de ~ 20 segundos. O restante do tempo é gasto no cálculo real.
yoeven/insanely-fast-whisper-api:latest
Docker Hub: Yoeven/insanamente rápido-api
app
no fly.toml
se quiserimage = 'yoeven/insanely-fast-whisper-api:latest'
em fly.toml
apenas se você quiser reconstruir a imagem do Dockerfile
Instale a Fly CLI se ainda não o tiver
Só precisa executar isso na primeira vez em que você inicia um novo aplicativo Fly
fly launch
Fly Promp for: Would you like to copy its configuration to the new app? (y/N)
. Sim ( y
) para copiar a configuração do repo.
O Fly solicitará: Do you want to tweak these settings before proceeding
se não tiver nada para se ajustar. A maioria das configurações necessárias já está configurada no arquivo fly.toml
. Não n
para prosseguir e implantar.
A primeira vez que você implantará, levará algum tempo, pois a imagem é enorme. As implantes subsequentes serão muito mais rápidas.
Execute o seguinte se deseja configurar a diarização do alto -falante ou um token de autenticação para proteger sua API:
fly secrets set ADMIN_KEY= < your_token > HF_TOKEN= < your_hf_key >
Execute fly secrets list
para verificar se os segredos existem.
Para obter o token de rosto abraçado para a diarização do alto -falante, você precisa fazer o seguinte:
pyannote/segmentation-3.0
Condições do usuáriopyannote/speaker-diarization-3.1
Condições do usuáriohf.co/settings/tokens
.Sua API deve parecer algo assim:
https://insanely-fast-whisper-api.fly.dev
Execute fly logs -a insanely-fast-whisper-api
para visualizar os logs em tempo real da sua máquina de mosca.
Como este é um aplicativo dockerizado, você pode implantá -lo em qualquer provedor de nuvem que suporta o Docker e o GPUs com alguns ajustes de configuração.
O JigSawStack fornece um monte de APIs poderosas para vários casos de uso, mantendo os custos baixos. Este projeto está disponível como uma API totalmente gerenciada aqui, com escalabilidade em nuvem aprimorada para eficiência de custos e alto tempo de atividade. Inscreva -se aqui de graça!
Se você tivesse configurado o segredo do Ambiente ADMIN_KEY
. Você precisará passar pelo x-admin-api-key
no cabeçalho com o valor da chave que você definiu anteriormente.
Se implantado em mosca, o URL base deve parecer algo assim:
https://{app_name}.fly.dev/{path}
Dependendo do provedor de nuvem para o qual você implantar, o URL base será diferente.
/
Transcreva ou traduza áudio para o texto
Nome | valor |
---|---|
URL (necessário) | URL do áudio |
tarefa | transcribe , translate padrão: transcribe |
linguagem | None , en , outros idiomas padrão: None detecta a linguagem |
batch_size | Número de lotes paralelos que você deseja calcular. Reduza se você enfrentar os Ooms. Padrão: 64 |
Timestamp | chunk , padrão de word : chunk |
diarise_audio | Diarias os clipes de áudio do alto -falante. Você precisará definir hf_token. Padrão: false |
webhook | Webhook POST Chamada na conclusão ou erro. Padrão: None |
webhook.url | URL para enviar o webhook |
Webhook.Header | Cabeçalhos para enviar com o webhook |
is_async | Execute a tarefa em segundo plano e envia resultados para o Webhook URL. true , false Padrão: false |
gerenciado_task_id | ID de tarefa personalizado usado para referenciar a tarefa contínua. padrão: uuid() v4 will be generated for each transcription task |
/tasks
Obtenha todas as tarefas de transcrição ativa, tanto as tarefas de fundo asynces quanto as tarefas contínuas
/status/{task_id}
Obtenha o status de uma tarefa, as tarefas concluídas serão removidas da lista que podem causar um erro
/cancel/{task_id}
Cancelar tarefa de fundo assíncrona. Somente os trabalhos de transcrição criados com is_async
definido como true
podem ser cancelados.
# 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
As máquinas de mosca são carregadas pelo segundo e podem levar até 15 minutos de marcha lenta antes de decidir desligá -lo. Você pode desligar a máquina quando terminar a API para economizar custos. Você pode fazer isso enviando uma solicitação POST
para o seguinte endpoint:
https://api.machines.dev/v1/apps/<app_name>/machines/<machine_id>/stop
Cabeçalho de autorização:
Authorization Bearer <fly_token>
Aprenda mais aqui
Este projeto faz parte do JigSawStack - um conjunto de APIs poderosas e amigáveis para desenvolvedores para vários casos de uso, mantendo os custos baixos. Inscreva -se aqui de graça!