
Cómo corregir los errores de code-switching en la transcripción
Summarize this article with:
Por qué falla el audio con idiomas mezclados
La solución para la mayoría de los fallos de code-switching consiste en elegir un motor con un modelo multilingüe nativo e indicarle que no se ancle a un solo idioma. Si usas AssemblyAI, pasa speech_model: "universal" y configura tus dos códigos de idioma. Si usas Deepgram, configura language=multi con Nova-3 o Flux. Si usas Whisper, establece language=None para permitir la detección por segmento. El resto de este artículo explica por qué importan esas decisiones y qué hacer cuando aun así fallan.
La mayoría de los motores de transcripción están construidos sobre el supuesto de un único idioma. Reciben audio, eligen un idioma principal y mapean cada fonema contra el vocabulario de ese idioma. Cuando un hablante cambia de idioma a mitad de frase, el modelo se enfrenta a tres malas opciones: representar el idioma secundario como aproximaciones fonéticas del principal («para crear» se convierte en «para crayer»), fijarse en el nuevo idioma y quedarse ahí incluso después de que el hablante vuelva al anterior, o descartar por completo los segmentos que no coinciden. Cada una produce una transcripción rota.
El problema más profundo está específicamente en los límites entre idiomas. Las investigaciones sobre modelos de voz multilingües muestran que el WER en los puntos de cambio (la tasa de error medida en la ventana de 2 o 3 palabras alrededor de cada transición de idioma) puede ser entre 30 y 50 puntos más alto que el WER global combinado. Un modelo con un WER global del 10 % puede igualmente estropear cada cambio de idioma. Las cifras de precisión combinada ocultan esto.
Los tres modos de fallo, identificados
Entender qué modo de fallo estás sufriendo te indica qué solución aplicar.
Sustitución fonética: el motor permanece en el idioma principal y representa las palabras del idioma secundario como casi homófonos. Es el fallo más común y el más fácil de detectar. «Finalizando» se convierte en «finally sando». Solución: cambiar a un motor multilingüe.
Bloqueo de idioma: el motor detecta el cambio y se compromete con el nuevo idioma, pero luego no vuelve al anterior. El resto de la transcripción queda en el idioma equivocado. Solución: usar detección por segmento en lugar de detección por trabajo.
Alucinación en los límites: el modelo pierde el contexto en un punto de transición y genera texto plausible que nunca fue dicho. Es el fallo más difícil de detectar porque la salida parece limpia pero es incorrecta. Es especialmente común con Whisper en segmentos de audio cortos donde el silencio o el ruido coinciden con un límite de idioma. Solución: usar preprocesamiento con VAD (detección de actividad de voz) para eliminar los segmentos silenciosos antes de que lleguen al modelo, y preferir motores de code-switching diseñados específicamente sobre modelos multilingües genéricos para contenido con muchos cambios de idioma.
Solución 1: Usa un motor de code-switching diseñado específicamente
El avance más claro en este ámbito desde 2024 es que varias APIs importantes ahora ofrecen modos de code-switching dedicados, no solo «soporte multilingüe».
Deepgram Nova-3 con language=multi admite el code switching en 10 idiomas: inglés, español, francés, alemán, hindi, ruso, portugués, japonés, italiano y neerlandés. Configura language=multi en la cadena de consulta al llamar a /listen. Para streaming, Deepgram recomienda endpointing=100 (detección de punto final de 100 ms) específicamente para audio con cambios de idioma. Nova-3 Multilingual logró una reducción relativa de aproximadamente el 34 % en el WER por lotes en su actualización de marzo de 2026, con las mayores mejoras en los límites de cambio de idioma.
Deepgram Flux Multilingual (flux-general-multi), lanzado en disponibilidad general en abril de 2026, admite los mismos 10 idiomas con code-switching nativo integrado en la arquitectura del modelo, en lugar de ser una capa de detección sobre un modelo monolingüe. Puedes pasar parámetros opcionales language_hint para sesgar la detección cuando sabes qué idiomas están presentes.
AssemblyAI Universal-3 Pro gestiona el code switching para audio pregrabado en inglés, español, portugués, francés, alemán e italiano. La restricción que debes conocer: puedes especificar un máximo de dos códigos de idioma por solicitud de transcripción, y uno de ellos debe ser el inglés. El idioma que no sea inglés debe ser el dominante en el audio para obtener mejores resultados.
Para el streaming en tiempo real en concreto, el modelo Universal-Streaming de AssemblyAI procesa seis idiomas en una sola pasada hacia adelante (inglés, español, francés, alemán, italiano y portugués) sin requerir especificación manual del idioma.
Para pares de idiomas fuera de estos conjuntos, las herramientas basadas en Whisper siguen siendo la alternativa más amplia. Consulta la Solución 2.
Consulta también: Deepgram Nova-3 explicado para profundizar en la arquitectura del modelo multilingüe.
Solución 2: Usa Whisper con detección automática para pares no compatibles
Para pares de idiomas no cubiertos por los motores especializados anteriores (wolof + francés, cantonés + inglés, taglish, singlish, portunhol y otros), Whisper Large-v3 es la opción más práctica porque sus datos de entrenamiento cubrieron una gama más amplia de combinaciones de idiomas.
El ajuste crítico: establece language=None para permitir la detección por segmento en lugar de forzar un único código de idioma.
result = model.transcribe(
audio_file,
language=None, # auto-detect per segment
task="transcribe"
)
Establecer un código de idioma específico obliga al modelo a interpretar todo el audio como ese idioma. Dejarlo en None permite que Whisper estime el idioma por cada ventana de 30 segundos.
La advertencia honesta: la precisión de Whisper en el code-switching se degrada en los límites entre idiomas, y es más propenso a alucinar en esos puntos que los motores especializados. Para el Hinglish en concreto, ninguna herramienta de transcripción comercial lo maneja de forma fiable en 2026. Whisper es la mejor opción disponible para el code switching entre hindi e inglés, pero espera tener que hacer más corrección manual que con contenido en Spanglish o francés-inglés, donde hay más datos de entrenamiento.

