← Todos los articulos

El nuevo framework de Speech de Apple: SpeechAnalyzer vs SFSpeechRecognizer

iOS 26 introduce un nuevo framework de reconocimiento de voz junto con el ya existente SFSpeechRecognizer. La nueva superficie de API es SpeechAnalyzer más módulos (SpeechTranscriber, SpeechDetector) que se componen a su alrededor1. El planteamiento de la propia Apple es que SpeechAnalyzer es la ruta moderna: un nuevo modelo en el dispositivo, soporte para audio de larga duración, gestión automática de idiomas, baja latencia para casos de uso en tiempo real y una arquitectura modular que permite añadir más tipos de análisis con el tiempo. SFSpeechRecognizer sigue distribuyéndose y funcionando; continúa siendo la herramienta adecuada para apps que dependen de su función de vocabulario personalizado, que el nuevo framework aún no ofrece.

Este artículo recorre el nuevo framework frente al antiguo. El enfoque es “cuándo migrar” en lugar de “cómo usar la nueva API”, porque cada equipo con una integración funcional de SFSpeechRecognizer enfrenta la misma decisión de triaje: ¿el modelo y la arquitectura modernos del nuevo framework justifican el costo de la migración, o las inversiones existentes en vocabulario personalizado justifican quedarse?

TL;DR

  • SpeechAnalyzer (iOS 26+) es el framework moderno de reconocimiento de voz en el dispositivo de Apple. Coordina módulos de análisis configurados en la inicialización; iOS 26 incluye tres: SpeechTranscriber (larga duración), DictationTranscriber (enunciado corto, el equivalente a SFSpeechRecognizer) y SpeechDetector (detección de actividad de voz, debe combinarse con un transcriptor)2.
  • El nuevo framework está construido en torno al audio de larga duración: conferencias, reuniones, conversaciones con múltiples hablantes. Se ejecuta enteramente en el dispositivo, gestiona los idiomas automáticamente y se distribuye con un nuevo modelo propietario de Apple que, según se informa, es 2× más rápido que Whisper Large V3 Turbo en tareas de transcripción equivalentes3.
  • SFSpeechRecognizer sigue distribuyéndose y funcionando. El framework heredado conserva la función de Vocabulario personalizado (registrar palabras clave conocidas para mayor precisión en términos específicos del dominio), que el nuevo framework aún no ofrece.
  • La migración es por función, no de todo o nada. Las apps que necesitan transcripción de larga duración, menor latencia o mejor calidad de audio a distancia migran a SpeechAnalyzer. Las apps con inversiones en Vocabulario personalizado mantienen SFSpeechRecognizer para esas funciones y añaden SpeechAnalyzer para las nuevas.
  • El artículo sobre el framework Vision del cluster cubre la otra primitiva de percepción en el dispositivo de Apple; SpeechAnalyzer extiende el mismo patrón en el dispositivo, sin nube, al audio.

La arquitectura: Analyzer + Módulos

SpeechAnalyzer no es un transcriptor por sí mismo. Es un coordinador que gestiona una sesión de análisis de audio y despacha el búfer de audio a uno o más módulos2. Los módulos se configuran en la inicialización a través del inicializador init(modules:), y el análisis comienza alimentando una AsyncSequence de búferes de audio mediante start(inputSequence:):

import Speech

let transcriber = SpeechTranscriber(
    locale: .current,
    transcriptionOptions: [],
    reportingOptions: [.volatileResults],
    attributeOptions: []
)
let analyzer = SpeechAnalyzer(modules: [transcriber])

try await analyzer.start(inputSequence: audioInputSequence)

for try await result in transcriber.results {
    if result.isFinal {
        print(result.text)
    }
}

Tres módulos vienen incluidos en iOS 26:

SpeechTranscriber. El módulo de voz a texto diseñado para audio de larga duración (conferencias, reuniones, conversaciones con múltiples hablantes). Devuelve resultados en streaming con tiempos por token, puntuaciones de confianza y una AsyncSequence de results que la app consume mediante for try await. Cada resultado tiene una bandera isFinal que separa las hipótesis parciales volátiles del texto finalizado.

