Pular para o conteúdo

O que é diarização de locutores? Como funciona e casos de uso

Escrito por
Jack Limebear
Publicado
Última atualização

OuvirOuça este artigo

A diarização de locutores recebe um fluxo de áudio com um número desconhecido de pessoas falando e produz uma linha do tempo de segmentos identificados: locutor A de 0:00 a 0:42, locutor B de 0:42 a 1:15 e locutor A novamente a partir de 1:15. O sistema não sabe quem são os locutores, mas sabe que são pessoas diferentes e mantém os rótulos consistentes durante toda a gravação.

Esse processo torna o áudio com vários locutores utilizável. Anotações de reuniões, análises de call center, transcrições de entrevistas, edição de podcasts e registros jurídicos dependem de saber não apenas o que foi dito, mas também quem disse. 

Este guia explica como a diarização funciona, como ela se diferencia de técnicas relacionadas, como segmentação e identificação, quais ferramentas open source realizam essa tarefa e como medir se um sistema de diarização está funcionando bem.

Resumo

  • A diarização de locutores segmenta uma gravação de áudio conforme quem está falando, produzindo turnos de fala identificados sem nomear ninguém.
  • A diarização de locutores é diferente da segmentação de locutores, que identifica quando os locutores mudam, e da identificação de locutores, que associa vozes a nomes reais.
  • O desempenho da diarização é medido pela taxa de erro de diarização (DER), para a precisão geral, e pela taxa de erro de Jaccard (JER), para verificar se essa precisão se mantém para todos os locutores.

O que é diarização de locutores e como ela funciona?

A diarização de locutores é o processo de dividir um fluxo de áudio em segmentos de acordo com quem está falando. Uma transcrição com diarização de locutores identifica cada segmento de áudio com a identidade de um locutor. Em resumo, ela responde à pergunta: "Quem falou quando?" 

Uma transcrição bruta de uma reunião traz as palavras, enquanto uma transcrição diarizada informa que o locutor 1 fez a pergunta, o locutor 2 respondeu e o locutor 3 interrompeu no meio.

A maioria dos sistemas de diarização de locutores segue um pipeline com quatro etapas:

Diarization pipeline: voice detection, segmentation, embeddings, clustering, and anonymous labels.

Vamos detalhar melhor essas etapas.

Detecção de atividade de voz (VAD)

A detecção de atividade de voz separa a fala de todo o resto: silêncio, ruído de fundo, música ou cliques de teclado. Apenas os segmentos de áudio que realmente contêm fala seguem para a próxima etapa.

Se houver erros nesta etapa, eles se propagam pelas demais etapas.

Segmentação

Esses segmentos que contêm fala são divididos nos pontos em que o locutor provavelmente muda, por exemplo, quando há uma mudança no tom de voz, uma pausa entre turnos ou uma alteração no padrão de entonação. A maioria dos sistemas detecta esses pontos de mudança diretamente, comparando as características acústicas de cada lado de uma possível fronteira. 

Algumas ferramentas de segmentação dividem o áudio em janelas curtas e uniformes, como trechos de dois segundos, e depois usam a etapa de agrupamento para unir janelas adjacentes que pertencem ao mesmo locutor.

Extração de embeddings

Cada segmento de fala é convertido em um embedding de locutor, ou seja, um vetor numérico que captura as características vocais de quem está falando naquele segmento. Embeddings do mesmo locutor ficam próximos no espaço vetorial, enquanto embeddings de locutores diferentes ficam mais distantes.

Agrupamento

Os embeddings são agrupados para que segmentos do mesmo locutor compartilhem um rótulo. Em geral, o sistema não sabe antecipadamente o número de locutores, então o algoritmo de agrupamento precisa inferi-lo, decidindo se um segmento com som ligeiramente diferente pertence a um novo locutor ou à mesma pessoa falando em outro tom.

