Un detector de idioma siempre da una respuesta, incluso ante una tos. Deja la detección activada para audio limpio o con varios idiomas, e indica el idioma cuando se habla uno solo sobre ruido o con un acento marcado.
Toda transcripción empieza con una pregunta que el lector nunca ve: ¿en qué idioma es esto? Si se equivoca, el resto de la cadena trabaja a destajo para producir un texto fluido pero sin sentido. Este artículo explica qué escucha un detector de idioma, cómo se comporta la detección con audio en directo y con archivos, y cuándo conviene indicar el idioma tú mismo.
Un detector de idioma no entiende lo que se dice. Analiza el sonido en sí: el inventario de consonantes y vocales, cómo se acentúan las sílabas, el ritmo de las frases y las palabras cortas y frecuentes de las que se apoya cada idioma. El español tiene su propio conjunto de vocales y su propio ritmo; el neerlandés y el alemán comparten mucho, pero se separan en unos cuantos sonidos. Unos pocos segundos de habla clara suelen bastar para distinguirlos.
Muchos reconocedores hacen esto como subproducto del reconocimiento de palabras. Deciden el idioma a partir del principio del audio, como una probabilidad para cada idioma que conocen. De ese diseño se derivan dos cosas. Las probabilidades siempre suman uno, así que no existe la respuesta «ningún idioma»: el silencio, una tos o una sintonía musical también reciben un idioma, a menudo con una puntuación alta. Y la decisión se toma con el principio, que es la peor muestra posible. Muchas grabaciones empiezan con saludos, nombres y topónimos, que aportan muy poca información sobre el idioma: «Good morning, Maria, welcome to Berlin» es casi tan alemán como inglés. Otras empiezan con silencio o una tos, y un detector al que se le pide decidir sobre eso decidirá igualmente, con confianza, sobre nada en absoluto. Los audios reales también hacen esto: un sermón en rumano que empieza con ruido de la sala y «Bună dimineața» puede oírse fácilmente como el italiano «Buona domenica», con total seguridad.
El coste de una respuesta errónea también es peor de lo que parece. Un reconocedor que decodifica en el idioma equivocado no escribe mal las palabras; las reescribe. «For God so loved the world», decodificada como rumano, salió como «Forgot to love the world». La frase rumana «mândria slujește», decodificada como inglés, salió como «Pride serves», que es una traducción exacta de una frase que nadie pidió traducir. Las palabras son fluidas y la transcripción no da ninguna señal de que algo va mal, y eso es lo que hace caro el error.
Cinco cosas engañan a los detectores con más frecuencia:
Cuál de estas cosas te afecta depende de si el audio llega en directo o ya está en un archivo.
En una transcripción en directo no hay una grabación completa que mirar. El audio llega según se habla, y la transcripción tiene que llegar con él. Por eso el idioma se detecta mientras la persona habla, y se sigue si cambia. Esto es lo que significa la nota bajo el interruptor Spoken language cuando inicias una transcripción en directo en el panel: el idioma del hablante se detecta automáticamente, y puede cambiar en cualquier momento.
Un cambio se confirma antes de aplicarse, así que un tramo de ruido no arrastra la transcripción a otro idioma. El punto débil es el inicio: si las primeras palabras son un saludo con ruido, la primera línea puede salir en el idioma equivocado. Indicar el idioma lo evita.
Los archivos funcionan de otra manera, porque la grabación completa ya está disponible.
Un archivo es un problema mejor: no hace falta fiarse de los primeros segundos. En un archivo, el idioma se decide a partir de la grabación completa, así que un saludo con ruido al principio no puede decidirlo.
El idioma de un archivo sigue siendo una suposición de trabajo, no un veredicto. Una grabación que de verdad cambia de idioma a mitad, como una entrevista que pasa del inglés al rumano en su segunda mitad, se sigue en lugar de forzarla, y una que alterna entre idiomas a lo largo de todo el audio también se gestiona.
Un detector que decide una vez y nunca vuelve atrás tiene confianza en el lugar equivocado.
Ningún detector ayuda mucho cuando toda la grabación tiene ruido. La detección es la opción por defecto porque acierta la mayor parte de las veces y no te cuesta nada. Sin embargo, en algunas grabaciones conviene indicar el idioma, y el panel te dice cuáles: indicar el idioma hablado mejora la precisión en grabaciones con ruido y acentos marcados.
Estos son los casos en los que la detección tiene menos con qué trabajar. El ruido elimina las pistas de las que depende un detector; un acento marcado las desplaza hacia otro idioma; un par de idiomas muy emparentados ofrece pocas pistas desde el principio. Un hablante inglés con un fuerte acento portugués en una sala con reverberación es difícil de ubicar solo por el sonido, y si el detector lo ubica mal, la transcripción convierte el habla en inglés en portugués durante todo el tiempo que dure el error. Indicar el idioma elimina la pregunta, así que todo el esfuerzo se concentra en las palabras.
Una lista breve:
Indicar el idioma es un ajuste de la transcripción, no de tu cuenta, así que puedes decidirlo grabación por grabación. Todo lo anterior se reduce a una opción de la API.
spokenLanguage ausente significa detectar; session.update durante la transmisiónEn la API, spokenLanguage es un código de idioma como en; si lo omites, el idioma se detecta. Aparece en los settings de una transcripción de archivo o de enlace y en las opciones de una sesión en tiempo real. La detección y la indicación cubren los mismos 100 idiomas. La traducción a hasta 10 de ellos es una elección aparte, y no depende del idioma detectado ni del indicado. Cómo la traducción sigue el ritmo del habla es el tema de La latencia de la traducción en directo, explicada.
{ "name": "Board meeting", "settings": { "spokenLanguage": "en", "speakerLabels": "auto" } }
Una sesión en tiempo real acepta la misma opción al crearse, y puedes cambiarla mientras el audio está fluyendo. Un frame de texto session.update con un nuevo spokenLanguage se aplica al habla a partir de ese momento; si lo pones en "" o "auto", la sesión vuelve a la detección, y un código no soportado se ignora. Una vista de subtítulos con un botón de idioma puede permitir que el operador indique el idioma en cuanto vea una primera línea errónea, sin reconectar.
{ "type": "session.update", "spokenLanguage": "ro" }
La lista de códigos, con sus nombres, está en GET /v1/languages, que no necesita clave. El flujo completo en tiempo real, desde crear una sesión en tu servidor hasta leer borradores y confirmaciones, está en Transcripción en tiempo real por WebSocket, y la referencia interactiva está en {{api}}/docs. En el panel, la misma elección es el interruptor Spoken language cuando inicias una nueva transcripción, y las claves de la API se gestionan en Developers.