← Todos os Posts

O novo framework Speech da Apple: SpeechAnalyzer contra SFSpeechRecognizer

O iOS 26 traz um novo framework de reconhecimento de fala ao lado do já conhecido SFSpeechRecognizer. A nova superfície de API é o SpeechAnalyzer mais os módulos (SpeechTranscriber, SpeechDetector) que se compõem em torno dele1. A própria Apple apresenta o SpeechAnalyzer como o caminho moderno: um novo modelo que roda no dispositivo, suporte a áudio de longa duração, gerenciamento automático de idiomas, baixa latência para casos em tempo real e uma arquitetura modular capaz de receber outros tipos de análise ao longo do tempo. O SFSpeechRecognizer continua sendo distribuído e funcionando; as razões para ficar são o suporte a sistemas antigos e uma lacuna mais estreita: vocabulário personalizado no modelo de longa duração SpeechTranscriber do novo framework, já que o caminho de curta duração DictationTranscriber aceita contextual strings sem problema.

Este artigo confronta o novo framework com o antigo. O recorte é “quando migrar”, e não “como usar a nova API”, porque todo time com uma integração SFSpeechRecognizer funcionando enfrenta a mesma triagem: o modelo moderno e a arquitetura do novo framework compensam o custo da migração, ou os investimentos já feitos em vocabulário personalizado justificam ficar onde está?

Resumo

  • O SpeechAnalyzer (iOS 26+) é o framework moderno de reconhecimento de fala no dispositivo da Apple. Ele coordena módulos de análise configurados na inicialização; o iOS 26 traz três deles: SpeechTranscriber (longa duração), DictationTranscriber (falas curtas, o equivalente ao SFSpeechRecognizer) e SpeechDetector (detecção de atividade de voz, que precisa ser combinado com um transcritor)2.
  • O novo framework foi construído em torno do áudio de longa duração: aulas, reuniões, conversas com vários participantes. Ele roda inteiramente no dispositivo, cuida sozinho dos recursos de modelo de cada idioma 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 SFSpeechRecognizer continua sendo distribuído e funcionando — e o vocabulário personalizado deixou de ser exclusividade dele. O AnalysisContext.contextualStrings do novo framework (definido por SpeechAnalyzer.setContext(_:)) registra até 100 frases específicas de um domínio para o caminho do DictationTranscriber6. A lacuna que sobra é o modelo de longa duração SpeechTranscriber, que não aceita contextual strings.
  • A migração acontece recurso a recurso, não em bloco. Apps que precisam de transcrição de longa duração, latência menor ou melhor qualidade com áudio distante migram para o SpeechAnalyzer. Apps com investimentos em vocabulário personalizado podem migrar o ditado curto usando DictationTranscriber mais contextual strings; só a transcrição de longa duração com vocabulário personalizado ainda pesa a favor da API antiga.
  • O artigo sobre o framework Vision deste mesmo conjunto cobre a outra primitiva de percepção no dispositivo da Apple; o SpeechAnalyzer estende ao áudio esse mesmo padrão local, sem nuvem.

A arquitetura: analisador + módulos

O SpeechAnalyzer não transcreve sozinho. Ele é um coordenador que gerencia uma sessão de análise de áudio e distribui o buffer de áudio para um ou mais módulos2. Os módulos são configurados na inicialização pelo inicializador init(modules:), e a análise começa quando você alimenta uma AsyncSequence de valores AnalyzerInput — cada um envolvendo um buffer de áudio — por meio de 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 chegam no iOS 26:

SpeechTranscriber. O módulo de fala para texto pensado para áudio de longa duração (aulas, reuniões, conversas com vários participantes). Devolve resultados em streaming com marcação de tempo por token, pontuações de confiança e uma AsyncSequence results que o app consome com for try await. Cada resultado carrega uma flag isFinal que separa as hipóteses parciais voláteis do texto já finalizado.

DictationTranscriber. O equivalente direto do caso de uso do antigo SFSpeechRecognizer: transcrição de falas curtas com o mesmo modelo no dispositivo que o SFSpeechRecognizer usa. Apps que migram do SFSpeechRecognizer para consultas curtas recorrem ao DictationTranscriber; apps que adotam o framework para gravações longas recorrem ao SpeechTranscriber. A separação importa porque SpeechTranscriber e DictationTranscriber usam cobertura de idiomas e caminhos de modelo diferentes.

