Pipeline de Transcrição e Separação de Falantes

← voltar ao portfólio

07/2026 · 1 semana

Transcreve reuniões em português e separa os falantes, com dois métodos de diarização e queda automática para CPU.

Pythonfaster-whisperpyannote.audioResemblyzerscikit-learnCUDAffmpeg

O problema

Transcrever uma reunião resolve metade do problema: um bloco de texto sem indicação de quem falou não permite atribuir decisão, compromisso ou objeção a ninguém. Os serviços que fazem as duas coisas exigem enviar o áudio para fora, o que nem sempre é aceitável para conversa de trabalho.

A arquitetura

O áudio é extraído em 16 kHz mono, que é a condição do modelo de transcrição, e passa por Whisper large-v3 em float16 na GPU, com queda automática para int8 em CPU quando não há placa. A separação de falantes tem dois caminhos, escolhidos por troca explícita. O primeiro usa embeddings de voz com agrupamento hierárquico, ou similaridade de cosseno contra amostras de referência de cada pessoa: roda offline, não exige token e não envia áudio para lugar nenhum. O segundo usa um modelo de estado da arte que separa automaticamente e trata sobreposição de vozes, ao custo de exigir token e aceite de licença. A saída sai em quatro formatos da mesma execução — áudio normalizado, JSON por segmento com início, fim, texto e falante, transcrição legível com marcação de tempo, e legenda — para servir tanto a leitura humana quanto a processamento posterior.

O resultado

Pipeline reutilizável que processa vídeo ou áudio de reunião e entrega transcrição com falante identificado, aplicado a uma conferência real de 31 minutos. O projeto documenta o que degrada o resultado em vez de esconder: sobreposição de vozes e ruído reduzem a precisão dos dois estágios, e o rótulo de falante é arbitrário — o sistema separa vozes, não sabe nomes, e a nomeação é do operador.

Do vídeo à legenda com falante, com os dois caminhos de diarização
Do vídeo à legenda com falante, com os dois caminhos de diarização

🔒 Código-fonte

git clone https://git.programandosolucoes.com.br/git/repos/transcricao-diarizacao.git

Código-fonte privado. As credenciais de leitura são liberadas sob solicitação — me chame para conversar sobre o projeto.

Carlos Alberto — carlosalberto4ti@gmail.com · +55 11 2615-2880