O Whisper Notes agora identifica os falantes

28 de julho de 2026
·
8 min read
·Whisper Notes Team

Uma transcrição mostra o que foi dito. Em uma entrevista, reunião ou podcast, a outra metade é saber quem disse cada trecho. Na investigação da fala, este problema chama-se diarização de falantes. Desde as versões iPhone 1.8.5, Mac App Store 1.3.2 e Mac por download direto 1.5.1, o Whisper Notes executa a diarização inteiramente no dispositivo.

Neste artigo, explicamos como funciona, apresentamos os resultados do nosso benchmark face a uma referência gerada na nuvem e descrevemos o único caso de falha que não conseguimos resolver só com engenharia — e o que fizemos em alternativa.

O que faz

Abra uma nota — uma gravação, um arquivo de áudio ou vídeo importado, ou uma gravação de reunião — e toque no botão de falantes. Alguns segundos depois, cada parágrafo mostra uma identificação do falante e uma marca de tempo.

Diarização de falantes no Whisper Notes para Mac: transcrição de podcast com identificação e marcas de tempo, processada no aparelho Identificação de falantes no Whisper Notes para iPhone: transcrição com nomes e marcas de tempo por pessoa

Identificação de falantes no Mac e no iPhone. Ao tocar em uma frase, a reprodução vai até aquele momento.

Os nomes começam como Falante 1 e Falante 2. Ao renomear um deles, toda a transcrição é atualizada. Toque em qualquer frase para mover a reprodução de áudio ao momento exato; assim é simples confirmar uma citação pela voz original.

Renomear um falante no Whisper Notes atualiza a identificação em toda a transcrição

Renomear um falante atualiza todos os parágrafos da nota.

Nas gravações de reuniões, a identificação de falantes roda automaticamente quando a chamada termina; você pode desativá-la em Ajustes. Os nomes são mantidos na exportação: Copiar transcrição com falantes leva esses nomes para a área de transferência, e os arquivos SRT e VTT também os incluem nas legendas.

A diarização analisa vozes, não com palavras. Por isso, comporta-se da mesma forma nos mais de 100 idiomas que o app transcreve.

Um modelo de 19 MB no Neural Engine

A diarização responde a «quem falou e quando» em três passos. Primeiro, divide o áudio em segmentos com voz. Depois, transforma cada segmento em uma impressão vocal: um vetor compacto que descreve a voz, e não as palavras. Por fim, agrupa as impressões; os segmentos no mesmo grupo recebem a mesma identificação.

O Whisper Notes usa o pipeline community-1 da pyannote, convertido para Core ML para que ambas as fases sejam executadas no Neural Engine. O download único ocupa 19 MB, e uma conversa de 5.7 minutos leva de 2 a 4 segundos em um Mac da série M.

Áudio → segmentos com voz → impressões vocais → grupos → etiquetas

Todas as etapas rodam no aparelho.

Isso importa ainda mais na diarização do que na transcrição. Uma impressão vocal é um dado biométrico: identifica uma pessoa como uma impressão digital. Com processamento local, as impressões da sua voz, de seus colegas e das pessoas que você entrevista são calculadas, agrupadas e descartadas no aparelho. Elas nunca são enviadas para lugar nenhum.

O que medimos

Mantemos um benchmark fixo de dois arquivos para a diarização. A referência vem de um serviço na nuvem de ASR e diarização (ElevenLabs) e foi verificada manualmente. A pontuação atribui cada 10 ms de fala a um falante e escolhe a melhor correspondência entre o resultado e a referência. Dois arquivos formam uma amostra pequena: tratamos esses números como indicativos, não definitivos.

O primeiro arquivo representa o caso comum: um podcast em inglês de cinco minutos, com duas vozes claramente diferentes. A maioria das entrevistas, dos podcasts e das reuniões entre duas pessoas é assim.

Podcast em inglês com dois falantes (5 min) Resultado
Atribuição por frame (resolução de 10 ms) 96.7%
Precisão por frase (o que você lê) 99.1%
Tempo de processamento, Neural Engine da série M 2–4 s

Os 0.9% que restam correspondem a três oscilações nos limites das frases, totalizando 3.4 segundos — dentro da resolução da própria referência. Nesse tipo de material, o resultado no aparelho corresponde ao serviço na nuvem que produziu nossa referência.