DictationTranscriber. El equivalente directo para el caso de uso del antiguo SFSpeechRecognizer: transcripción de enunciados cortos con el mismo modelo en el dispositivo que usa SFSpeechRecognizer. Las apps que migran desde SFSpeechRecognizer para consultas cortas recurren a DictationTranscriber; las apps que adoptan el framework para grabaciones de larga duración recurren a SpeechTranscriber. La separación importa porque SpeechTranscriber y DictationTranscriber usan diferente cobertura de idiomas y diferentes rutas de modelo.

SpeechDetector. Detección de actividad de voz. Reporta eventos cuando el habla comienza y termina dentro del flujo de audio. El detector no puede ejecutarse solo; debe emparejarse con uno de los módulos transcriptores en la misma instancia de SpeechAnalyzer. Las apps lo usan para limitar el cómputo de transcripción (no transcribir silencio) o para impulsar elementos de la UI (indicadores de “habla ahora”).

La arquitectura modular es la mejora estructural sobre SFSpeechRecognizer. La API antigua combina la gestión de la sesión de audio, la detección de idioma y la transcripción en un único objeto; la nueva API separa responsabilidades, de modo que las apps componen los módulos que necesitan.

Lo que aporta el nuevo modelo

El modelo de transcripción detrás de SpeechTranscriber es un nuevo modelo en el dispositivo que Apple desarrolló específicamente para este framework4. Las mejoras que Apple destaca en la WWDC 2025:

Calidad de audio de larga duración. El modelo está entrenado para transcripción sostenida durante minutos u horas, no solo para consultas cortas. Conferencias, podcasts, reuniones con múltiples hablantes y sesiones de dictado se transcriben con una precisión que Apple posiciona frente a modelos de la clase de Whisper. Una prueba independiente de MacStories midió aproximadamente 2,2× más rápido que la versión Large V3 Turbo de MacWhisper en tareas de transcripción equivalentes3.

Manejo de audio a distancia. Micrófonos colocados al otro lado de una sala, audio de mesa de conferencia con múltiples hablantes, audio con ruido ambiental. El modelo está entrenado para estas condiciones; el modelo más antiguo de SFSpeechRecognizer las maneja con menos elegancia.

Operación en tiempo real con baja latencia. Los resultados en streaming de SpeechTranscriber llegan más rápido que las llamadas de retorno SFSpeechRecognitionTask.shouldReportPartialResults del framework antiguo. Las apps que muestran transcripción en vivo (subtitulado, UIs activadas por voz, dictado) obtienen actualizaciones más fluidas.

Gestión automática de idiomas. SpeechTranscriber(locale:) acepta una configuración regional inicial, pero el modelo puede adaptarse a cambios de idioma a mitad del flujo. El framework antiguo requiere que el desarrollador instancie reconocedores por idioma y alterne entre ellos.

Sin costo en el tamaño de la app. El modelo se distribuye con el sistema operativo, no con la app. Las apps que adoptan SpeechAnalyzer no incluyen pesos de modelo adicionales. El contraste con incluir un modelo de la clase de Whisper en el bundle de la app es significativo: una pila competitiva de transcripción en el dispositivo cuesta cero bytes de bundle.

Lo que aún ofrece el framework antiguo

SFSpeechRecognizer sigue distribuyéndose y funcionando en iOS 26. Tres razones por las que una app podría seguir usándolo:

Vocabulario personalizado. SFSpeechRecognitionRequest.contextualStrings permite que la app registre una lista de palabras clave conocidas (nombres propios, términos técnicos, nombres de productos) que el modelo tendrá más probabilidad de reconocer con precisión. La función mejora sustancialmente la precisión para apps específicas del dominio (dictado médico con nombres de medicamentos, apps legales con citas de casos, apps de ingeniería con números de pieza). SpeechAnalyzer aún no ofrece Vocabulario personalizado; para apps que dependen de esta función, migrar sería una regresión en precisión.

Soporte de SO antiguos. SFSpeechRecognizer está disponible en iOS 10+; SpeechAnalyzer requiere iOS 26+. Las apps dirigidas a iOS 18 y anteriores necesitan el framework heredado.