SpeechDetector. Detecção de atividade de voz. Reporta eventos de início e fim de fala dentro do fluxo de áudio. O detector não roda sozinho; ele precisa ser combinado com um dos módulos de transcrição na mesma instância de SpeechAnalyzer. Os apps usam esse módulo para limitar o custo computacional da transcrição (não transcrever silêncio) ou para conduzir elementos de interface (os indicadores de “pode falar”).

A arquitetura modular é a melhoria estrutural em relação ao SFSpeechRecognizer. A API antiga concentra configuração, tratamento de buffer e entrega de resultados num par recognizer/request, e dependia de o usuário ativar idiomas nos ajustes; a nova separa o coordenador de sessão dos seus módulos de análise, de modo que cada app compõe o que precisa.

O que o novo modelo traz

O modelo de transcrição por trás do SpeechTranscriber é um novo modelo no dispositivo que a Apple desenvolveu especificamente para este framework4. As melhorias que a Apple destacou na WWDC 2025:

Qualidade em áudio de longa duração. O modelo é treinado para transcrição contínua ao longo de minutos ou horas, não apenas para consultas curtas. Aulas, podcasts, reuniões com vários participantes e sessões de ditado são transcritas com uma precisão que a Apple posiciona diante dos modelos da classe Whisper. Um teste independente do MacStories mediu uma velocidade cerca de 2,2× maior que a da versão Large V3 Turbo do MacWhisper em tarefas de transcrição equivalentes3.

Tratamento de áudio distante. Microfones espalhados pela sala, áudio de mesa de reunião com vários participantes, gravações com ruído ambiente. O modelo é treinado para essas condições; o modelo mais antigo do SFSpeechRecognizer lida com elas com menos elegância.

Operação em tempo real com baixa latência. Os resultados em streaming do SpeechTranscriber chegam mais rápido que os callbacks de SFSpeechRecognitionRequest.shouldReportPartialResults do framework antigo. Apps que exibem transcrição ao vivo (legendas, interfaces conduzidas por voz, ditado) recebem atualizações mais fluidas.

Gerenciamento automático de idiomas. A formulação da Apple (paráfrase minha, não termo deles) se refere ao gerenciamento de modelos e recursos, não à troca de idioma no meio do fluxo. O sistema baixa e instala os recursos de modelo certos para cada idioma via AssetInventory, então os apps param de cuidar na mão da disponibilidade de modelo por idioma. Uma instância de transcritor continua trabalhando com um idioma por vez — igual ao framework antigo —, mas o encanamento de recursos que tornava o suporte a vários idiomas penoso agora é tarefa do sistema.

Nenhum 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 distribuir um modelo da classe Whisper dentro do bundle é grande: uma pilha de transcrição local competitiva custa zero byte de bundle.

O que o framework antigo ainda oferece

O SFSpeechRecognizer continua sendo distribuído e funcionando no iOS 26. Há três razões pelas quais um app pode continuar com ele:

Vocabulário personalizado em áudio de longa duração. O SFSpeechRecognitionRequest.contextualStrings permite que o app registre uma lista de palavras-chave conhecidas (nomes próprios, termos técnicos, nomes de produto) que o modelo terá mais chance de reconhecer corretamente. O recurso melhora bastante a precisão em apps de domínio específico (ditado médico com nomes de medicamentos, apps jurídicos com citações de jurisprudência, apps de engenharia com números de peça). O novo framework tem a própria versão disso no caminho do ditado: o AnalysisContext.contextualStrings aceita até 100 frases agrupadas por tag, é definido no analisador via SpeechAnalyzer.setContext(_:), e as frases registradas ali podem ser reconhecidas mesmo quando estão ausentes do vocabulário do sistema6. O DictationTranscriber aceita ainda uma configuração própria de modelo de linguagem pela dica de conteúdo ContentHint.customizedLanguage(modelConfiguration:)7. O que ainda não tem equivalente são as contextual strings no modelo de longa duração SpeechTranscriber — um app que precisa de vocabulário personalizado na transcrição de longa duração regrediria se migrasse esse caminho.

Suporte a sistemas antigos. O SFSpeechRecognizer está disponível desde o iOS 10; o SpeechAnalyzer exige iOS 26 ou superior. Apps que miram iOS 18 e anteriores precisam do framework legado.

