Le pedí a un LLM que corrigiera nombres mal escritos. Le cambió el nombre al producto.
Mi clipper con IA corrige nombres propios en transcripciones. En un vídeo cambió el nombre de un modelo desconocido por el de un competidor real. Por qué pasó.
28 de septiembre de 2026
Creado: 28 septiembre 2026 · Actualizado: 28 septiembre 2026
Katto es un clipper de vídeo con IA. Le pasas un vídeo largo, corta los buenos momentos en shorts verticales y te escribe los subtítulos. Lo desarrollo yo solo, en público. Esto va de una función que anuncio en la página de precios y que pillé haciendo justo lo contrario de su trabajo.
El problema que quería resolver
El reconocimiento de voz es muy bueno con las palabras y muy malo con los nombres. Whisper oye una marca que no ha visto nunca y la escribe tal cual suena. "Trump" sale como "trompe". "Suárez" sale como "Suares". "ChatGPT" sale como "chatgépété". En un vídeo francés de fútbol llegué a contar noventa y ocho casos en una sola transcripción.
Unos subtítulos con los nombres destrozados dan sensación de descuido, y son la parte más visible de un clip. Así que añadí una pasada de corrección: después de transcribir, el texto va a un modelo de lenguaje pequeño con una sola instrucción, encuentra los nombres propios escritos fonéticamente y corrige la ortografía. Cuesta más o menos un céntimo por vídeo. Arregló los noventa y ocho.
Lo que salió en producción
La semana pasada un usuario cortó un vídeo francés sobre modelos de lenguaje grandes. El ponente hablaba todo el rato de un modelo llamado JEV. Whisper lo oyó y escribió "Jev", que se acerca lo suficiente como para que nadie se inmutara.
Los clips salieron titulados "Por qué Jamba está sobrevalorado" y "Jamba: revolución y sobrevalorado a la vez". Los subtítulos decían Jamba. Las descripciones decían Jamba.
Jamba es un modelo de lenguaje grande real, de AI21. Simplemente no es el del vídeo.
Fui a mirar lo que había guardado el pipeline. La transcripción archivada decía "Jev" dos veces y "Jamba" cero veces. Todas las etapas posteriores decían "Jamba" y nunca "Jev": los candidatos puntuados, los metadatos del clip, el pool de clips, veinticuatro apariciones en total. La transcripción estaba bien. Lo que añadí para protegerla la había roto.
Por qué lo hizo el modelo
Hizo exactamente lo que hace un asistente servicial. El vídeo va de modelos de lenguaje. "Jev" no es un modelo que conozca. "Jamba" sí lo es, y los dos no están tan lejos si entrecierras los ojos. En ese contexto, sustituir uno por otro parece una corrección y no una invención.
Ese es el modo de fallo del que nadie te avisa en este tipo de tarea. Un corrector ortográfico que no reconoce una palabra la deja en paz. Un modelo de lenguaje que no reconoce una palabra echa mano de la más cercana que sí reconoce, y cuanto más conocimiento del dominio tiene, más seguro y más equivocado es ese manotazo. Mi corrector era peor con los nombres raros precisamente porque era bueno con los comunes.
La parte que escuece
Ya había pensado en esto. El prompt decía, en mayúsculas:
Corrige SOLO la ortografía y las mayúsculas. NUNCA sustituyas un nombre por otro DISTINTO. Inventar un nombre plausible pero incorrecto es PEOR que dejar uno poco habitual sin tocar. […] NO adivines un nombre más conocido a partir del contexto.
Tres frases, sin ambigüedad, escritas específicamente para evitar lo que pasó. El modelo las leyó y renombró el producto igualmente.
No creo que el prompt estuviera mal redactado, y ya no creo que uno mejor hubiera servido de algo. Pedirle a un modelo que no haga lo que tiende a hacer es una petición, no una restricción. Se cumple casi siempre, que es peor que no cumplirse nunca, porque dejas de comprobarlo.
Qué hice en su lugar
La regla salió del prompt y se metió en el código. El modelo sigue proponiendo correcciones; ahora una función decide si cada una es un arreglo ortográfico o un cambio de nombre, y descarta los cambios de nombre sin más.
La prueba es deliberadamente burda: quitar mayúsculas y acentos de ambas cadenas y medir cuánto del original sobrevive en el reemplazo. Por encima de 0.6, es el mismo nombre escrito de otra forma. Por debajo, es otro nombre.
- 0.90 · rousse peter → rouspéter · aceptado
- 0.83 · Suares → Suárez · aceptado
- 0.82 · chatgépété → ChatGPT · aceptado
- 0.73 · trompe → Trump · aceptado
- 0.53 · nouillène → Nguyen · descartado
- 0.31 · mistral → Gemini · descartado
- 0.25 · jev → Jamba · descartado
Todas las correcciones de mi conjunto de pruebas sobreviven. Algunos arreglos legítimos no lo harán: la quinta línea es uno real. A un francófono que dice "Nguyen" se le oye "nouillène", las dos cadenas no comparten casi nada una vez quitas los acentos, y la protección tira esa corrección a la basura. Lo mismo pasará con nombres japoneses romanizados y con siglas deletreadas letra a letra en otro idioma.
Ese es el lado que elegí. Un nombre raro sin tocar se ve, y quien lee puede deducir qué se quería decir. Un nombre equivocado no se ve, y nadie puede deducirlo. Los rechazos se registran con las dos cadenas, porque un rechazo significa que el modelo acaba de intentar renombrar algo, y eso merece la pena verlo.
Las lecciones
Una regla que un modelo puede ignorar no es una regla. Si una restricción importa, su sitio está en código que se ejecuta después del modelo, no en un párrafo que el modelo lee. Los prompts expresan intención. No la imponen.
Mira la dirección de una corrección, no solo que exista. Tenía métricas de esta pasada: cuántas correcciones hacía por vídeo. Noventa y ocho parecía un número sano. Nada medía si una corrección acercaba el texto a la verdad o lo alejaba, y una mala corrección es indistinguible de una buena si lo único que cuentas es el total.
Un pipeline que guarda la entrada y entrega la salida puede mentirte dos veces. La transcripción archivada decía "Jev" mientras todos los clips entregados decían "Jamba". Si solo hubiera mirado el archivo, habría concluido que el pipeline estaba bien. La comprobación que importa es la de lo que salió por la puerta.
La seguridad forma parte del fallo. Un corrector que deja en paz un nombre desconocido produce una rareza visible e inofensiva. Uno que lo sustituye produce un texto limpio, fluido y equivocado que nadie cuestiona, yo incluido, hasta que la persona que hizo el vídeo lee sus propios subtítulos.
La protección salió el mismo día. Si cortas un vídeo sobre algo poco conocido y Katto deja un nombre raro exactamente como lo oyó, ahora es a propósito.
Artículos relacionados
¿Listo para convertir tus vídeos en clips virales?
Katto recorta, subtitula y reencuadra automáticamente tus vídeos largos en contenido de formato corto.
Prueba Katto gratis →