Integración existente que funciona. Las apps con integraciones de SFSpeechRecognizer estables, auditadas y con buen rendimiento no tienen una razón urgente para migrar. Las mejoras del nuevo framework importan más para nuevos casos de uso (transcripción de larga duración, audio a distancia, conversaciones con múltiples hablantes); las apps que manejan consultas de voz cortas a través de la API heredada pueden no obtener lo suficiente para justificar la migración.

Cuándo migrar

Tres detonantes de migración que vale la pena nombrar:

La app procesa audio de larga duración. Una grabadora de reuniones, una app de transcripción de conferencias, una herramienta de podcast a texto. El entrenamiento del nuevo modelo en audio sostenido es la opción adecuada; el modelo antiguo se degrada en sesiones largas. Migra primero.

La app necesita audio distante o ruidoso. Transcripción de salas de conferencias, grabación de entrevistas con un solo micrófono distante, audio capturado en entornos con ruido ambiental. El nuevo modelo maneja estas condiciones notablemente mejor.

La app muestra una UI de transcripción en vivo. Superposiciones de subtítulos, interfaces de dictado, UIs asistivas activadas por voz. La menor latencia de los resultados en streaming de SpeechTranscriber hace que la UI se sienta más receptiva.

Casos que no necesariamente justifican la migración:

  • Consultas de voz cortas con vocabulario personalizado (dictado de recetas, terminología legal). Mantén SFSpeechRecognizer por la función de vocabulario; recurre a SpeechAnalyzer si Apple añade soporte de vocabulario en una versión futura.
  • Apps que necesitan dar soporte a iOS 18 y anteriores. SpeechAnalyzer es exclusivo de iOS 26; el código base necesita el framework heredado para targets más antiguos de todos modos.

El patrón lado a lado

Para apps que tanto se dirigen a versiones antiguas del SO como quieren la calidad del nuevo framework en iOS 26+, el patrón lado a lado es el enfoque adecuado:

import Speech

if #available(iOS 26.0, *) {
    let transcriber = DictationTranscriber(locale: .current)
    let analyzer = SpeechAnalyzer(modules: [transcriber])
    try await analyzer.start(inputSequence: audioInputSequence)
    for try await result in transcriber.results {
        if result.isFinal {
            handleTranscription(result.text)
        }
    }
} else {
    let recognizer = SFSpeechRecognizer(locale: .current)!
    let request = SFSpeechAudioBufferRecognitionRequest()
    request.shouldReportPartialResults = true
    request.requiresOnDeviceRecognition = true
    let task = recognizer.recognitionTask(with: request) { result, error in
        guard let result else { return }
        handleTranscription(result.bestTranscription.formattedString)
    }
}

DictationTranscriber es la elección correcta para la rama de iOS 26+ porque el objetivo de migración es el caso de uso de SFSpeechRecognizer (consultas cortas con el mismo modelo de dictado). Las apps dirigidas a audio de larga duración intercambian DictationTranscriber por SpeechTranscriber en la rama de iOS 26.

Los dos frameworks coexisten; la verificación en tiempo de ejecución elige el correcto según la disponibilidad. Ninguno bloquea al otro; el pipeline de transcripción de la app se adapta.

Privacidad y la superficie de autorización de Speech

Ambos frameworks comparten el mismo permiso del framework Speech (NSSpeechRecognitionUsageDescription en Info.plist) y el mismo flujo de autorización visible para el usuario5. La historia de privacidad es la misma: la transcripción de voz ocurre en el dispositivo en ambos frameworks. SpeechAnalyzer es exclusivamente en el dispositivo por diseño; SFSpeechRecognizer opera por defecto en el dispositivo cuando la bandera requiresOnDeviceRecognition de la solicitud está configurada en true en el propio SFSpeechRecognitionRequest, de lo contrario puede recurrir a una ruta del lado del servidor.

La implicación: las apps que usan SpeechAnalyzer deben seguir manejando correctamente la autorización de Speech. La solicitud al usuario, la entrada en Configuración y la etiqueta de privacidad de la App Store usan el mismo mecanismo de autorización.

