
Como corrigir erros de code switching na transcrição
Summarize this article with:
Por que o áudio em idiomas mistos falha
A correção para a maioria das falhas de code switching é escolher um motor com modelo multilíngue nativo e dizer a ele para não se ancorar em um único idioma. Se você usa AssemblyAI, passe speech_model: "universal" e defina seus dois códigos de idioma. Se você usa Deepgram, defina language=multi com Nova-3 ou Flux. Se você usa Whisper, defina language=None para permitir detecção por segmento. O restante deste post explica por que essas escolhas importam e o que fazer quando elas ainda falham.
A maioria dos motores de transcrição é construída em torno da premissa de um único idioma. Eles recebem o áudio, escolhem um idioma principal e mapeiam cada fonema pelo vocabulário desse idioma. Quando o falante troca de idioma no meio da frase, o modelo enfrenta três opções ruins: renderizar o idioma secundário como aproximações fonéticas do principal ("para crear" vira "para crayer"), travar no novo idioma e permanecer nele mesmo depois que o falante volta ao anterior, ou descartar completamente os segmentos incompatíveis. Cada uma delas gera uma transcrição quebrada.
O problema mais profundo está justamente nas fronteiras entre idiomas. Pesquisas sobre modelos de fala multilíngues mostram que o WER no ponto de troca (a taxa de erro medida na janela de 2 a 3 palavras ao redor de cada transição de idioma) pode ficar de 30 a 50 pontos mais alto que o WER combinado geral. Um modelo com 10% de WER no total ainda pode estragar todas as trocas de idioma. Os números de precisão combinada escondem isso.
Os três modos de falha, nomeados
Entender qual modo de falha você está enfrentando indica qual correção aplicar.
Substituição fonética: o motor permanece no idioma principal e renderiza palavras do idioma secundário como quase-homófonas. É a falha mais comum e a mais fácil de identificar. "Finalizando" vira "finally sando". Correção: mudar para um motor multilíngue.
Travamento de idioma: o motor detecta a troca e se compromete com o novo idioma, mas depois não consegue voltar. O restante da transcrição fica no idioma errado. Correção: usar detecção por segmento, e não uma detecção única para todo o job.
Alucinação de fronteira: o modelo perde o contexto em um ponto de transição e gera texto plausível que nunca foi dito. É a falha mais difícil de perceber, porque a saída parece limpa, mas está errada. É especialmente comum no Whisper em segmentos curtos de áudio em que silêncio ou ruído caem numa fronteira de idioma. Correção: usar pré-processamento com VAD (detecção de atividade de voz) para remover segmentos silenciosos antes que cheguem ao modelo e preferir motores de code switching construídos especificamente para isso, em vez de modelos multilíngues genéricos, para conteúdo com muitas trocas.
Correção 1: use um motor especializado em code switching
O avanço mais claro nessa área desde 2024 é que várias APIs importantes agora oferecem modos dedicados de code switching, e não apenas "suporte multilíngue".
Deepgram Nova-3 com language=multi oferece suporte a code switching em 10 idiomas: inglês, espanhol, francês, alemão, hindi, russo, português, japonês, italiano e holandês. Defina language=multi na query string ao chamar /listen. Para streaming, a Deepgram recomenda endpointing=100 (detecção de endpoint em 100 ms) especificamente para áudio com trocas de idioma. A Nova-3 Multilingual entregou uma redução relativa de cerca de 34% no WER em lote na atualização de março de 2026, com os maiores ganhos nas fronteiras de troca de idioma.
Deepgram Flux Multilingual (flux-general-multi), lançado em disponibilidade geral em abril de 2026, oferece suporte aos mesmos 10 idiomas com code switching nativo integrado à arquitetura do modelo, e não como uma camada de detecção sobre um modelo monolíngue. Você pode passar parâmetros opcionais language_hint para enviesar a detecção quando souber quais idiomas estão presentes.
AssemblyAI Universal-3 Pro lida com code switching para áudio pré-gravado em inglês, espanhol, português, francês, alemão e italiano. A restrição que você precisa saber: é possível especificar no máximo dois códigos de idioma por requisição de transcrição, e um deles deve ser inglês. O idioma que não é inglês deve ser o dominante no áudio para obter os melhores resultados.
Especificamente para streaming em tempo real, o modelo Universal-Streaming da AssemblyAI processa seis idiomas em uma única passada (inglês, espanhol, francês, alemão, italiano e português), sem exigir especificação manual de idioma.
Para pares de idiomas fora desses conjuntos, ferramentas baseadas no Whisper continuam sendo a alternativa mais abrangente. Veja a Correção 2.
Veja também: Deepgram Nova-3 explicado para uma análise mais profunda da arquitetura do modelo multilíngue.
Correção 2: use o Whisper com detecção automática para pares sem suporte
Para pares de idiomas não cobertos pelos motores especializados acima (wolof + francês, cantonês + inglês, Taglish, Singlish, Portunhol e outros), o Whisper Large-v3 é a opção mais prática, porque seus dados de treinamento cobriram uma gama maior de combinações de idiomas.
A configuração crítica: defina language=None para permitir detecção por segmento, em vez de forçar um único código de idioma.
result = model.transcribe(
audio_file,
language=None, # auto-detect per segment
task="transcribe"
)
Definir um código de idioma específico força o modelo a interpretar todo o áudio como sendo nesse idioma. Definir como None permite que o Whisper estime o idioma a cada janela de 30 segundos.
A ressalva honesta: a precisão de code switching do Whisper degrada nas fronteiras entre idiomas, e ele é mais propenso a alucinações nesses pontos do que os motores especializados. Para Hinglish especificamente, nenhuma ferramenta comercial de transcrição lida com ele de forma confiável em 2026. O Whisper é a melhor opção disponível para code switching hindi-inglês, mas espere fazer mais correção manual do que faria para conteúdo Spanglish ou francês-inglês, em que há mais dados de treinamento.