Embeddings cluster same-speaker samples together, but speaker count is unknown in advance in speaker diarization

O resultado é um conjunto de rótulos de locutores associados a intervalos de tempo, geralmente combinado com uma transcrição. Por exemplo, uma transcrição diarizada de uma ligação entre duas pessoas seria assim:

  • [speaker_0] Obrigado por ligar. Como posso ajudar?
  • [speaker_1] Olá, estou ligando por causa da minha fatura do mês passado.
  • [speaker_0] Claro, vou verificar isso.

Os rótulos são anônimos e consistentes internamente. Speaker_0 é a mesma voz sempre que aparece, mas o sistema não sabe que speaker_0 se chama Fergal. Associar identidades reais é uma tarefa diferente, abordada a seguir.

Principais diferenças entre segmentação e identificação de locutores

A segmentação e a identificação de locutores se sobrepõem bastante à diarização, o que faz com que os três termos sejam frequentemente confundidos.

Cada um resolve um problema um pouco diferente, por isso entender a distinção é importante ao avaliar ferramentas.

Segmentation
Question it answers
Where do speaker changes occur?
Output
Change-point boundaries
Requires contextual information
No
Diarization
Question it answers
Who spoke when (anonymous labels)?
Output
Labeled segments (speaker_0, speaker_1)
Requires contextual information
No
Identification
Question it answers
Who are the speakers (real identities)?
Output
Named speakers matched to voiceprints
Requires contextual information
Yes

Como explicamos antes, a segmentação de locutores é uma etapa da diarização que ocorre no início do pipeline. Ela encontra os limites em que o locutor muda de uma voz para outra, sem atribuir rótulos. A segmentação informa que houve uma mudança em 0:42. A diarização parte disso, agrupando os segmentos resultantes e gerando uma saída totalmente identificada, para que você saiba que a voz em 1:15 é a mesma que falou no início da gravação.

A identificação de locutores é um recurso separado da diarização, mas frequentemente é combinada a ela. A identificação determina quem são realmente esses locutores. Um sistema de identificação compara vozes com impressões vocais cadastradas, usando uma referência de locutores conhecidos para retornar identidades. Após a identificação, speaker_0 e speaker_1 passam a ser "Fergal" e "Eric".

Muitos produtos combinam essas ferramentas para gerar uma transcrição final mais completa. Uma ferramenta de reuniões pode fazer isso automaticamente — possivelmente usando informações como o nome que alguém definiu no Teams ou Meet — para atribuir pelo nome as contribuições de cada participante sem revisão manual. 

Comparison of segmentation, speaker diarization, and identification; diarize first, then identify.

Ferramentas e bibliotecas open source populares para diarização de locutores

Vale considerar ferramentas open source de diarização de locutores quando você precisa de controle, flexibilidade ou implantação local. A melhor escolha depende do tipo de áudio com que você trabalha — ligações telefônicas, reuniões, podcasts ou transmissões —, dos seus requisitos de latência e do tempo de engenharia que pode investir. 

Estas são algumas das opções mais populares.

Pyannote.audio

Pyannote.audio é um toolkit baseado em PyTorch desenvolvido especificamente para diarização de locutores e uma das opções open source mais usadas. Ele oferece pipelines pré-treinados que abrangem toda a estrutura de diarização, incluindo VAD, segmentação, embeddings e agrupamento, além dos componentes necessários para treinar ou fazer fine-tune de modelos com seus próprios dados. 

Seus modelos pré-treinados são distribuídos pelo Hugging Face e costumam ser usados como camada de diarização em projetos maiores de transcrição.

WhisperX

WhisperX combina o Whisper da OpenAI ASR com diarização e alinhamento forçado. O Whisper, por si só, produz boas transcrições, mas não atribui rótulos de locutores, e seus timestamps são apenas aproximados. O WhisperX adiciona alinhamento de timestamps no nível das palavras e integra diarização baseada em pyannote, produzindo transcrições em que cada palavra tem um timestamp preciso e um rótulo de locutor.