Uma integração existente que funciona. Apps com integrações de SFSpeechRecognizer estáveis, auditadas e performáticas não têm razão urgente para migrar. As melhorias do novo framework pesam sobretudo em casos novos (transcrição de longa duração, áudio distante, conversas com vários participantes); apps que resolvem consultas de voz curtas pela API legada talvez não ganhem o suficiente para justificar a migração.

Quando migrar

Vale nomear três gatilhos de migração:

O app processa áudio de longa duração. Um gravador de reuniões, um app de transcrição de aulas, uma ferramenta que transforma podcast em texto. O treinamento do novo modelo em áudio contínuo cai como uma luva; o modelo antigo se degrada ao longo de sessões longas. Migre isso primeiro.

O app precisa de áudio distante ou ruidoso. Transcrição em sala de reunião, gravação de entrevistas com um único microfone afastado, áudio capturado em ambientes com ruído de fundo. O novo modelo dá conta dessas condições de forma perceptivelmente melhor.

O app exibe uma interface de transcrição ao vivo. Sobreposições de legenda, interfaces de ditado, interfaces assistivas conduzidas por voz. A latência menor dos resultados em streaming do SpeechTranscriber deixa a interface com uma sensação mais responsiva.

Casos que não exigem necessariamente a migração:

  • Transcrição de longa duração que depende de vocabulário personalizado (um gravador de reuniões que precisa captar nomes de medicamentos ou citações de jurisprudência). O modelo de longa duração SpeechTranscriber não aceita contextual strings, então essa combinação fica no SFSpeechRecognizer até a Apple fechar a lacuna. Consultas de voz curtas com vocabulário personalizado migram sem atrito — DictationTranscriber mais AnalysisContext.contextualStrings cobre esse caso6.
  • Apps que precisam dar suporte a iOS 18 e anteriores. O SpeechAnalyzer só existe no iOS 26; a base de código vai precisar do framework legado para alvos antigos de qualquer forma.

O padrão lado a lado

Para apps que miram versões antigas do sistema e ao mesmo tempo 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, preset: .shortDictation)
    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 ramo do iOS 26+ porque o alvo da migração é o caso de uso do SFSpeechRecognizer (consultas curtas com o mesmo modelo de ditado). Apps voltados a áudio de longa duração trocam DictationTranscriber por SpeechTranscriber no ramo do iOS 26.

Os dois frameworks coexistem; a verificação em tempo de execução escolhe o certo conforme a disponibilidade. Nenhum bloqueia o outro; o pipeline de transcrição do app se adapta.

Privacidade e a superfície de autorização de fala

Os dois frameworks divergem na camada de autorização. O SFSpeechRecognizer mantém a própria autorização de reconhecimento de fala: NSSpeechRecognitionUsageDescription no Info.plist mais o aviso de SFSpeechRecognizer.requestAuthorization(_:)5. O SpeechAnalyzer não usa essa superfície — um app que transcreve áudio ao vivo com ele precisa da permissão de microfone (NSMicrophoneUsageDescription) e de nada além disso para transcrever áudio que já tem em mãos. Do lado da privacidade, ambos ficam no dispositivo: o SpeechAnalyzer é local por design; o SFSpeechRecognizer roda localmente quando a flag requiresOnDeviceRecognition é definida como true no próprio SFSpeechRecognitionRequest — é obrigatório, não é o padrão —, caso contrário ele pode seguir um caminho no servidor.

O que isso implica para o padrão lado a lado: um app que roda os dois frameworks carrega as duas superfícies de permissão — o aviso de microfone para o ramo do SpeechAnalyzer e a autorização de reconhecimento de fala para o ramo legado — e o rótulo de privacidade da App Store deve refletir as duas.

Para apps que transmitem o áudio do microfone ao analisador, vale a configuração usual de AVAudioSession. O artigo sobre o Privacy Manifest deste conjunto cobre as entradas de manifesto para apps que usam o Speech; os dois frameworks caem sob as mesmas declarações de privacidade.

A conexão com workflows de agentes

O modelo local e a saída estruturada do SpeechAnalyzer combinam bem com dois padrões do conjunto:

Foundation Models para raciocínio dentro do app. Um pipeline que transcreve áudio com o SpeechTranscriber e depois resume a transcrição com o LLM local (tratado em Foundation Models, o LLM no dispositivo) roda inteiramente no dispositivo. Total de chamadas de rede: zero. Total de dados expostos a terceiros: zero.

