Actualización 2026-07-15: La ronda 2 ya está publicada, y añade NVIDIA Parakeet TDT v2/v3 (la comparación que más lectores pidieron) y MOSS-Transcribe-Diarize, medidos sobre el mismo corpus y la misma puntuación.
El resultado, sin rodeos
El nuevo SpeechAnalyzer de Apple es el motor de voz en el dispositivo más preciso que probamos. Superó a todos los modelos de Whisper que distribuíamos en aquel momento, incluido Whisper Small, tanto en la mitad limpia como en la ruidosa de LibriSpeech, y funcionando aproximadamente tres veces más rápido que Small. Y la API a la que sustituye, SFSpeechRecognizer, quedó última en habla limpia: por detrás incluso de Whisper Tiny, un modelo de 40 MB.
| Motor | WER test-clean | WER test-other | Tamaño del modelo |
|---|---|---|---|
| Apple SpeechAnalyzer (iOS/macOS 26) | 2,12 % | 4,56 % | sistema |
| Whisper Small (WhisperKit CoreML) | 3,74 % | 7,95 % | ~460 MB |
| Whisper Base | 5,42 % | 12,51 % | ~140 MB |
| Whisper Tiny | 7,88 % | 17,04 % | ~40 MB |
| Apple SFSpeechRecognizer (antigua) | 9,02 % | 16,25 % | sistema |
Cuanto más bajo, mejor: el WER es la tasa de error por palabra, el porcentaje de palabras que un motor sustituye, omite o inventa. LibriSpeech test-clean son 2.620 fragmentos de habla leída limpia; test-other son 2.939 fragmentos más difíciles y ruidosos. Todos los motores se ejecutaron por completo en el dispositivo, en un Apple M2 Pro (32 GB, macOS 26.5.1).
Por qué hicimos esto
Con iOS 26 y macOS 26, Apple sustituyó SFSpeechRecognizer por una nueva API, SpeechAnalyzer y SpeechTranscriber. No publicó ninguna cifra de precisión para ninguna de las dos. Así que cualquier desarrollador que decidiera si migrar, y cualquiera que comparase el reconocimiento integrado de Apple con Whisper, iba a ciegas.
En el momento de este benchmark distribuíamos los dos motores de Apple y tres modelos de Whisper en paralelo en Lyonesse, un espacio de trabajo de IA privada en el dispositivo, lo que nos situó en una posición poco habitual: podíamos ejecutar los cinco a través de rutas de código de producción idénticas, en la misma máquina y con el mismo audio. Así que lo hicimos.
¿Deberías migrar de SFSpeechRecognizer?
Sí. Es el resultado más claro de los datos. La nueva API reduce la tasa de error por palabra entre 3,5 y 4 veces sobre el mismo audio: del 9,02 % al 2,12 % en habla limpia, y del 16,25 % al 4,56 % en habla con ruido. No hay ningún compromiso de precisión que sopesar; la nueva API gana en todo lo que medimos, y produce texto con puntuación y mayúsculas donde la salida del motor antiguo es más tosca.
Dicho de otro modo: una reunión de una hora transcrita con la API antigua contiene aproximadamente cuatro veces más palabras incorrectas que esa misma reunión con SpeechAnalyzer. Si tu app todavía usa SFSpeechRecognizer para algo más largo que un comando de voz, la migración vale la pena solo por la precisión.
SpeechAnalyzer frente a Whisper
El resultado más sorprendente: el nuevo motor de Apple también superó a Whisper Small, el modelo más grande que distribuíamos, por un margen cómodo en ambas mitades, y en aproximadamente un tercio del tiempo de cómputo de Whisper Small por segundo de audio. Para el inglés, en hardware de Apple, el motor integrado es ahora la opción en el dispositivo más potente que podemos medir.
Whisper conserva dos ventajas reales. Cubre muchos más idiomas (SpeechTranscriber admite alrededor de 30 configuraciones regionales) y funciona en cualquier parte, no solo en plataformas de Apple con OS 26. Pero para la transcripción en inglés en un iPhone o un Mac actuales, se acabaron los días en que Whisper era la elección automática en precisión.
Cambiamos nuestro propio producto a raíz de este resultado: el motor Auto de Lyonesse ahora prefiere SpeechAnalyzer para los idiomas que admite. (Fue más allá tras la ronda 2: desde Lyonesse 1.8.9 los modelos de Whisper se retiraron por completo, sustituidos por NVIDIA Parakeet como motor de reserva.) Publicar un benchmark e ignorarlo en tus propios ajustes por defecto sería una forma extraña de honestidad.
Velocidad
Los cinco motores funcionaron cómodamente más rápido que en tiempo real: entre unas 12x y 40x en el M2 Pro, lo que significa que una hora de audio se transcribe en unos 1,5 a 5 minutos en el dispositivo. SpeechAnalyzer fue unas 3 veces más rápido que Whisper Small por segundo de audio, y a la vez lo superó en precisión. Deliberadamente todavía no publicamos una tabla precisa de tiempos por motor: las mediciones de precisión compartieron la máquina con una carga de trabajo de desarrollo, lo que no afecta al WER pero sí añade ruido a los tiempos. Actualizaremos esta página con tiempos de una ejecución dedicada en reposo.
Metodología, y por qué puedes comprobarla
Un benchmark de una empresa que vende uno de los motores debería tratarse con recelo. El nuestro tiene dos propiedades diseñadas justo para ese recelo.
La columna de Whisper es reproducible frente a las propias cifras de OpenAI
Usamos LibriSpeech precisamente porque OpenAI publicó el WER de Whisper sobre él. Si nuestro arnés midió Whisper correctamente, nuestras cifras deberían coincidir con las suyas. Y coinciden, en las seis mediciones:
| Motor / conjunto | Nuestro | Publicado por OpenAI | Diferencia |
|---|---|---|---|
| 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 |
El desfase positivo pequeño y constante (un normalizador de texto algo más estricto más la cuantización de CoreML) es el aspecto que tiene una reproducción honesta; el error aleatorio se dispersaría en ambas direcciones. Como el mismo corpus, normalizador y sistema de puntuación produjeron las columnas de Apple, las cifras que nadie más puede comprobar heredan la validación de las cifras que cualquiera sí puede.
Las transcripciones en bruto son públicas
Cada hipótesis por fragmento de ambos motores de Apple se puede descargar más abajo, junto al texto de referencia y el WER por fragmento. ¿No estás de acuerdo con nuestra normalización? Vuelve a puntuarla tú mismo.
- summary.json - las diez mediciones, en formato legible por máquina (3 KB)
- raw-transcripts-apple.json.gz - SpeechAnalyzer, los 5.559 fragmentos (620 KB)
- raw-transcripts-legacy.json.gz - SFSpeechRecognizer, los 5.559 fragmentos (620 KB)
Los detalles que deciden si una cifra de WER significa algo
- Las mismas rutas de código de producción. Cada motor se ejecutó a través del código exacto que reciben los usuarios de Lyonesse, no un arnés de laboratorio con un buffering o unos ajustes distintos.
- Normalización del texto. Las referencias de LibriSpeech están en mayúsculas, sin puntuación y con los números escritos con letras; los motores modernos generan puntuación y dígitos. Ambos lados pasan por el mismo normalizador (mayúsculas/minúsculas, puntuación, dígitos a palabras, contracciones), que refleja el normalizador de inglés de OpenAI. Si puntúas el texto en bruto, castigas a los motores por dar buen formato en lugar de por oír mal.
- WER de corpus, no WER promediado. Total de errores dividido entre el total de palabras de referencia, de modo que los fragmentos cortos no se sobreponderan.
- Por completo en el dispositivo, verificado. SFSpeechRecognizer envía el audio a los servidores de Apple de forma predeterminada. Forzamos el reconocimiento en el dispositivo e hicimos que el arnés se negara a ejecutarse en vez de recurrir en silencio a la nube, tanto porque un resultado en la nube invalidaría la comparación como porque no íbamos a subir 5.559 fragmentos desde un producto de privacidad.
- Los fallos se cuentan, no se ocultan. Un motor que no devuelve nada obtiene un 100 % de WER en ese fragmento. Ocurrió una vez en 27.795 transcripciones (motor antiguo, test-other).
Lo que construir esto nos enseñó sobre nuestra propia app
El benchmark encontró un error en producción en Lyonesse. Nuestra importación de archivos con el motor de Apple pasaba el audio a SpeechAnalyzer y cerraba el flujo de entrada, pero nunca llamaba a finalizeAndFinishThroughEndOfInput(). Sin esa llamada, el analizador nunca entrega sus resultados finales, y la importación se cuelga para siempre. Había pasado inadvertido porque nuestro ajuste Auto prefería Whisper. La corrección se lanzó el mismo día, y es parte de por qué publicamos los detalles del arnés: medir tu propio producto con cuidado tiene la costumbre de encontrar las cosas que no estabas buscando.
Limitaciones
- Solo inglés. LibriSpeech es habla leída en inglés. Estas cifras no dicen nada sobre los más de 100 idiomas que Whisper admite y que SpeechTranscriber no.
- Habla de audiolibro leída, no reuniones. LibriSpeech es el corpus estándar y comparable, por eso empezamos por él. El audio de reuniones con acentos, de campo lejano y con varios interlocutores es el siguiente paso evidente.
- Una sola máquina. M2 Pro, macOS 26.5.1. La precisión debería trasladarse a lo largo de Apple Silicon; la velocidad variará según el chip.
- Whisper vía WhisperKit CoreML. Conversiones cuantizadas en el dispositivo, las mismas compilaciones que Lyonesse distribuía en aquel momento (desde 1.8.9 la app incorpora NVIDIA Parakeet en su lugar). Las implementaciones de referencia en GPU pueden diferir ligeramente, cosa que la tabla de validación cuantifica.
Qué significa esto si solo quieres una buena transcripción
Si tienes un iPhone o un Mac actuales, el mejor motor de transcripción en el dispositivo para el inglés ya está en el sistema operativo, y la opción privada ya no es la opción de compromiso. Lyonesse usa exactamente los motores medidos aquí: SpeechAnalyzer cuando admite tu idioma, Whisper cuando no, todo por completo en el dispositivo, sin subir nada. El benchmark no está separado del producto; es cómo decidimos lo que hace el producto.