NVIDIA NeMo

NVIDIA NeMo inclui diarização como parte de seu framework mais amplo de IA conversacional. Ele oferece modelos de diarização treináveis, incluindo abordagens end-to-end que lidam com fala sobreposta, e foi desenvolvido para equipes que criam sistemas de fala personalizados em escala com infraestrutura de GPU.

Cada uma dessas ferramentas exige que você gerencie a infraestrutura de diarização, incluindo implantação, escalabilidade, monitoramento e atualizações de modelos. Para equipes que não querem essa sobrecarga operacional, APIs gerenciadas de diarização de fala oferecem uma alternativa mais simples. Elas podem se integrar aos workflows existentes ou lidar com todo o pipeline de diarização, sendo adequadas para casos de uso em produção, como análises de suporte ao cliente, transcrição de reuniões e processamento de podcasts.

Diarização em tempo real: desafios e casos de uso

A diarização em tempo real é consideravelmente mais difícil do que a diarização de uma gravação concluída, porque o sistema precisa tomar decisões com contexto incompleto.

Um sistema offline analisa toda a gravação antes de tomar qualquer decisão. Ele pode comparar uma voz no minuto 2 com uma voz no minuto 40 e decidir com confiança que são do mesmo locutor, pois tem os dois momentos disponíveis ao mesmo tempo. Um sistema em tempo real não tem esse privilégio: precisa identificar a fala no instante em que ela chega, sem acesso ao que será dito em seguida e com pouca ou nenhuma chance de revisar uma decisão depois de tomada. 

Essa ausência de contexto futuro torna três problemas específicos muito mais difíceis de resolver em tempo real:

  • Latência vs. precisão: Sem poder analisar toda a conversa, cumprir prazos de resposta mais curtos reduz diretamente a precisão.
  • Fala sobreposta: Quando as pessoas falam ao mesmo tempo, um sistema capaz de reprocessar o áudio poderia separá-las. Um sistema em tempo real precisa atribuir tudo a um único rótulo ou usar, na hora, modelos especializados que reconhecem sobreposições.
  • Enunciados curtos: Um "sim" ou "pode falar" rápido quase não dá ao sistema voz suficiente para analisar e, sem contexto ao redor para usar como apoio, ele ainda precisa atribuir um rótulo imediatamente.

Apesar da dificuldade, algumas aplicações não podem esperar uma gravação terminar. Legendagem ao vivo para reuniões e transmissões precisa de rótulos de locutores enquanto as pessoas falam. Software para call center que oferece orientações a agentes durante a chamada precisa saber, em tempo real, quais palavras o cliente está usando. Agentes de voz que lidam com chamadas com vários participantes precisam acompanhar quem está perguntando o quê sem atrasos. Em todos esses casos, um sistema um pouco menos preciso, mas imediato, é melhor do que um mais preciso, porém atrasado.

Para cargas de trabalho que não exigem de fato rótulos em tempo real, como análises, revisão de conformidade e geração de transcrições, a diarização em lote continua sendo a melhor escolha, pois é significativamente mais precisa.

Como avaliar o desempenho da diarização de locutores

Duas métricas são mais importantes ao medir a precisão da diarização: a taxa de erro de diarização (DER), que representa a precisão geral, e a taxa de erro de Jaccard (JER), que verifica se essa precisão se mantém para todos os locutores.

A DER calcula especificamente a fração do tempo total de fala atribuída incorretamente. Ela combina três tipos de erro:

  • Falso alarme de fala: O sistema identificou um segmento como fala quando ninguém estava falando.
  • Fala não detectada: Alguém estava falando, mas o sistema identificou como silêncio.
  • Confusão de locutor: A fala foi detectada, mas atribuída ao locutor errado.

DER = (falso alarme + fala não detectada + confusão de locutor) / duração total da fala