App Intents para ações conduzidas por voz. Um AppIntent que recebe uma transcrição como entrada pode ser invocado pelos Vocal Shortcuts (tratados em Acessibilidade como plataforma) ou pela superfície de ações da Apple Intelligence. O método perform do intent executa o SpeechAnalyzer para transcrever a entrada e então passa a bola para a lógica do app. Todo o fluxo permanece privado e local.

O padrão: o novo framework Speech completa o triângulo de percepção local (Vision para imagens, Foundation Models para raciocínio de linguagem, Speech para áudio) que torna viáveis os recursos de IA totalmente locais em apps de iOS.

O que esse padrão significa para apps em iOS 26+

Três conclusões.

  1. Adote o SpeechAnalyzer por padrão em código novo. O modelo moderno, a arquitetura modular e o desempenho melhor em longa duração, áudio distante e tempo real fazem dele o ponto de partida certo. O framework legado é o recurso reserva quando o suporte a sistemas antigos ou o vocabulário personalizado em transcrição de longa duração forem obrigatórios.

  2. Apps dependentes de vocabulário se dividem pela duração do áudio. O ditado curto com vocabulário personalizado migra: DictationTranscriber mais AnalysisContext.contextualStrings carrega os termos do domínio6. A transcrição de longa duração com vocabulário personalizado fica no SFSpeechRecognizer até o modelo SpeechTranscriber aceitar contextual strings. Os dois frameworks coexistem; misturá-los recurso a recurso é o padrão certo.

  3. A história de privacidade local se estende de Vision a Speech. Apps construídos em torno da visão computacional local do Vision agora têm o equivalente para áudio. Somado aos Foundation Models para raciocínio, todo o encadeamento de percepção a linguagem pode rodar localmente sem expor dados a terceiros.

O conjunto Apple Ecosystem completo: App Intents tipados; servidores MCP; a questão do roteamento; Foundation Models; a distinção entre LLM de execução e LLM de ferramental; três superfícies; o padrão de fonte única da verdade; dois servidores MCP; hooks para desenvolvimento Apple; Live Activities; o contrato de execução do watchOS; as entranhas do SwiftUI; o modelo mental espacial do RealityKit; a disciplina de esquema no SwiftData; os padrões do Liquid Glass; a publicação multiplataforma; a matriz de plataformas; o framework Vision; os Symbol Effects; a inferência com Core ML; a API Writing Tools; Swift Testing; o Privacy Manifest; a acessibilidade como plataforma; a tipografia SF Pro; os padrões espaciais do visionOS; aquilo sobre o que me recuso a escrever. O eixo fica na série Apple Ecosystem. Para um contexto mais amplo de iOS com agentes de IA, veja o guia de desenvolvimento de agentes no iOS.

Perguntas frequentes

O SFSpeechRecognizer está obsoleto?

A Apple não declarou formalmente o SFSpeechRecognizer como obsoleto. Ele continua sendo distribuído no iOS 26 e segue com suporte. O recado da WWDC 2025 é que o SpeechAnalyzer é o caminho moderno e recomendado para código novo; o framework legado é a ferramenta certa em casos específicos (vocabulário personalizado em transcrição de longa duração, suporte a sistemas antigos).

Dá para usar o SpeechAnalyzer com arquivos de áudio pré-gravados?

Dá. O SpeechAnalyzer.start(inputSequence:) aceita uma AsyncSequence de valores AnalyzerInput, cada um envolvendo um buffer de áudio. Os apps envolvem qualquer fonte de áudio (microfone via AVAudioEngine, URLs de arquivos pré-gravados, instâncias de AVAsset) num adaptador AsyncSequence e entregam ao analisador. O fluxo de transcrição é consumido do mesmo jeito, com for try await result in transcriber.results, seja qual for a fonte de entrada.

O que acontece com o vocabulário personalizado se eu migrar?

Depende do transcritor em que a migração cair. O caminho do ditado dá suporte a ele: registre até 100 frases com AnalysisContext.contextualStrings, defina o contexto via SpeechAnalyzer.setContext(_:) e o DictationTranscriber as consome6. O modelo de longa duração SpeechTranscriber não aceita contextual strings, então a transcrição longa sensível a vocabulário deve permanecer no SFSpeechRecognizer com contextualStrings até a Apple fechar essa lacuna. Uma abordagem híbrida (o novo framework para transcrição geral, a API legada para o caminho longo sensível a vocabulário) funciona no iOS 26.