Correção 3: especifique os idiomas explicitamente onde houver suporte
Para motores que aceitam uma lista de idiomas em vez de um único código, nomear explicitamente os idiomas presentes no áudio ajuda o modelo a concentrar sua detecção.
# Google Cloud Speech-to-Text (Chirp 3, V2 API)
config = {
"model": "chirp_3",
"language_codes": ["es-US", "en-US"] # up to 3 languages; fewer = more accurate
}
A documentação do Google observa que especificar menos idiomas aumenta a precisão da detecção. A API V2 também aceita language_codes: ["auto"] no Chirp 3 para detecção totalmente automática, embora códigos explícitos superem a detecção automática quando você conhece o par de idiomas.
No Google Cloud STT, o recurso está disponível apenas na região global e nas multirregiões us e eu.
Padrões de code switching e escolha de motores
O motor certo depende de quais idiomas estão sendo alternados. Aqui está um panorama prático por pares comuns.
| Par de idiomas | Melhor motor | Observações |
|---|---|---|
| Spanglish (espanhol + inglês) | Deepgram Nova-3 language=multi, AssemblyAI U3-Pro, Whisper | Três opções sólidas; todas têm muitos dados de treinamento para ambos os idiomas |
| Hinglish (hindi + inglês) | Deepgram Nova-3 language=multi, Whisper (auto) | O hindi está no conjunto de 10 idiomas da Deepgram; Whisper como alternativa para casos extremos |
| Francês + árabe | Whisper (auto) | Nem o modo multi da Deepgram nem a AssemblyAI U3-Pro cobrem árabe no modo de code switching |
| Taglish (tagalo + inglês) | Whisper (auto), Google Cloud STT | Não há modo de code switching dedicado para tagalo |
| Wolof + francês | Whisper (auto) | O Whisper é a única opção realista; espere mais correção |
| Mandarim/cantonês + inglês | Whisper (auto) | O cantonês tem menos dados de treinamento que o mandarim; espere taxa de erro maior |
| Portunhol (português + espanhol) | Deepgram Nova-3 language=multi, Whisper | Ambos os idiomas estão no conjunto da Deepgram |
| Alemão + inglês | Deepgram Nova-3, AssemblyAI U3-Pro, Flux | Os três motores cobrem esse par |
Para gravações de reuniões multilíngues em que você precisa de separação de falantes junto com detecção de idioma, veja diarização de falantes explicada e transcrição de reuniões multilíngues.
AWS Transcribe: identificação multilíngue vs. code switching
O AWS Transcribe adicionou identificação multilíngue para jobs em lote e de streaming. O recurso detecta os idiomas dominantes por segmento e os rotula na saída da transcrição. Ele pode identificar "falantes bilíngues que alternam entre idiomas, como inglês dos EUA e hindi-IN, identificando e transcrevendo cada idioma separadamente."
A distinção importante: isso é identificação de idioma e transcrição por segmento, não code switching no meio da frase. Para alternância estruturada (o falante A responde em inglês, o falante B responde em espanhol), funciona bem. Para mistura intrafrasal ("I was finalizando the deal"), é menos confiável, porque a troca acontece dentro de uma única janela de detecção.
Recursos de redação (ocultação de dados sensíveis) e modelos de idioma personalizados não são atualmente compatíveis com a identificação multilíngue.
Correção 4: divida o áudio para trocas previsíveis
Para gravações com alternância estruturada de idiomas, em vez de mistura no nível da frase, dividir por segmento de idioma e transcrever cada parte separadamente produz a saída mais limpa.
Vale a pena dar esses passos extras quando: o conteúdo tem fronteiras de idioma previsíveis (uma entrevista em que as perguntas são em inglês e as respostas em mandarim), o risco é alto o suficiente para justificar o trabalho extra, ou o par de idiomas não tem suporte de um motor especializado.
O fluxo de trabalho: identificar as fronteiras de idioma (manualmente ou com uma ferramenta de detecção de idioma), cortar em segmentos, transcrever cada segmento com a configuração de idioma correspondente e mesclar em sequência. Para conteúdo recorrente com estrutura previsível, isso pode ser automatizado via script.
Limpeza manual de transcrições com code switching
Mesmo com as melhores escolhas de motor, transcrições com trocas de idioma se beneficiam de uma rodada de revisão direcionada.
Verifique primeiro as palavras dos pontos de troca. As palavras imediatamente antes e depois de cada fronteira de idioma concentram a maioria dos erros. Examine essas posições antes de ler a transcrição completa.
Corrija substituições fonéticas. Quando o modelo renderizou um idioma como uma correspondência fonética aproximada no outro idioma, o erro costuma ser reconhecível se você conhece os dois idiomas. "Para crayer" em vez de "para crear", "I told my mom acha" em vez de "I told my mom accha".
Verifique nomes próprios. Nomes de pessoas, lugares e marcas que cruzam fronteiras de idioma frequentemente são renderizados de forma inconsistente ou fonética. Uma revisão feita por um falante nativo bilíngue é a verificação mais eficiente para conteúdo de alta importância.
Não edite para fluidez de leitura à custa da precisão. Fala com trocas de idioma pode parecer estranha em forma de transcrição, mas a função da transcrição é registrar o que foi dito, não ler suavemente. Marque os trechos estranhos para revisão humana em vez de suavizá-los silenciosamente.
Para benchmarks de precisão entre motores, veja precisão de transcrição explicada.
Quando o problema não é code switching
Alguns áudios recebem um diagnóstico errado de problema de code switching quando, na verdade, são outra coisa.
Fala com sotaque em um só idioma: um falante com sotaque regional forte pode disparar a detecção de idioma do modelo. Isso não é code switching, e a correção é diferente: use um modelo com forte robustez a sotaques em vez de um modo de code switching multilíngue.
Empréstimos e estrangeirismos: um falante que diz "I ordered sushi at the izakaya" não fez code switching. Palavras emprestadas isoladas, inseridas em frases de resto monolíngues, são bem tratadas por qualquer motor moderno. Isso só se torna um problema de transcrição quando os empréstimos são raros e o modelo os renderiza foneticamente.
Conteúdo bilíngue estruturado: se cada enunciado está claramente em um único idioma (falante A em inglês, falante B em francês), você tem conteúdo bilíngue, não code switching. Use identificação multilíngue (AWS Transcribe, Google Cloud STT) ou atribuição de idioma por falante em vez de um modelo de code switching.
A regra prática: se a troca acontece no meio da frase (estrutura gramatical mista dentro de um mesmo enunciado), é code switching. Se a troca acontece nas fronteiras entre enunciados, é conteúdo bilíngue. A correção é diferente.
Para reuniões multilíngues gravadas, criar atas de reunião a partir de áudio cobre o fluxo de trabalho completo, incluindo o tratamento de idiomas.
Minha opinião: em 2025, o conselho prático era "use o Whisper e aceite as limitações". Em meados de 2026, o cenário está mais diferenciado. Para os 10 idiomas cobertos pelo language=multi da Deepgram e os 6 idiomas do modo de code switching da U3-Pro da AssemblyAI, os motores especializados agora são mensuravelmente melhores que o Whisper nas fronteiras de troca. O Whisper ainda é a escolha certa para pares de idiomas que esses motores não cobrem, mas deixou de ser a recomendação padrão para tudo. Escolha o motor conforme o par de idiomas, não conforme o fluxo de trabalho.
Se você precisa de uma transcrição rápida de áudio multilíngue sem configurar uma API, o ConvertAudioToText faz detecção automática de idioma, sem necessidade de conta para a primeira execução.
FAQ
Qual é o melhor motor de transcrição para Hinglish em 2026?
Deepgram Nova-3 com language=multi é a opção mais forte, já que o hindi está incluído no seu conjunto de 10 idiomas com suporte a code switching. Whisper Large-v3 com language=None é uma alternativa razoável. Nenhum motor atual lida com Hinglish com alta precisão em todos os sotaques regionais; espere mais correção manual para Hinglish do que para conteúdo Spanglish ou francês-inglês. Afirmações de 80-90% de precisão para Hinglish não são verificáveis contra benchmarks independentes.
Como o code switching da AssemblyAI difere do da Deepgram?
Para áudio pré-gravado, a AssemblyAI Universal-3 Pro aceita dois códigos de idioma por requisição, um dos quais deve ser inglês, com melhores resultados quando o idioma que não é inglês é o dominante. A Deepgram Nova-3 com language=multi cobre 10 idiomas sem exigir que o inglês seja um deles, e não impõe limite de dois idiomas. Para streaming em tempo real, ambas oferecem modelos dedicados de streaming multilíngue (AssemblyAI Universal-Streaming para 6 idiomas, Deepgram Flux para 10 idiomas), e a diferença diminui. Escolha com base nos pares de idiomas de que você precisa.
O AWS Transcribe oferece suporte a code switching no meio da frase?
A identificação multilíngue do AWS Transcribe funciona bem para conteúdo bilíngue estruturado, em que cada enunciado está em um único idioma, mas é menos confiável para code switching intrafrasal (mistura dentro de uma mesma frase). O recurso detecta o idioma dominante por segmento de áudio e transcreve cada segmento separadamente. Para trocas no meio da frase, Deepgram Nova-3 ou AssemblyAI Universal-3 Pro são escolhas melhores se seus pares de idiomas coincidirem.
Por que o Whisper alucina nas fronteiras entre idiomas?
O decodificador do Whisper gera texto com base em padrões aprendidos do áudio de treinamento. Quando o conteúdo do áudio é ambíguo em um ponto de troca de idioma (especialmente perto de silêncio ou ruído de fundo), o modelo recorre a continuações estatisticamente prováveis em vez da fala real, produzindo texto fabricado que soa plausível. O pré-processamento com detecção de atividade de voz (VAD) remove os segmentos de silêncio mais propensos a disparar esse comportamento. Para conteúdo com muitas trocas, modelos de code switching construídos especificamente para isso são menos propensos à alucinação de fronteira, porque sua arquitetura trata o sinal de troca explicitamente, e não via continuação de padrões.
Fontes
- Documentação de code switching da AssemblyAI: https://www.assemblyai.com/docs/pre-recorded-audio/code-switching
- Blog da AssemblyAI sobre Universal-Streaming multilíngue: https://www.assemblyai.com/blog/real-time-transcription-code-switches-multilingual-speakers
- Documentação de code switching multilíngue da Deepgram: https://developers.deepgram.com/docs/multilingual-code-switching
- Lançamento do Deepgram Flux Multilingual (abril de 2026): https://deepgram.com/learn/deepgram-launches-flux-multilingual-press-release
- Atualização de WER do Deepgram Nova-3 Multilingual (março de 2026): https://deepgram.com/learn/nova-3-multilingual-major-wer-improvements-across-languages
- Documentação de vários idiomas do Google Cloud Speech-to-Text: https://docs.cloud.google.com/speech-to-text/docs/multiple-languages
- Documentação de identificação de idioma do AWS Transcribe: https://docs.aws.amazon.com/transcribe/latest/dg/lang-id.html
Try transcription free
Convert any audio or video to clean, unwatermarked text — speaker labels, timestamps, and AI summaries included. First 10 minutes free, no account.
Related Articles
How to Add Timestamps to a Transcript
Learn how to add timestamps to a transcript with an audio-to-text tool, then export timestamped SRT or VTT subtitle files for easy navigation and editing.
How to Transcribe a Conference Talk to Text
Learn how to transcribe a conference talk or keynote to text, label speakers, and export SRT, VTT, or TXT using a straightforward upload or URL workflow.