Uma DER de 10% significa que os erros equivalem a um décimo do tempo total de fala, considerando esses três tipos. Quanto menor, melhor, e as pontuações só podem ser comparadas quando medidas nos mesmos dados e nas mesmas condições. A DER varia muito conforme a qualidade do áudio, o número de locutores e o volume de sobreposição na gravação.

A taxa de erro de Jaccard (JER) mede a precisão da diarização de cada locutor separadamente e, depois, calcula a média entre todos os locutores. Para cada locutor de referência, o avaliador encontra o rótulo de locutor mais próximo do sistema e compara o tempo em que eles se sobrepõem corretamente com o tempo total atribuído a qualquer um dos dois.

Por exemplo, imagine uma reunião de 60 minutos em que o locutor A fala por 50 minutos e o locutor B fala por 10. Um sistema de diarização identifica corretamente 48 dos 50 minutos do locutor A, mas apenas 4 dos 10 minutos do locutor B. A DER geral ainda pode parecer relativamente boa porque a maior parte da reunião é do locutor A. A JER dá o mesmo peso ao resultado ruim do locutor B, pois avalia os locutores A e B de forma independente antes de calcular a média das pontuações.

JER_speaker = 1 - (correct_overlap / (ref_time + sys_time - correct_overlap))

A JER final é a média dessas taxas de erro por locutor:

JER = (1 / N) * Σ[JER_speaker_i]  para i = 1..N

Acompanhar DER e JER oferece uma visão mais completa da precisão da diarização: a DER mostra a precisão geral, e a JER indica se essa precisão se mantém para todos os participantes, inclusive quem fala menos.

Testes com áudio representativo da produção

Ao avaliar um sistema de diarização de locutores, calcule DER e JER em áudios que correspondam às suas condições reais de implantação: número típico de locutores, qualidade do áudio e quantidade de conversas simultâneas. 

Pontuações de benchmarks publicados podem ser medidas em conjuntos de dados limpos e controlados, como gravações de estúdio, que raramente correspondem ao som de gravações reais de chamadas ou reuniões ao vivo. Um sistema que tem bom desempenho em benchmarks ainda pode ter resultados significativamente inferiores em áudios do mundo real, com ruído e sobreposições. Teste seus próprios dados antes de escolher um produto de diarização.

Comece a usar a ElevenAPI para diarização de locutores

Se você está pronto para criar um recurso de transcrição com suporte a vários locutores, Scribe v2 da ElevenLabs disponibiliza a diarização de locutores por meio de uma única API de Speech to Text. Envie áudio ao endpoint com diarize=true, e a resposta JSON identifica cada palavra com um ID de locutor, para até 32 locutores, em mais de 90 idiomas e em arquivos de até 10 horas.

Duas opções ampliam a saída padrão de diarização. Para gravações de chamadas, detect_speaker_roles=true identifica os locutores como agente e cliente em vez de números anônimos. Se seu workspace tiver perfis de locutores registrados, use_speaker_library=true poderá comparar os locutores detectados com vozes cadastradas, unindo diarização e identificação em uma única solicitação. 

Um parâmetro de limite de diarização permite ajustar o equilíbrio entre dividir demais e agrupar locutores. E quando os locutores já estão isolados em canais de áudio separados, como em gravações estéreo de chamadas, a transcrição multicanal atribui locutores por canal e ignora a diarização por completo.

O guia rápido de Speech to Text apresenta passo a passo a primeira integração. Para implantações regulamentadas, a plataforma está em conformidade com SOC 2, ISO 27001, PCI DSS L1 e HIPAA, com residência de dados na UE e modo de retenção zero disponíveis.

Tudo pronto para incluir a diarização de locutores nos seus sistemas? Comece obtendo sua chave de API ou confira a documentação da ElevenLabs para saber mais.

Perguntas frequentes

Artigos relacionados

Crie com o áudio de IA da mais alta qualidade