Solución 3: Especifica los idiomas explícitamente donde esté soportado
Para los motores que admiten una lista de idiomas en lugar de un solo código, nombrar explícitamente los idiomas presentes en el audio ayuda al modelo a enfocar su detección.
# 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
}
La documentación de Google señala que especificar menos idiomas aumenta la precisión de la detección. La API V2 también admite language_codes: ["auto"] en Chirp 3 para una detección totalmente automática, aunque los códigos explícitos superan a la detección automática cuando conoces el par de idiomas.
Para Google Cloud STT, esta función está disponible solo en la región global y en las multirregiones us y eu.
Patrones de code-switching y elección de motor
El motor adecuado depende de qué idiomas estén cambiando. Aquí tienes un desglose práctico por pares comunes.
| Par de idiomas | Mejor motor | Notas |
|---|---|---|
| Spanglish (español + inglés) | Deepgram Nova-3 language=multi, AssemblyAI U3-Pro, Whisper | Tres opciones sólidas; todas tienen abundantes datos de entrenamiento para ambos idiomas |
| Hinglish (hindi + inglés) | Deepgram Nova-3 language=multi, Whisper (auto) | El hindi está en el conjunto de 10 idiomas de Deepgram; Whisper como respaldo para casos límite |
| Francés + árabe | Whisper (auto) | Ni Deepgram multi ni AssemblyAI U3-Pro cubren el árabe en modo code-switching |
| Taglish (tagalo + inglés) | Whisper (auto), Google Cloud STT | No hay modo de code-switching dedicado para el tagalo |
| Wolof + francés | Whisper (auto) | Whisper es la única opción realista; espera más corrección |
| Mandarín/cantonés + inglés | Whisper (auto) | El cantonés tiene menos datos de entrenamiento que el mandarín; espera una tasa de error más alta |
| Portunhol (portugués + español) | Deepgram Nova-3 language=multi, Whisper | Ambos idiomas están en el conjunto de Deepgram |
| Alemán + inglés | Deepgram Nova-3, AssemblyAI U3-Pro, Flux | Los tres motores cubren este par |
Para grabaciones de reuniones multilingües en las que necesites separación de hablantes junto con la detección de idioma, consulta diarización de hablantes explicada y transcripción de reuniones multilingües.
AWS Transcribe: identificación multiidioma frente a code-switching
AWS Transcribe añadió la identificación multiidioma tanto para trabajos por lotes como de streaming. Esta función detecta los idiomas dominantes por segmento y los etiqueta en la salida de la transcripción. Puede identificar a «hablantes bilingües que alternan entre idiomas, como el inglés de EE. UU. y el hindi-IN, identificando y transcribiendo cada idioma por separado».
La distinción importante: esto es identificación de idioma y transcripción por segmento, no code-switching a mitad de frase. Para la alternancia estructurada (el hablante A responde en inglés, el hablante B contesta en español), funciona bien. Para la mezcla intraoracional («I was finalizando the deal»), es menos fiable porque el cambio ocurre dentro de una sola ventana de detección.
Las funciones de redacción (redaction) y los modelos de lenguaje personalizados no son compatibles actualmente junto con la identificación multiidioma.
Solución 4: Divide el audio para cambios predecibles
Para grabaciones con alternancia estructurada de idiomas en lugar de mezcla a nivel de frase, dividir por segmento de idioma y transcribir cada parte por separado produce el resultado más limpio.
Vale la pena dar estos pasos extra cuando: el contenido tiene límites de idioma predecibles (una entrevista en la que las preguntas están en inglés y las respuestas en mandarín), lo que está en juego justifica el trabajo adicional, o el par de idiomas no está soportado por un motor especializado.
El flujo de trabajo: identificar los límites de idioma (manualmente o con una herramienta de detección de idioma), cortar en segmentos, transcribir cada segmento con el ajuste de idioma correspondiente y fusionar en orden. Para contenido habitual con una estructura predecible, esto puede automatizarse con un script.
Limpieza manual de transcripciones con cambios de idioma
Incluso con las mejores elecciones de motor, las transcripciones con cambios de idioma se benefician de una pasada de revisión dirigida.
Revisa primero las palabras de los puntos de cambio. Las palabras inmediatamente antes y después de cada límite de idioma son donde se concentran la mayoría de los errores. Examina esas posiciones antes de leer la transcripción completa.
Corrige las sustituciones fonéticas. Cuando el modelo representó un idioma como una coincidencia fonética aproximada en el otro idioma, el error suele ser reconocible si conoces ambos idiomas. «Para crayer» en lugar de «para crear», «I told my mom acha» en lugar de «I told my mom accha».
Verifica los nombres propios. Los nombres de personas, lugares y marcas que cruzan límites de idioma suelen representarse de forma inconsistente o fonética. Una revisión por un hablante nativo bilingüe es la comprobación más eficiente para contenido de alto riesgo.
No edites para mejorar la fluidez de lectura a costa de la precisión. El habla con cambios de idioma puede resultar incómoda de leer en forma de transcripción, pero la función de la transcripción es capturar lo que se dijo, no leerse con fluidez. Marca los pasajes incómodos para revisión humana en lugar de suavizarlos silenciosamente.
Para comparativas de precisión entre motores, consulta precisión de transcripción explicada.
Cuando el problema no es el code-switching
Algunos audios reciben un diagnóstico erróneo de problema de code-switching cuando en realidad se trata de otra cosa.
Habla con acento en un solo idioma: un hablante con un acento regional fuerte puede activar la detección de idioma del modelo. Esto no es code-switching y la solución es diferente: usa un modelo con gran robustez ante acentos en lugar de un modo de code-switching multilingüe.
Préstamos lingüísticos: un hablante que dice «I ordered sushi at the izakaya» no ha hecho code-switching. Los préstamos aislados insertados en frases por lo demás monolingües los maneja bien cualquier motor moderno. Solo se convierte en un problema de transcripción cuando los préstamos son poco comunes y el modelo los representa fonéticamente.
Contenido bilingüe estructurado: si cada intervención está claramente en un solo idioma (el hablante A en inglés, el hablante B en francés), tienes contenido bilingüe en lugar de code-switching. Usa identificación multiidioma (AWS Transcribe, Google Cloud STT) o asignación de idioma por hablante en lugar de un modelo de code-switching.
La regla general: si el cambio ocurre a mitad de frase (estructura gramatical mixta dentro de una misma intervención), es code-switching. Si el cambio ocurre en los límites entre intervenciones, es contenido bilingüe. La solución difiere.
Para reuniones multilingües grabadas, crear actas de reunión desde audio cubre el flujo de trabajo de extremo a extremo, incluido el manejo de idiomas.
Mi opinión: en 2025, el consejo práctico era «usa Whisper y acepta las limitaciones». A mediados de 2026, el panorama está más diferenciado. Para los 10 idiomas cubiertos por language=multi de Deepgram y los 6 idiomas del modo code-switching de U3-Pro de AssemblyAI, los motores especializados ahora son mediblemente mejores que Whisper en los límites de cambio. Whisper sigue siendo la elección correcta para los pares de idiomas que esos motores no cubren, pero ya no es la recomendación predeterminada para todo. Elige el motor según el par de idiomas, no según el flujo de trabajo.
Si necesitas una transcripción rápida de audio multilingüe sin configurar una API, ConvertAudioToText realiza la detección automática de idioma sin necesidad de cuenta para la primera ejecución.
Preguntas frecuentes
¿Cuál es el mejor motor de transcripción para Hinglish en 2026?
Deepgram Nova-3 con language=multi es la opción más sólida, ya que el hindi está incluido en su conjunto de code-switching de 10 idiomas. Whisper Large-v3 con language=None es un respaldo razonable. Ningún motor actual maneja el Hinglish con alta precisión en todos los acentos regionales; espera más corrección manual para el Hinglish que para contenido en Spanglish o francés-inglés. Las afirmaciones de una precisión del 80-90 % para el Hinglish no son verificables contra benchmarks independientes.
¿En qué se diferencia el code switching de AssemblyAI del de Deepgram?
Para audio pregrabado, AssemblyAI Universal-3 Pro admite dos códigos de idioma por solicitud, uno de los cuales debe ser el inglés, con mejores resultados cuando el idioma que no es inglés es el dominante. Deepgram Nova-3 con language=multi cubre 10 idiomas sin exigir que el inglés sea uno de ellos, y no impone un límite de dos idiomas. Para el streaming en tiempo real, ambos ofrecen modelos de streaming multilingües dedicados (AssemblyAI Universal-Streaming para 6 idiomas, Deepgram Flux para 10 idiomas), y la brecha se reduce. Elige según qué pares de idiomas necesites.
¿Admite AWS Transcribe el code switching a mitad de frase?
La identificación multiidioma de AWS Transcribe funciona bien para contenido bilingüe estructurado donde cada intervención está en un solo idioma, pero es menos fiable para el code-switching intraoracional (mezcla dentro de una misma frase). La función detecta el idioma dominante por segmento de audio y transcribe cada segmento por separado. Para cambios a mitad de frase, Deepgram Nova-3 o AssemblyAI Universal-3 Pro son mejores opciones si tus pares de idiomas coinciden.
¿Por qué Whisper alucina en los límites entre idiomas?
El decodificador de Whisper genera texto basándose en patrones aprendidos del audio de entrenamiento. Cuando el contenido del audio es ambiguo en un punto de cambio de idioma (especialmente cerca de silencios o ruido de fondo), el modelo recurre a continuaciones estadísticamente probables en lugar del habla real, produciendo texto inventado que suena plausible. El preprocesamiento con detección de actividad de voz (VAD) elimina los segmentos de silencio con mayor probabilidad de desencadenar esto. Para contenido con muchos cambios de idioma, los modelos de code-switching diseñados específicamente son menos propensos a la alucinación en los límites porque su arquitectura maneja la señal de cambio de forma explícita en lugar de mediante continuación de patrones.
Fuentes
- Documentación de Code Switching de AssemblyAI: https://www.assemblyai.com/docs/pre-recorded-audio/code-switching
- Blog multilingüe de Universal-Streaming de AssemblyAI: https://www.assemblyai.com/blog/real-time-transcription-code-switches-multilingual-speakers
- Documentación de Multilingual Code Switching de Deepgram: https://developers.deepgram.com/docs/multilingual-code-switching
- Lanzamiento de Deepgram Flux Multilingual (abril de 2026): https://deepgram.com/learn/deepgram-launches-flux-multilingual-press-release
- Actualización de WER de Deepgram Nova-3 Multilingual (marzo de 2026): https://deepgram.com/learn/nova-3-multilingual-major-wer-improvements-across-languages
- Documentación de múltiples idiomas de Google Cloud Speech-to-Text: https://docs.cloud.google.com/speech-to-text/docs/multiple-languages
- Documentación de identificación de idioma de 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.