Como transcrever vídeos automaticamente
Otimize seu SaaS de vídeos transcrevendo áudios longos via GPU com baixo custo e altíssima performance.
Por que isso é importante
Como transcrever vídeos automaticamente. Otimize seu SaaS de vídeos transcrevendo áudios longos via GPU com baixo custo e altíssima performance.
O desafio da transcrição em projetos com vídeo
Quando você constrói um SaaS que gera títulos e capítulos automaticamente de vídeos,
precisa extrair o áudio e transcrever com precisão. No começo, a API do Whisper da
OpenAI parecia uma boa ideia, mas as limitações de tamanho, latência e custo apareceram
logo depois.
Por que não usar diretamente APIs comerciais?
APIs como Whisper e Gemini funcionam, mas têm limites de tamanho ou cobram caro por
segundo de áudio. Acelerar o áudio para pagar menos compromete a qualidade da
transcrição. Foi aí que rodar o próprio modelo se mostrou muito mais eficiente.
APIs comerciais (Whisper, Gemini)
Serviços prontos de terceiros que recebem áudio e retornam a transcrição
+ Prós
- • Pronto para uso
- • Fácil integração
− Contras
- • Custo elevado por segundo
- • Latência em vídeos longos
- • Customização limitada
Modelo WhisperX hospedado
Hospedagem manual de modelo open-source com otimizações
+ Prós
- • Customização completa
- • Controle da performance
- • Custo sob demanda
− Contras
- • Maior esforço de setup
- • Necessidade de GPU dedicada
WhisperX e WhisperJax: comparando os modelos open-source
WhisperJax e WhisperX são versões otimizadas do Whisper da OpenAI. O WhisperX traz dois
recursos poderosos: timestamps precisos por palavra e diarização (ele identifica quem
falou o quê em podcasts ou entrevistas).
Onde e como hospedar seu modelo WhisperX
Hospedar localmente não rola em infra serverless comum ou máquinas sem potência. Por
isso, plataformas como Replicate ou Modal rodam em GPU sob demanda. Escolhi o Modal
porque você pode configurar diferentes GPUs e executar qualquer código Python como se
fosse uma Lambda Serverless.
Como moldar uma arquitetura performática e econômica
No começo, o Trigger fazia uma chamada síncrona ao Modal e aguardava até finalizar. Isso
gerava cobrança mesmo quando o código estava parado, esperando. Com a arquitetura
assíncrona, o Trigger dispara uma requisição para o Modal com uma callback URL. Quando
termina, o Modal aciona essa URL e o workflow continua — sem cobrar tempo ocioso.
- Passo 1: Usuário faz upload do vídeo na aplicação.
- Passo 2: Trigger envia uma POST para o endpoint FastAPI
hospedado no Modal com a URL do áudio e uma callback URL. - Passo 3: O serviço gera o requestId e dispara o job de
transcrição rodando em GPU no background. - Passo 4: Ao terminar, a transcrição é enviada pela callback
para o Trigger, que então continua o fluxo do job.
FastAPI para criar o endpoint no Modal
FastAPI cuida da orquestração HTTP fazendo duas coisas: expõe um endpoint para receber os
dados do áudio e a URL de callback, e roda um serviço separado que carrega o WhisperX,
transcreve e dispara o webhook. O endpoint responde na hora com 202 Accepted, enquanto a
transcrição processa em background.
Como a transcrição funciona na prática com WhisperX
Depois de baixar o áudio, o WhisperX entra em ação usando a GPU. O modelo Whisper Large
V2 se mostrou muito preciso, acertando até termos técnicos como HTTP, RabbitMQ e CI/CD.
O resultado traz timestamps, idioma detectado e falas separadas com precisão por palavra.
Testando localmente usando Webhook.site
Durante o desenvolvimento, sites como webhook.site simulam uma callback URL pra você
verificar se a transcrição está chegando direitinho. Isso te deixa iterar rápido antes de
integrar tudo com o Trigger.
Reduzindo custos com Wait Points do Trigger.dev
O Wait Point do Trigger suspende o job até a callback ser disparada. Isso corta a
cobrança do tempo de espera — você só paga pelo tempo real de execução da transcrição.
Resultados e observações finais
Essa abordagem reduz custos de forma significativa, deixa o sistema mais rápido e elimina
as limitações de APIs comerciais. A lógica com callbacks escala muito bem — cada job roda
em containers independentes com GPU, tudo paralelo.
Atenção
Máquinas com GPU têm cold start de 15 a 30 segundos. Lembre disso ao lidar com os
primeiros requests ou ambientes pouco ativos.
Dica valiosa
Use o WhisperX com "large-v2" e configure sua instância do Modal com no mínimo 10GB de
VRAM, como a NVIDIA A10G, para performance estável.
Cuidado com concorrência
Garanta que seu job de transcrição não sobrescreva ou compartilhe arquivos temporários
entre execuções simultâneas pra evitar conflito de dados.
Checklist de Implementação
- Endpoint FastAPI funcional com rota assíncrona habilitada
- Job de transcrição totalmente desacoplado da aplicação principal
- Transcrição com WhisperX Large V2 processando via GPU
- Callback acionando retorno no Trigger com status
- Billing otimizado usando WaitPoints para reduzir custos
- Teste local com webhook.site validando ambiente antes de produção
Perguntas frequentes
Por que não usar diretamente APIs comerciais?
APIs como Whisper e Gemini funcionam, mas têm limites de tamanho ou cobram caro por segundo de áudio. Acelerar o áudio para pagar menos compromete a qualidade da transcrição. Foi aí que rodar o próprio modelo se mostrou muito mais eficiente.
Onde e como hospedar seu modelo WhisperX
Hospedar localmente não rola em infra serverless comum ou máquinas sem potência. Por isso, plataformas como Replicate ou Modal rodam em GPU sob demanda. Escolhi o Modal porque você pode configurar diferentes GPUs e executar qualquer código Python como se fosse uma Lambda Serverless.
Como moldar uma arquitetura performática e econômica
No começo, o Trigger fazia uma chamada síncrona ao Modal e aguardava até finalizar. Isso gerava cobrança mesmo quando o código estava parado, esperando. Com a arquitetura assíncrona, o Trigger dispara uma requisição para o Modal com uma callback URL. Quando termina, o Modal aciona essa URL e o workflow continua — sem cobrar tempo ocioso.
Como a transcrição funciona na prática com WhisperX
Depois de baixar o áudio, o WhisperX entra em ação usando a GPU. O modelo Whisper Large V2 se mostrou muito preciso, acertando até termos técnicos como HTTP, RabbitMQ e CI/CD. O resultado traz timestamps, idioma detectado e falas separadas com precisão por palavra.