InícioBlog → Quem disse o quê: separando locutores em uma transcrição

Quem disse o quê: separando locutores em uma transcrição

Publicado em 2026-08-18 · 5 min de leitura

Esta é a pergunta mais comum sobre transcrição e a que tem a resposta menos satisfatória: uma gravação única e misturada volta como um fluxo de texto, sem etiquetas. A boa notícia é que na maioria das situações reais dá para obter a separação de qualquer forma — normalmente mudando como você grava, não como transcreve.

O que a API faz e o que não faz

Resposta direta, para que nada seja construído sobre uma suposição errada: o endpoint de transcrição devolve texto e segmentos com tempos. Ele não devolve etiquetas de locutor, e nenhum parâmetro liga isso.

Diarização — decidir quantas pessoas falam e qual delas disse cada frase — é uma tarefa separada do reconhecimento. É genuinamente difícil com falas sobrepostas, vozes parecidas e salas ruidosas, e quem faz isso são modelos diferentes.

Então a pergunta prática não é «como habilito isso», e sim «como organizo as coisas para não precisar disso».

Opção 1: grave cada pessoa separadamente

De longe a melhor opção, e a mais barata — custa apenas uma decisão tomada antes de gravar.

Transcreva cada arquivo por si e você tem uma separação perfeita. Intercale por tempo para reconstruir a conversa:

linhas = []
for nome, path in [("Entrevistador", "a.mp3"), ("Convidado", "b.mp3")]:
    with open(path, "rb") as f:
        r = client.audio.transcriptions.create(
            model="whisper-1", file=f, response_format="verbose_json")
    linhas += [(s.start, nome, s.text.strip()) for s in r.segments]

for inicio, nome, texto in sorted(linhas):
    print(f"[{int(inicio)//60:02d}:{int(inicio)%60:02d}] {nome}: {texto}")

Opção 2: separe os canais do estéreo

Se a gravação é estéreo com uma pessoa por canal — comum em telefonia e em alguns gravadores — a separação já existe dentro do arquivo:

ffmpeg -i chamada.wav -map_channel 0.0.0 esquerdo.wav -map_channel 0.0.1 direito.wav

Depois transcreva os dois arquivos e intercale como acima. Antes, confirme que os canais estão mesmo separados — abra o arquivo em um player e ouça cada lado. Um estéreo com as duas vozes nos dois canais não ganha nada com isso.

Opção 3: marque depois

Numa conversa de duas pessoas os turnos se alternam de forma previsível e os papéis costumam ser óbvios pelo conteúdo — um pergunta, o outro responde. Ler uma hora de transcrição e acrescentar nomes leva poucos minutos.

Um modelo de linguagem consegue rascunhar essa marcação a partir do texto, mas trate o resultado como rascunho: ele infere pelo modo de falar, então vai etiquetar errado, com toda a confiança, um trecho em que as duas pessoas concordam entre si. Confira por amostragem contra os tempos antes de publicar qualquer coisa.

Opção 4: um modelo dedicado de diarização

Se você realmente precisa de etiquetagem automática em áudio misturado — um corpus de pesquisa, um acervo de conformidade, reuniões que você não controla — o caminho é um modelo dedicado de diarização, que produz turnos de fala com tempos, depois alinhados aos segmentos da transcrição.

O que isso custa, realisticamente: mais um modelo para rodar e manter, tempo de GPU além da transcrição, e uma precisão que se degrada exatamente onde você mais precisa — em falas sobrepostas e intervenções curtas. É um projeto, não um parâmetro.

Antes de começá-lo, verifique se as opções 1 a 3 cobrem o seu caso. Na prática elas cobrem a maioria.

Qual opção serve a cada situação

SituaçãoMelhor abordagem
Entrevista que você está organizandoDois gravadores, um por pessoa
Chamadas de vendas ou suporteGravação por perna na plataforma de telefonia
Reunião do Zoom que você organizaArquivo de áudio separado por participante
Gravação estéreo, uma voz por canalSeparar os canais com ffmpeg
Conversa de duas pessoas, arquivo misturadoMarcar à mão depois da transcrição
Acervo grande que você não controlaModelo dedicado de diarização

Mais uma coisa que vale checar antes de investir: com que frequência alguém realmente usa as etiquetas de locutor. Para atas de reunião e controle de qualidade de chamadas, as decisões importam muito mais que quem as pronunciou, e boa parte do trabalho de diarização acaba sendo construída para um requisito que ninguém tinha.

Teste com as suas próprias gravações. O cadastro leva um minuto e os minutos gratuitos bastam para avaliar a qualidade.

Obter uma chave de API grátis

Perguntas frequentes

A API consegue etiquetar os locutores automaticamente?

Não. Ela devolve texto e segmentos com tempos; etiquetas de locutor são uma tarefa separada e nenhum parâmetro as habilita. A resposta prática é gravar os participantes em separado.

Qual a forma mais fácil de obter a separação?

Gravar cada locutor em um arquivo ou canal próprio. Transcrevê-los de forma independente dá a separação exata e não custa nada além de organizar a gravação.

Como junto faixas separadas de volta em uma conversa?

Peça verbose_json para cada faixa, marque cada segmento com o nome do locutor e ordene todos os segmentos pelo tempo de início.

Um modelo de linguagem consegue descobrir quem falou?

Ele consegue rascunhar uma marcação a partir do modo de falar, mas infere em vez de saber — vai errar nos trechos em que as duas pessoas dizem coisas parecidas. Trate como rascunho e confira por amostragem no áudio.

Vale rodar um modelo dedicado de diarização?

Só para acervos que não dá para regravar — um corpus de pesquisa ou material de conformidade. Significa mais um modelo, mais tempo de GPU e a precisão mais fraca justamente em falas sobrepostas.

Leitura relacionada