Dá para rodar o SpeechAnalyzer no servidor?

Não. O SpeechAnalyzer é um framework que roda somente no dispositivo. Ele não tem caminho no servidor. Para transcrição no servidor, as ferramentas certas são APIs na nuvem (OpenAI Whisper API, Google Cloud Speech-to-Text, AWS Transcribe) ou modelos hospedados por conta própria. O valor do framework da Apple está justamente na privacidade local e no custo zero por chamada.

Como funciona a detecção de idioma?

O SpeechTranscriber(locale:) recebe um idioma por instância de transcritor, e não há troca de idioma no meio do fluxo. O que o iOS 26 automatiza é o lado dos recursos: o AssetInventory baixa e gerencia os recursos de modelo de cada idioma, então dar suporte a vários idiomas não significa mais cuidar na mão da disponibilidade de modelo. Quando o idioma é conhecido de antemão (o recurso de ditado de um app localizado), especifique-o explicitamente. Em contextos multilíngues (um transcritor de reuniões em que os participantes podem trocar de idioma), detecte o idioma ou deixe o usuário escolher, e então crie a instância do transcritor para aquele idioma.

Como isso se encaixa com os outros artigos do conjunto sobre ML no dispositivo?

O SpeechAnalyzer é o terceiro pilar da pilha de percepção local: o Vision (tratado em O framework Vision) cuida das imagens, o Speech cuida do áudio, e o Core ML (tratado em Inferência com Core ML no dispositivo) é o motor por baixo dos dois. Os Foundation Models (tratados em Foundation Models, o LLM no dispositivo) cuidam do raciocínio de linguagem. Juntos, formam um pipeline de IA local completo que dispensa chamadas de rede.

Referências


  1. Apple Developer: Bring advanced speech-to-text to your app with SpeechAnalyzer (sessão 277 da WWDC 2025). Apresentação do framework SpeechAnalyzer, da arquitetura modular e do novo modelo de transcrição no dispositivo. 

  2. Apple Developer Documentation: SpeechAnalyzer e SpeechTranscriber. A referência do framework, que cobre a arquitetura de analisador e módulos. 

  3. MacStories: Hands-On: How Apple’s New Speech APIs Outpace Whisper for Lightning-Fast Transcription. Benchmark independente do novo modelo diante do Whisper Large V3 Turbo; no teste em macOS a ferramenta se mostrou 2,2× mais rápida que a versão Large V3 Turbo do MacWhisper. 

  4. Apple Developer Documentation: Bringing advanced speech-to-text capabilities to your app. A página de código de exemplo da Apple para adoção do SpeechAnalyzer (um projeto para baixar com um resumo curto, não um guia em prosa). 

  5. Apple Developer Documentation: SFSpeechRecognizer.requestAuthorization(_:). A superfície de autorização de reconhecimento de fala — usada pelo caminho do SFSpeechRecognizer; o SpeechAnalyzer se apoia na permissão de microfone. 

  6. Apple Developer Documentation: AnalysisContext.contextualStrings (iOS 26.0+). Listas de frases agrupadas por tag (até 100 frases) que os transcritores conseguem reconhecer mesmo quando essas frases estão ausentes do vocabulário do sistema; aplicadas a uma sessão via SpeechAnalyzer.setContext(_:) e consumidas pelo DictationTranscriber

  7. Apple Developer Documentation: DictationTranscriber.ContentHint.customizedLanguage(modelConfiguration:) (iOS 26.0+). Dica de conteúdo que aponta o ditado curto para uma configuração própria de modelo de linguagem. 

Artigos relacionados

Foundation Models no iOS 27: controle de chamada de ferramentas

O iOS 27 adiciona GenerationOptions.ToolCallingMode para orientar o uso de ferramentas pelo modelo no dispositivo, mais …

14 min de leitura

IA no dispositivo em todo o iOS 27: Spotlight e mídia

O iOS 27 costura o modelo no dispositivo por todo o sistema: SpotlightSearchTool ancora o Core Spotlight no LLM e o AVFo…

15 min de leitura

O stack de agentes do design engineer

Design engineers precisam de infraestrutura de agentes que garanta consistência visual, tipografia, cor e bom gosto. Aqu…

13 min de leitura