NestJS + Swagger + OAuth2 + BullMQ + Sherpa-ONNX

Diarização de áudio e vídeo

O navegador envia a mídia, a API cria um job no BullMQ, workers isolados extraem somente o áudio e identificam os locutores, e a página acompanha o status antes de seguir para a transcrição.

Verificando API… Sem token OAuth Verificando Chrome…
0

API e OAuth2

Obtenha um token pelo fluxo client_credentials antes de enviar o áudio ou vídeo.

Abrir Swagger
Informe o Client Secret e obtenha um token.
1

Áudio ou vídeo

Grave pelo microfone ou selecione um arquivo de áudio ou vídeo existente.

Nenhuma gravação em andamento. 00:00
2

Diarização pela API

Áudio ou vídeo é enviado com Bearer Token. Em vídeos, o FFmpeg seleciona somente a primeira faixa de áudio; imagens, legendas e metadados são ignorados. A diarização roda depois sobre esse áudio.

Aguardando áudio ou vídeo e token. 0%
3

Transcrição pelo Chrome

Os intervalos retornados pela API são reproduzidos um por vez para a Web Speech API.

Aguardando a diarização. 0%
Segurança e funcionamento

Após o POST, a API devolve um jobId e a página consulta o status até a conclusão. O arquivo aguardando worker fica temporariamente em /dev/shm (RAM), não no Redis nem em armazenamento permanente. O worker apaga a entrada assim que extrai a primeira faixa de áudio.

Somente o WAV extraído pode existir temporariamente para a diarização e para a transcrição no Chrome. Ele exige o mesmo Bearer Token e é apagado após a primeira entrega ou ao expirar.

O fluxo client_credentials é indicado para clientes internos e servidores. Em uma página pública de produção, prefira Authorization Code + PKCE com um provedor como Keycloak.