Início → Blog → Quem disse o quê: separando locutores em uma transcrição
Quem disse o quê: separando locutores em uma transcrição
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.
- Videochamadas. O Zoom consegue gravar cada participante em um arquivo de áudio próprio. Teams e Meet não, mas os dispositivos dos participantes conseguem.
- Entrevistas presenciais. Dois celulares, um perto de cada pessoa, iniciados ao mesmo tempo.
- Telefonia. A maioria das plataformas grava as duas pernas da chamada em separado — isso é uma configuração, não uma limitação.
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ção | Melhor abordagem |
|---|---|
| Entrevista que você está organizando | Dois gravadores, um por pessoa |
| Chamadas de vendas ou suporte | Gravação por perna na plataforma de telefonia |
| Reunião do Zoom que você organiza | Arquivo de áudio separado por participante |
| Gravação estéreo, uma voz por canal | Separar os canais com ffmpeg |
| Conversa de duas pessoas, arquivo misturado | Marcar à mão depois da transcrição |
| Acervo grande que você não controla | Modelo 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átisPerguntas 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
- Como transcrever uma entrevista sem digitá-la à mão — Transformando entrevistas gravadas em texto utilizável: como gravar, o que fazer com duas vozes, marcações de tempo para citações e como conferir antes de publicar.
- Como transcrever gravações de reuniões e ter atas utilizáveis — Transforme gravações do Zoom, Teams e Meet em texto pesquisável e atas estruturadas: onde está o arquivo, como transcrevê-lo e como extrair decisões e tarefas.
- Como transcrever a gravação de uma chamada — Guia passo a passo para transformar a gravação de uma ligação em texto pela API em poucos minutos. Com exemplos em Python e C# e a lista de erros mais comuns.