O caso difícil

O segundo arquivo é difícil de propósito: duas vozes masculinas semelhantes em uma sala com reverberação e um apresentador que intervém 19 vezes, durante uma média de 2.3 segundos por vez. O convidado fala durante 272 segundos; o apresentador, 43. Este é o perfil acústico que faz a diarização falhar em qualquer idioma: vozes parecidas alternando falas curtas.

Aqui, o agrupamento automático colapsa. As duas impressões vocais ficam tão próximas que o algoritmo as junta e atribui quase toda a conversa a um só falante. A gravação é, por acaso, um programa de entrevistas em chinês, o que nos permitiu testar a hipótese óbvia: um modelo especializado no idioma teria desempenho melhor. Comparamos, em um pipeline de CPU, dois modelos de falante treinados especificamente com fala em chinês:

Modelo Podcast em inglês Caso difícil* Tempo (áudio de 5.7 min)
pyannote community-1 (nosso modelo, Neural Engine) 96.7% 81–82% 2–4 s
CAM++ (treinado em chinês, CPU) 93.9% 81.2% 36–103 s
ERes2NetV2 (treinado em chinês, CPU) 80.5% 220–290 s

* Atribuição por frame no arquivo difícil com o número de falantes informado. Sem essa informação, todos os modelos convergem para um único falante.

Ambos colapsam da mesma forma, usando de 10 a 100 vezes mais poder de processamento. A dificuldade é acústica, não linguística — o limite está no que as representações vocais atuais conseguem distinguir, em qualquer idioma.

Isso descartou a correção óbvia e apontou para outra: dar ao pipeline um dado que não consegue deduzir — o número de pessoas na sala. Com o número indicado (uma opção do menu, de 2 a 6), o arquivo difícil passa do colapso para 89% de precisão por frase. A detecção automática continua sendo o padrão, porque acerta em gravações comuns.

Executar novamente a detecção de falantes no Whisper Notes com um número específico e exportar SRT e VTT com identificação

Repetir a detecção com o número exato de falantes. O mesmo menu exporta SRT e VTT com a identificação de cada falante.

Corrigir intervenções curtas

Com o número definido, cerca de metade dos erros restantes estava em intervenções com menos de três segundos. Um trecho de dois segundos dá muito pouco sinal ao modelo de representação; em trocas rápidas, a sua impressão vocal também absorve parte da voz do falante ao lado.

Depois do agrupamento, o pipeline reavalia cada frase com menos de 3.5 segundos. Recalcula a impressão vocal com uma máscara exatamente sobre os frames dessa frase, compara a impressão com a âncora de cada falante — a média das suas intervenções mais longas — e só muda a etiqueta quando a diferença é decisiva. O modelo existente é reutilizado; não há outro download.

Precisão por frase de ponta a ponta Antes da correção Depois
Caso difícil (número de falantes informado) 89.0% 94.8%
Podcast em inglês (automático) 98.5% 99.1%

O critério é conservador: nos dois arquivos, a etapa de correção mudou 21 etiquetas sem introduzir novos erros.

Limitações

• As etiquetas aparecem quando a gravação termina, não durante a chamada. Se você precisar de legendas ao vivo com o nome dos falantes enquanto a reunião acontece, um serviço na nuvem como o Otter ou o Notta é mais indicado.

• Quando duas pessoas falam ao mesmo tempo, cada frase recebe apenas uma identificação.

• Vozes parecidas continuam sendo um desafio. Os 94.8% no nosso arquivo difícil são o limite atual com o número de falantes informado, não um problema resolvido.

Disponibilidade

A identificação de falantes está incluída na compra única de $6.99, juntamente com os três mecanismos de transcrição do app — Parakeet V3, Whisper Large V3 Turbo e SenseVoice — e edição local com IA. Não há um plano separado e você não precisa criar uma conta.

iPhone: App Store, versão 1.8.5 ou posterior.

Mac App Store: versão 1.3.2 ou posterior.

Download direto para Mac (DMG): versão 1.5.1 ou posterior em whispernotes.app, com teste grátis.

Para saber como funciona a gravação de reuniões, veja nosso artigo sobre transcrição offline de reuniões.