Para apps que transmiten audio del micrófono al analizador, aplica la configuración estándar de AVAudioSession. El artículo sobre el Manifiesto de Privacidad del cluster cubre las entradas del manifiesto para apps que usan Speech; ambos frameworks caen bajo las mismas declaraciones de privacidad.

La conexión con el flujo de trabajo del agente

El modelo en el dispositivo y la salida estructurada de SpeechAnalyzer se combinan limpiamente con dos patrones del cluster:

Foundation Models para razonamiento dentro de la app. Un pipeline que transcribe audio con SpeechTranscriber y luego resume la transcripción con el LLM en el dispositivo (cubierto en Foundation Models LLM en el dispositivo) se ejecuta enteramente en el dispositivo. Total de llamadas de red: cero. Total de exposición de datos a terceros: cero.

App Intents para acciones activadas por voz. Un AppIntent que toma una transcripción como entrada puede invocarse a través de Atajos de Voz (cubierto en Accesibilidad como plataforma) o a través de la superficie de acciones de Apple Intelligence. El método perform del intent ejecuta SpeechAnalyzer para transcribir la entrada y luego despacha a la lógica de la app. Todo el flujo es privado y local.

El patrón: el nuevo framework de Speech completa el triángulo de percepción en el dispositivo (Vision para imágenes, Foundation Models para razonamiento de lenguaje, Speech para audio) que hace prácticas las funciones de IA totalmente locales para apps de iOS.

Lo que este patrón significa para las apps de iOS 26+

Tres conclusiones.

  1. Usa SpeechAnalyzer por defecto para código nuevo. El modelo moderno, la arquitectura modular y el rendimiento mejorado en larga duración / a distancia / en vivo lo convierten en el punto de partida correcto. El framework heredado es el respaldo cuando se requiere soporte de SO más antiguos o Vocabulario personalizado.

  2. Mantén SFSpeechRecognizer para apps dependientes de vocabulario. Hasta que Apple añada Vocabulario personalizado al nuevo framework, las apps que dependen de contextualStrings para precisión en términos específicos del dominio mantienen la API antigua. Los dos frameworks coexisten; mezclarlos por función es el patrón correcto.

  3. La historia de privacidad en el dispositivo se extiende de Vision a Speech. Las apps que se construyeron en torno a la CV en el dispositivo de Vision ahora tienen el equivalente para audio. Combinado con Foundation Models para razonamiento, el pipeline completo de percepción a lenguaje puede ejecutarse localmente sin exposición de datos a terceros.

El cluster completo del Ecosistema Apple: App Intents tipados; servidores MCP; la pregunta de enrutamiento; Foundation Models; la distinción entre LLM en tiempo de ejecución vs herramientas; tres superficies; el patrón de fuente única de verdad; Dos servidores MCP; hooks para desarrollo Apple; Live Activities; el contrato de runtime de watchOS; internos de SwiftUI; el modelo mental espacial de RealityKit; disciplina de esquema de SwiftData; patrones de Liquid Glass; distribución multiplataforma; la matriz de plataformas; framework Vision; Symbol Effects; inferencia Core ML; API de Writing Tools; Swift Testing; Manifiesto de Privacidad; Accesibilidad como plataforma; tipografía SF Pro; patrones espaciales de visionOS; sobre qué me niego a escribir. El hub está en Serie del Ecosistema Apple. Para un contexto más amplio sobre iOS con agentes de IA, consulta la guía de Desarrollo de Agentes iOS.

Preguntas frecuentes

¿Está obsoleto SFSpeechRecognizer?

Apple no ha declarado formalmente obsoleto SFSpeechRecognizer. Sigue distribuyéndose en iOS 26 y continúa siendo compatible. El planteamiento en la WWDC 2025 es que SpeechAnalyzer es la ruta moderna y recomendada para código nuevo; el framework heredado es la herramienta adecuada para casos específicos (Vocabulario personalizado, soporte de SO más antiguos).

