Atualização 2026-07-15: a rodada 2 já está no ar, adicionando o NVIDIA Parakeet TDT v2/v3 (a comparação que mais leitores pediram) e o MOSS-Transcribe-Diarize, medidos com o mesmo corpus e o mesmo critério de pontuação.
O resultado, logo de cara
O novo SpeechAnalyzer da Apple é o motor de fala no dispositivo mais preciso que testamos. Ele venceu todos os modelos Whisper que incluíamos no app na época, inclusive o Whisper Small, tanto na metade limpa quanto na metade ruidosa do LibriSpeech, rodando cerca de três vezes mais rápido que o Small. E a API que ele substitui, o SFSpeechRecognizer, ficou em último lugar em fala limpa: atrás até do Whisper Tiny, um modelo de 40MB.
| Motor | WER test-clean | WER test-other | Tamanho do modelo |
|---|---|---|---|
| Apple SpeechAnalyzer (iOS/macOS 26) | 2.12% | 4.56% | sistema |
| Whisper Small (WhisperKit CoreML) | 3.74% | 7.95% | ~460MB |
| Whisper Base | 5.42% | 12.51% | ~140MB |
| Whisper Tiny | 7.88% | 17.04% | ~40MB |
| Apple SFSpeechRecognizer (antigo) | 9.02% | 16.25% | sistema |
Quanto menor, melhor: WER é a taxa de erro de palavras — a porcentagem de palavras que o motor troca, omite ou inventa. O LibriSpeech test-clean tem 2.620 amostras de fala lida e limpa; o test-other tem 2.939 amostras mais difíceis e ruidosas. Todos os motores rodaram 100% no dispositivo, em um Apple M2 Pro (32GB, macOS 26.5.1).
Por que fizemos este teste
Com o iOS 26 e o macOS 26, a Apple substituiu o SFSpeechRecognizer por uma nova API, o SpeechAnalyzer com o SpeechTranscriber. E não publicou nenhum número de precisão para nenhum dos dois. Ou seja: todo desenvolvedor decidindo se migra, e todo mundo comparando o reconhecimento nativo da Apple com o Whisper, estava no chute.
Na época deste benchmark, incluíamos os dois motores da Apple e três modelos Whisper lado a lado no Lyonesse, um espaço de trabalho de IA privada que roda no dispositivo — o que nos colocou numa posição incomum: podíamos rodar os cinco pelos mesmos caminhos de código de produção, na mesma máquina e com o mesmo áudio. Então foi o que fizemos.
Vale a pena migrar do SFSpeechRecognizer?
Sim. Este é o resultado mais claro dos dados. A nova API corta a taxa de erro de palavras em 3,5 a 4x no mesmo áudio: de 9,02% para 2,12% em fala limpa, e de 16,25% para 4,56% em fala com ruído. Não há trade-off de precisão a pesar; a nova API vence em tudo o que medimos, e ainda entrega texto pontuado e com maiúsculas, enquanto a saída do motor antigo é bem mais crua.
Em outras palavras: uma reunião de uma hora transcrita com a API antiga contém cerca de quatro vezes mais palavras erradas do que a mesma reunião com o SpeechAnalyzer. Se o seu app ainda usa o SFSpeechRecognizer para qualquer coisa mais longa que um comando de voz, a migração já se paga só pela precisão.
SpeechAnalyzer vs Whisper
O resultado mais surpreendente: o novo motor da Apple também venceu o Whisper Small, o maior modelo que incluíamos, com folga nas duas metades do teste — e gastando cerca de um terço do tempo de processamento do Whisper Small por segundo de áudio. Para inglês, em hardware da Apple, o motor nativo é agora a opção local mais forte que conseguimos medir.
O Whisper mantém duas vantagens reais. Cobre muito mais idiomas (o SpeechTranscriber suporta por volta de 30 localidades) e roda em qualquer lugar, não só em plataformas Apple com o OS 26. Mas, para transcrição em inglês num iPhone ou Mac atual, acabou a era em que o Whisper era a escolha automática de precisão.
Mudamos nosso próprio produto com base nesse resultado: o motor Auto do Lyonesse agora prefere o SpeechAnalyzer nos idiomas que ele suporta. (E foi além depois da rodada 2: a partir do Lyonesse 1.8.9, os modelos Whisper foram aposentados por completo, substituídos pelo NVIDIA Parakeet como motor de reserva.) Publicar um benchmark e ignorá-lo nos próprios padrões do app seria um tipo estranho de honestidade.
Velocidade
Os cinco motores rodaram confortavelmente mais rápido que o tempo real: entre cerca de 12x e 40x no M2 Pro, o que significa que uma hora de áudio é transcrita em aproximadamente 1,5 a 5 minutos, direto no dispositivo. O SpeechAnalyzer foi cerca de 3x mais rápido que o Whisper Small por segundo de áudio, vencendo-o ao mesmo tempo em precisão. Deliberadamente ainda não publicamos uma tabela precisa de tempos por motor: as medições de precisão dividiram a máquina com uma carga de desenvolvimento, o que não afeta o WER, mas adiciona ruído aos tempos. Atualizaremos esta página com tempos de uma rodada dedicada em máquina ociosa.
Metodologia — e por que você pode conferir
Um benchmark feito por uma empresa que vende um dos motores merece desconfiança. O nosso tem duas propriedades pensadas exatamente para essa desconfiança.
A coluna do Whisper é reproduzível contra os números da própria OpenAI
Usamos o LibriSpeech justamente porque a OpenAI publicou o WER do Whisper nele. Se o nosso harness mediu o Whisper corretamente, nossos números devem cair sobre os deles. E caem, nas seis medições:
| Motor / conjunto | Nosso | Publicado pela OpenAI | Delta |
|---|---|---|---|
| Whisper Tiny, test-clean | 7.88% | 7.6% | +0.28 |
| Whisper Base, test-clean | 5.42% | 5.0% | +0.42 |
| Whisper Small, test-clean | 3.74% | 3.4% | +0.34 |
| Whisper Tiny, test-other | 17.04% | 16.9% | +0.14 |
| Whisper Base, test-other | 12.51% | 12.4% | +0.11 |
| Whisper Small, test-other | 7.95% | 7.6% | +0.35 |
O pequeno desvio positivo e consistente (um normalizador de texto um pouco mais rigoroso, mais a quantização CoreML) é a cara de uma reprodução honesta; erro aleatório se espalharia nas duas direções. Como o mesmo corpus, o mesmo normalizador e o mesmo avaliador produziram as colunas da Apple, os números que ninguém mais pode checar herdam a validação dos números que qualquer um pode.
As transcrições brutas são públicas
Cada hipótese por amostra dos dois motores da Apple pode ser baixada abaixo, ao lado do texto de referência e do WER por amostra. Discorda da nossa normalização? Reavalie você mesmo.
- summary.json - as dez medições, em formato legível por máquina (3KB)
- raw-transcripts-apple.json.gz - SpeechAnalyzer, todas as 5.559 amostras (620KB)
- raw-transcripts-legacy.json.gz - SFSpeechRecognizer, todas as 5.559 amostras (620KB)
Detalhes que decidem se um número de WER significa alguma coisa
- Os mesmos caminhos de código de produção. Cada motor rodou exatamente pelo código que os usuários do Lyonesse recebem, não por um harness de laboratório com buffering ou configurações diferentes.
- Normalização de texto. As referências do LibriSpeech vêm em maiúsculas, sem pontuação e com números por extenso; motores modernos emitem pontuação e algarismos. Os dois lados passam pelo mesmo normalizador (caixa, pontuação, algarismos para palavras, contrações), espelhando o normalizador de inglês da OpenAI. Pontuar o texto bruto significa punir um motor por formatar bem, e não por ouvir mal.
- WER de corpus, não WER médio. Total de erros dividido pelo total de palavras de referência, para que amostras curtas não pesem demais.
- Totalmente no dispositivo, com verificação. O SFSpeechRecognizer envia áudio aos servidores da Apple por padrão. Forçamos o reconhecimento local e fizemos o harness se recusar a rodar em vez de cair silenciosamente na nuvem — tanto porque um resultado de nuvem invalidaria a comparação quanto porque não íamos subir 5.559 amostras de áudio a partir de um produto feito para privacidade.
- Falhas contadas, não escondidas. Um motor que não devolve nada leva 100% de WER naquela amostra. Aconteceu uma vez em 27.795 transcrições (motor antigo, test-other).
O que construir isso nos ensinou sobre o nosso próprio app
O benchmark encontrou um bug em produção no Lyonesse. Nossa importação de arquivos com o motor da Apple alimentava o SpeechAnalyzer com o áudio e fechava o stream de entrada, mas nunca chamava finalizeAndFinishThroughEndOfInput(). Sem essa chamada, o analisador nunca entrega os resultados finais e a importação trava para sempre. Tinha passado despercebido porque nossa configuração Auto preferia o Whisper. A correção foi lançada no mesmo dia, e é parte do motivo de publicarmos os detalhes do harness: medir o próprio produto com cuidado tem o hábito de encontrar o que você não estava procurando.
Limitações
- Somente inglês. O LibriSpeech é fala lida em inglês. Estes números não dizem nada sobre os mais de 100 idiomas que o Whisper suporta e o SpeechTranscriber não.
- Fala lida de audiolivro, não reuniões. O LibriSpeech é o corpus padrão e comparável, e por isso começamos por ele. Áudio com sotaque, microfone distante e múltiplos falantes em reunião é a continuação óbvia.
- Uma única máquina. M2 Pro, macOS 26.5.1. A precisão deve se transferir entre chips Apple Silicon; a velocidade varia por chip.
- Whisper via WhisperKit CoreML. Conversões quantizadas para rodar no dispositivo, as mesmas builds que o Lyonesse incluía na época (desde a 1.8.9 o app traz o NVIDIA Parakeet no lugar). Implementações de referência em GPU podem diferir um pouco, e é isso que a tabela de validação quantifica.
O que isso significa se você só quer uma boa transcrição
Se você tem um iPhone ou Mac atual, o melhor motor de transcrição local para inglês já está no sistema operacional — e a opção privada deixou de ser a opção de compromisso. O Lyonesse usa exatamente os motores medidos aqui: SpeechAnalyzer onde ele suporta o seu idioma, Whisper onde não suportava, tudo com ia offline rodando no dispositivo, sem enviar nada para processamento na nuvem. Transcrição, resumos e notas de reunião passam pelo mesmo pipeline local. O benchmark não é algo separado do produto; é como decidimos o que o produto faz.