Novo Speech Framework da Apple: SpeechAnalyzer vs SFSpeechRecognizer
O iOS 26 apresenta um novo framework de reconhecimento de fala junto ao já existente SFSpeechRecognizer. A nova superfície API é o SpeechAnalyzer mais módulos (SpeechTranscriber, SpeechDetector) que se compõem ao seu redor1. O próprio posicionamento da Apple é que o SpeechAnalyzer é o caminho moderno: um novo modelo on-device, suporte a áudio de longa duração, gerenciamento automático de idiomas, baixa latência para casos de uso em tempo real e uma arquitetura modular que permite adicionar mais tipos de análise ao longo do tempo. O SFSpeechRecognizer continua sendo distribuído e funcionando; ele continua sendo a ferramenta certa para apps que dependem do recurso de vocabulário personalizado, que o novo framework ainda não oferece.
O post compara o novo framework com o antigo. O recorte é “quando migrar” em vez de “como usar a nova API”, porque toda equipe com uma integração funcional do SFSpeechRecognizer enfrenta a mesma decisão de triagem: o modelo moderno e a arquitetura do novo framework valem o custo da migração, ou os investimentos em vocabulário personalizado já existentes justificam permanecer?
TL;DR
- O
SpeechAnalyzer(iOS 26+) é o framework moderno on-device de reconhecimento de fala da Apple. Ele coordena módulos de análise configurados na inicialização; o iOS 26 traz três:SpeechTranscriber(long-form),DictationTranscriber(frases curtas, equivalente ao SFSpeechRecognizer) eSpeechDetector(detecção de atividade de voz, deve ser pareado com um transcritor)2. - O novo framework é construído em torno de áudio de longa duração: palestras, reuniões, conversas com múltiplos falantes. Ele roda inteiramente on-device, gerencia idiomas automaticamente e vem com um novo modelo proprietário da Apple que, segundo relatos, é 2× mais rápido que o Whisper Large V3 Turbo em tarefas de transcrição equivalentes3.
- O
SFSpeechRecognizercontinua sendo distribuído e funcionando. O framework legado mantém o recurso de Vocabulário Personalizado (registrar palavras-chave conhecidas para maior precisão em termos específicos de domínio), que o novo framework ainda não oferece. - A migração é por recurso, não tudo ou nada. Apps que precisam de transcrição de longa duração, menor latência ou melhor qualidade em áudio distante migram para o
SpeechAnalyzer. Apps com investimentos em Vocabulário Personalizado mantêm oSFSpeechRecognizerpara esses recursos e adicionam oSpeechAnalyzerpara os novos. - O post do Vision framework do cluster cobre a outra primitiva de percepção on-device da Apple; o
SpeechAnalyzerestende o mesmo padrão on-device, sem nuvem, para áudio.
A arquitetura: Analyzer + Módulos
O SpeechAnalyzer não é um transcritor por si só. Ele é um coordenador que gerencia uma sessão de análise de áudio e despacha o buffer de áudio para um ou mais módulos2. Os módulos são configurados na inicialização através do inicializador init(modules:), e a análise começa alimentando uma AsyncSequence de buffers de áudio via 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)
}
}
Três módulos vêm no iOS 26:
SpeechTranscriber. O módulo de speech-to-text projetado para áudio de longa duração (palestras, reuniões, conversas com múltiplos falantes). Retorna resultados em streaming com timing por token, scores de confiança e uma AsyncSequence results que o app consome através de for try await. Cada resultado tem uma flag isFinal que separa hipóteses parciais voláteis do texto finalizado.
DictationTranscriber. O equivalente direto para o caso de uso do antigo SFSpeechRecognizer: transcrição de frases curtas com o mesmo modelo on-device que o SFSpeechRecognizer usa. Apps migrando do SFSpeechRecognizer para queries curtas usam o DictationTranscriber; apps adotando o framework para gravação de longa duração usam o SpeechTranscriber. A distinção importa porque o SpeechTranscriber e o DictationTranscriber usam coberturas de idioma diferentes e caminhos de modelo diferentes.
SpeechDetector. Detecção de atividade de voz. Reporta eventos quando a fala começa e termina dentro do stream de áudio. O detector não pode rodar sozinho; ele deve ser pareado com um dos módulos transcritores na mesma instância de SpeechAnalyzer. Apps usam ele para limitar o cômputo de transcrição (não transcrever silêncio) ou para acionar elementos de UI (indicadores “fale agora”).
A arquitetura modular é a melhoria estrutural sobre o SFSpeechRecognizer. A API antiga combina gerenciamento de sessão de áudio, detecção de idioma e transcrição em um único objeto; a nova API separa as responsabilidades, então os apps compõem os módulos que precisam.
O que o novo modelo traz
O modelo de transcrição por trás do SpeechTranscriber é um novo modelo on-device que a Apple desenvolveu especificamente para este framework4. As melhorias que a Apple destaca na WWDC 2025:
Qualidade de áudio de longa duração. O modelo é treinado para transcrição sustentada por minutos ou horas, não apenas queries curtas. Palestras, podcasts, reuniões com múltiplos falantes e sessões de ditado transcrevem com uma precisão que a Apple posiciona contra modelos da classe Whisper. O teste independente do MacStories mediu aproximadamente 2,2× mais rápido que a build Large V3 Turbo do MacWhisper em tarefas de transcrição equivalentes3.
Tratamento de áudio distante. Microfones posicionados pela sala, áudio de mesa de conferência com múltiplos falantes, áudio com ruído ambiente. O modelo é treinado para essas condições; o modelo mais antigo do SFSpeechRecognizer lida com elas de forma menos elegante.
Operação em tempo real com baixa latência. Os resultados em streaming do SpeechTranscriber chegam mais rápido que os callbacks SFSpeechRecognitionTask.shouldReportPartialResults do framework antigo. Apps que mostram transcrição ao vivo (legendas, UIs guiadas por voz, ditado) recebem atualizações mais suaves.
Gerenciamento automático de idiomas. O SpeechTranscriber(locale:) aceita um locale inicial, mas o modelo pode se adaptar a trocas de idioma no meio do stream. O framework antigo exige que o desenvolvedor instancie reconhecedores por idioma e alterne entre eles.
Sem custo no tamanho do app. O modelo vem com o sistema operacional, não com o app. Apps que adotam o SpeechAnalyzer não empacotam pesos de modelo adicionais. O contraste com empacotar um modelo da classe Whisper no bundle do app é significativo: uma stack de transcrição on-device competitiva custa zero bytes de bundle.
O que o framework antigo ainda oferece
O SFSpeechRecognizer continua sendo distribuído e funcionando no iOS 26. Três motivos para um app continuar usando ele:
Vocabulário Personalizado. O SFSpeechRecognitionRequest.contextualStrings permite que o app registre uma lista de palavras-chave conhecidas (substantivos próprios, termos técnicos, nomes de produtos) que o modelo terá maior probabilidade de reconhecer com precisão. O recurso melhora substancialmente a precisão para apps específicos de domínio (ditado médico com nomes de medicamentos, apps jurídicos com citações de casos, apps de engenharia com números de peças). O SpeechAnalyzer ainda não oferece Vocabulário Personalizado; para apps que dependem desse recurso, a migração seria uma regressão de precisão.
Suporte a sistemas operacionais antigos. O SFSpeechRecognizer está disponível no iOS 10+; o SpeechAnalyzer requer iOS 26+. Apps que têm como alvo o iOS 18 e versões anteriores precisam do framework legado.
Integração existente que funciona. Apps com integrações do SFSpeechRecognizer estáveis, auditadas e performáticas não têm motivo urgente para migrar. As melhorias do novo framework importam mais para casos de uso novos (transcrição de longa duração, áudio distante, conversas com múltiplos falantes); apps que lidam com queries de voz curtas através da API legada podem não ganhar o suficiente para justificar a migração.
Quando migrar
Três gatilhos de migração que vale nomear:
O app processa áudio de longa duração. Um gravador de reuniões, um app de transcrição de palestras, uma ferramenta de podcast-para-texto. O treinamento do novo modelo em áudio sustentado é o ajuste certo; o modelo antigo degrada em sessões longas. Migre primeiro.
O app precisa de áudio distante ou ruidoso. Transcrição em sala de conferência, gravação de entrevistas com um único microfone distante, áudio capturado em ambientes com ruído ambiente. O novo modelo lida com essas condições visivelmente melhor.
O app exibe UI de transcrição ao vivo. Sobreposições de legendas, interfaces de ditado, UIs assistivas guiadas por voz. A menor latência dos resultados em streaming do SpeechTranscriber faz a UI parecer mais responsiva.
Casos que não necessariamente justificam a migração:
- Queries de voz curtas com vocabulário personalizado (ditado de prescrições, terminologia jurídica). Mantenha o
SFSpeechRecognizerpelo recurso de vocabulário; use oSpeechAnalyzerse a Apple adicionar suporte a vocabulário em uma versão futura. - Apps que precisam suportar iOS 18 e anteriores. O
SpeechAnalyzeré exclusivo do iOS 26; o codebase precisa do framework legado para targets mais antigos de qualquer forma.
O padrão lado a lado
Para apps que tanto têm como alvo versões antigas do sistema operacional quanto querem a qualidade do novo framework no iOS 26+, o padrão lado a lado é a abordagem certa:
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)
}
}
O DictationTranscriber é a escolha certa para o branch do iOS 26+ porque o alvo da migração é o caso de uso do SFSpeechRecognizer (queries curtas com o mesmo modelo de ditado). Apps voltados para áudio de longa duração trocam o DictationTranscriber pelo SpeechTranscriber no branch do iOS 26.
Os dois frameworks coexistem; a verificação em tempo de execução escolhe o certo com base na disponibilidade. Nenhum bloqueia o outro; o pipeline de transcrição do app se adapta.
Privacidade e a superfície de autorização do Speech
Ambos os frameworks compartilham a mesma permissão do framework Speech (NSSpeechRecognitionUsageDescription no Info.plist) e o mesmo fluxo de autorização visível ao usuário5. A história de privacidade é a mesma: a transcrição de fala acontece on-device para os dois frameworks. O SpeechAnalyzer é on-device por design; o SFSpeechRecognizer por padrão é on-device quando a flag requiresOnDeviceRecognition da requisição é definida como true no próprio SFSpeechRecognitionRequest, caso contrário pode recorrer a um caminho server-side.
A implicação: apps usando o SpeechAnalyzer ainda devem tratar a autorização do Speech corretamente. O prompt do usuário, a entrada nas Configurações e a privacy nutrition label da App Store usam o mesmo mecanismo de autorização.
Para apps que fazem streaming de áudio do microfone para o analyzer, a configuração padrão do AVAudioSession se aplica. O post do Privacy Manifest do cluster cobre as entradas do manifest para apps que usam Speech; ambos os frameworks se enquadram nas mesmas declarações de privacidade.
A conexão com o agent-workflow
O modelo on-device e a saída estruturada do SpeechAnalyzer se combinam de forma limpa com dois padrões do cluster:
Foundation Models para raciocínio dentro do app. Um pipeline que transcreve áudio com o SpeechTranscriber, depois resume a transcrição com o LLM on-device (coberto em Foundation Models LLM on-device), roda inteiramente on-device. Total de chamadas de rede: zero. Total de exposição de dados a terceiros: zero.
App Intents para ações guiadas por voz. Um AppIntent que recebe uma transcrição como entrada pode ser invocado através de Vocal Shortcuts (coberto em Acessibilidade como plataforma) ou através da superfície de ações da Apple Intelligence. O método perform da intent roda o SpeechAnalyzer para transcrever a entrada, depois despacha para a lógica do app. O fluxo inteiro é privado e local.
O padrão: o novo framework Speech completa o triângulo de percepção on-device (Vision para imagens, Foundation Models para raciocínio de linguagem, Speech para áudio) que torna recursos de IA totalmente locais práticos para apps iOS.
O que esse padrão significa para apps iOS 26+
Três conclusões.
-
Use
SpeechAnalyzerpor padrão para código novo. O modelo moderno, a arquitetura modular e o desempenho aprimorado em long-form / áudio distante / ao vivo o tornam o ponto de partida certo. O framework legado é o fallback quando suporte a sistema operacional antigo ou Vocabulário Personalizado é necessário. -
Mantenha o
SFSpeechRecognizerpara apps dependentes de vocabulário. Até que a Apple adicione Vocabulário Personalizado ao novo framework, apps que dependem decontextualStringspara precisão em termos específicos de domínio mantêm a API antiga. Os dois frameworks coexistem; misturá-los por recurso é o padrão certo. -
A história de privacidade on-device se estende do Vision para o Speech. Apps que foram construídos em torno do CV on-device do Vision agora têm o equivalente para áudio. Combinado com Foundation Models para raciocínio, o pipeline completo de percepção-para-linguagem pode rodar localmente sem exposição de dados a terceiros.
O cluster Apple Ecosystem completo: App Intents tipados; servidores MCP; a questão do roteamento; Foundation Models; a distinção entre runtime e tooling LLM; três superfícies; o padrão de fonte única da verdade; Dois servidores MCP; hooks para desenvolvimento Apple; Live Activities; o contrato de runtime do watchOS; internals do SwiftUI; o modelo mental espacial do RealityKit; disciplina de schema do SwiftData; padrões do Liquid Glass; shipping multiplataforma; a matriz de plataformas; Vision framework; Symbol Effects; inferência Core ML; Writing Tools API; Swift Testing; Privacy Manifest; Acessibilidade como plataforma; tipografia SF Pro; padrões espaciais do visionOS; o que me recuso a escrever. O hub fica em Apple Ecosystem Series. Para um contexto mais amplo de iOS com agentes de IA, veja o guia de desenvolvimento de agentes iOS.
FAQ
O SFSpeechRecognizer está deprecado?
A Apple não deprecou formalmente o SFSpeechRecognizer. Ele continua sendo distribuído no iOS 26 e permanece suportado. O posicionamento na WWDC 2025 é que o SpeechAnalyzer é o caminho moderno e recomendado para código novo; o framework legado é a ferramenta certa para casos específicos (Vocabulário Personalizado, suporte a sistema operacional antigo).
Posso usar o SpeechAnalyzer com arquivos de áudio pré-gravados?
Sim. O SpeechAnalyzer.start(inputSequence:) aceita uma AsyncSequence de buffers de áudio. Apps envolvem qualquer fonte de áudio (microfone via AVAudioEngine, URLs de arquivos pré-gravados, instâncias de AVAsset) em um adapter de AsyncSequence e alimentam o analyzer. O stream de transcrição produz o mesmo consumo for try await result in transcriber.results independentemente da fonte de entrada.
O que acontece com o Vocabulário Personalizado se eu migrar?
O Vocabulário Personalizado não é atualmente suportado pelo SpeechAnalyzer / SpeechTranscriber. Apps que dependem dele para precisão específica de domínio não devem migrar esse caminho até que a Apple adicione o recurso. Uma abordagem híbrida (usando SpeechAnalyzer para transcrição geral e SFSpeechRecognizer com contextualStrings para transcrição sensível ao vocabulário) funciona no iOS 26.
Posso rodar o SpeechAnalyzer server-side?
Não. O SpeechAnalyzer é um framework exclusivamente on-device. Ele não tem um caminho server-side. Para transcrição server-side, as ferramentas certas são APIs de nuvem (OpenAI Whisper API, Google Cloud Speech-to-Text, AWS Transcribe) ou modelos auto-hospedados. O valor do framework da Apple é precisamente a história de privacidade on-device e custo zero por chamada.
Como funciona a detecção de idioma?
O SpeechTranscriber(locale:) aceita um locale inicial. O modelo pode se adaptar automaticamente a trocas de idioma no meio do stream. Para apps onde o idioma é conhecido de antemão (o recurso de ditado de um app localizado), especifique-o explicitamente. Para contextos multilíngues (um transcritor de reunião onde os falantes podem trocar de idioma), o gerenciamento automático é o comportamento certo.
Onde isso se encaixa com os outros posts do cluster sobre ML on-device?
O SpeechAnalyzer é o terceiro pilar da stack de percepção on-device: o Vision (coberto em Vision Framework) trata de imagens, o Speech trata de áudio e o Core ML (coberto em Inferência Core ML on-device) é a engine por trás de ambos. Foundation Models (coberto em Foundation Models LLM on-device) trata do raciocínio de linguagem. Juntos eles formam um pipeline completo de IA on-device que não exige chamadas de rede.
Referências
-
Apple Developer: Bring advanced speech-to-text to your app with SpeechAnalyzer (sessão 277 da WWDC 2025). Introdução do framework SpeechAnalyzer, arquitetura modular e o novo modelo de transcrição on-device. ↩
-
Documentação do Apple Developer:
SpeechAnalyzereSpeechTranscriber. Referência do framework cobrindo a arquitetura analyzer-e-módulos. ↩↩ -
MacStories: Hands-On: How Apple’s New Speech APIs Outpace Whisper for Lightning-Fast Transcription. Benchmark independente do novo modelo contra o Whisper Large V3 Turbo, reportando transcrição aproximadamente 2× mais rápida em hardware Mac Silicon. ↩↩
-
Documentação do Apple Developer: Bringing advanced speech-to-text capabilities to your app. Guia oficial de adoção da Apple cobrindo resultados em streaming e suporte multi-locale. ↩
-
Documentação do Apple Developer:
SFSpeechRecognizer.requestAuthorization(_:). A superfície de autorização compartilhada para os dois frameworks de fala. ↩