¿Puedo usar SpeechAnalyzer con archivos de audio pregrabados?

Sí. SpeechAnalyzer.start(inputSequence:) acepta una AsyncSequence de búferes de audio. Las apps envuelven cualquier fuente de audio (micrófono mediante AVAudioEngine, URLs de archivos pregrabados, instancias de AVAsset) en un adaptador de AsyncSequence y la alimentan al analizador. El flujo de transcripción produce el mismo consumo for try await result in transcriber.results independientemente de la fuente de entrada.

¿Qué pasa con el Vocabulario personalizado si migro?

El Vocabulario personalizado actualmente no es compatible con SpeechAnalyzer / SpeechTranscriber. Las apps que dependen de él para precisión específica del dominio no deberían migrar esa ruta hasta que Apple añada la función. Un enfoque híbrido (usar SpeechAnalyzer para transcripción general y SFSpeechRecognizer con contextualStrings para transcripción sensible al vocabulario) funciona en iOS 26.

¿Puedo ejecutar SpeechAnalyzer del lado del servidor?

No. SpeechAnalyzer es un framework exclusivamente en el dispositivo. No tiene una ruta del lado del servidor. Para transcripción del lado del servidor, las herramientas correctas son APIs en la nube (API de Whisper de OpenAI, Google Cloud Speech-to-Text, AWS Transcribe) o modelos auto-alojados. El valor del framework de Apple es precisamente la privacidad en el dispositivo y la historia de cero costo por llamada.

¿Cómo funciona la detección de idioma?

SpeechTranscriber(locale:) acepta una configuración regional inicial. El modelo puede adaptarse automáticamente a cambios de idioma a mitad del flujo. Para apps donde el idioma se conoce de antemano (la función de dictado de una app localizada), especifícalo explícitamente. Para contextos multilingües (un transcriptor de reuniones donde los hablantes pueden cambiar), la gestión automática es el comportamiento adecuado.

¿Dónde encaja esto con los otros artículos del cluster sobre ML en el dispositivo?

SpeechAnalyzer es el tercer pilar de la pila de percepción en el dispositivo: Vision (cubierto en Framework Vision) maneja imágenes, Speech maneja audio y Core ML (cubierto en Inferencia Core ML en el dispositivo) es el motor que está debajo de ambos. Foundation Models (cubierto en Foundation Models LLM en el dispositivo) maneja el razonamiento de lenguaje. Juntos forman un pipeline completo de IA en el dispositivo que no requiere llamadas de red.

Referencias


  1. Apple Developer: Bring advanced speech-to-text to your app with SpeechAnalyzer (sesión 277 de la WWDC 2025). Introducción del framework SpeechAnalyzer, arquitectura modular y el nuevo modelo de transcripción en el dispositivo. 

  2. Documentación de Apple Developer: SpeechAnalyzer y SpeechTranscriber. La referencia del framework que cubre la arquitectura analizador-y-módulos. 

  3. MacStories: Hands-On: How Apple’s New Speech APIs Outpace Whisper for Lightning-Fast Transcription. Benchmark independiente del nuevo modelo frente a Whisper Large V3 Turbo, que reporta una transcripción aproximadamente 2× más rápida en hardware Mac Silicon. 

  4. Documentación de Apple Developer: Bringing advanced speech-to-text capabilities to your app. Guía oficial de adopción de Apple que cubre los resultados en streaming y el soporte multi-locale. 

  5. Documentación de Apple Developer: SFSpeechRecognizer.requestAuthorization(_:). La superficie de autorización compartida para ambos frameworks de voz. 

Artículos relacionados

The Privacy Manifest Deep Dive: What Counts As Data Collection

Apple's privacy manifest is a structured contract, not a checkbox: four sections, five required-reason API categories, S…

14 min de lectura

SwiftData's Real Cost Is Schema Discipline

SwiftData's API is two macros. The cost is what happens after you ship. Optional fields are the cheap migration; non-opt…

15 min de lectura

The Design Engineer's Agent Stack

Design engineers need agent infrastructure that enforces visual consistency, typography discipline, color compliance, an…

14 min de lectura