Convertidor de subtítulos a texto — SRT, VTT, SBV, ASS

Convierte subtítulos SRT, VTT, SBV y ASS en una transcripción limpia. Quita los códigos de tiempo, recompone las frases cortadas y elimina la repetición de los subtítulos automáticos.

De subtítulos a transcripción: quitar los códigos de tiempo es la mitad fácil

Todos los formatos de subtítulos codifican lo mismo: tramos cortos de habla clavados a códigos de tiempo. Devolver eso a prosa legible parece un script de cinco líneas: borrar los números, borrar las flechas, unir lo que queda. Ejecuta ese script sobre un archivo de subtítulos real y obtienes algo casi correcto, que es peor que abiertamente incorrecto porque hay que leerlo para darse cuenta.

Dos cosas lo rompen. Los subtítulos se cortan para caber en una pantalla, no para terminar una frase: unirlos sin más da prosa troceada cada seis palabras. Y los subtítulos generados automáticamente se desplazan, repitiendo texto de un rótulo al siguiente, de modo que concatenarlos entrega cada frase dos o tres veces. Esta herramienta se ocupa de ambas. Sube o pega un archivo arriba y el resultado aparece de inmediato, en esta pestaña.

El problema de los duplicados en desplazamiento

Este es el que pilla a la gente. El subtitulado automático de YouTube y de casi todos los sistemas en directo no emite bloques de texto separados. Emite una ventana móvil, para que quien mira vea acumularse las palabras. En el archivo eso tiene este aspecto:

  • Rótulo 1: quien mucho abarca
  • Rótulo 2: quien mucho abarca poco
  • Rótulo 3: poco aprieta

Unidos sin pensar obtienes «quien mucho abarca quien mucho abarca poco poco aprieta» — nueve palabras donde se dijeron cinco. A lo largo de una charla de una hora eso triplica aproximadamente la longitud y deja la transcripción inservible para leer, buscar o resumir.

El arreglo consiste en quedarse solo con lo que cada rótulo añade. Para cada rótulo nuevo, la herramienta busca la secuencia de palabras más larga que sea a la vez sufijo del texto ya aceptado y prefijo del nuevo, y la descarta. Aplicado al ejemplo anterior recuperas «quien mucho abarca poco aprieta» exactamente una vez. La comparación se hace contra una ventana acotada de palabras recientes y no contra toda la transcripción, lo que la mantiene rápida en un archivo de tres horas y evita borrar una expresión que se repite legítimamente veinte minutos después.

Recomponer las frases

Una línea de subtítulo está dimensionada para una pantalla: unos cuarenta caracteres, dos líneas a la vez, cortadas donde el texto llegaba al borde. Las frases se reparten habitualmente entre tres o cuatro rótulos. Conservar una línea por rótulo produce un documento que técnicamente es la transcripción y en la práctica es ilegible.

El modo párrafo acumula rótulos y corta cuando coinciden dos condiciones: se ha reunido texto suficiente para formar un párrafo, y el rótulo actual termina en puntuación de fin de frase. Así un corte nunca cae en mitad de una idea. Un tope duro fuerza igualmente un corte llegado el caso, porque hay quien habla muchísimo rato sin un punto y un muro de texto sin interrupción es ilegible a su manera. Un cambio de interlocutor siempre abre párrafo nuevo, lo que importa en entrevistas y mesas redondas.

Cuatro formatos, una sola idea

El formato se detecta por el contenido del propio archivo y no por su extensión, porque los archivos de subtítulos se renombran constantemente y un .txt que contiene datos SubRip es cosa habitual.

  • SubRip (.srt) — un índice numérico, un rango de códigos de tiempo con coma decimal y luego el texto. El formato más producido y el más simple.
  • WebVTT (.vtt) — el estándar del navegador. Decimales con punto en vez de coma, más bloques opcionales NOTE, STYLE y REGION que no son habla y se retiran antes de analizar. VTT admite además marcado en línea: <v Speaker> nombra a quien habla, <c.classname> aplica un estilo, y las marcas de tiempo sueltas dentro de un rótulo gobiernan el resaltado palabra a palabra al estilo karaoke. Todo se desenvuelve, y la etiqueta de voz pasa a ser la etiqueta del interlocutor.
  • YouTube (.sbv) — un par de códigos de tiempo separados por coma en su propia línea y luego el texto. Sin índice, sin marcado.
  • Advanced SubStation (.ass y .ssa) — una lista de eventos con un orden de columnas declarado. El analizador lee esa línea Format: en lugar de suponer posiciones, precisamente porque el campo Text va el último para poder contener comas. Los bloques de anulación entre llaves son instrucciones de estilo y se retiran; los saltos de línea \N se vuelven espacios. La columna Name, cuando está rellena, da el interlocutor.

Interlocutores, efectos de sonido y qué conservar

La atribución de interlocutores llega de tres maneras según el formato: un campo dedicado en ASS, una etiqueta de voz en VTT, o la mera convención NAME: al principio de línea en SRT, que no tiene campo de interlocutor alguno. Las tres se reconocen y se normalizan a la misma salida. La heurística para la tercera es deliberadamente estrecha — una secuencia en mayúsculas seguida de dos puntos — porque un prefijo en minúsculas coincidiría con frases corrientes que llevan dos puntos y haría trizas la transcripción.

Las indicaciones sonoras entre corchetes como [MUSIC], (laughter) y [APPLAUSE] se conservan por defecto y se pueden quitar con un interruptor. Cuál es lo correcto depende enteramente del trabajo: para un archivo consultable o un registro de accesibilidad forman parte del contenido; para darle una charla a un modelo y que la resuma, son ruido.

Tres formas de salida

Los ajustes preestablecidos cubren lo que la gente quiere de verdad. La transcripción limpia son párrafos corridos sin códigos de tiempo, para leer, citar o entregar a un modelo. La opción con marca de tiempo mantiene los párrafos pero marca cada uno con su hora de inicio, que es lo que quieres cuando la transcripción sirve para volver a un momento del vídeo. Las líneas de subtítulo conservan una línea por rótulo con su código de tiempo y sin deduplicar: lo más parecido al archivo original, útil cuando estás revisando los propios subtítulos en lugar de leerlos de corrido.

Junto al resultado, la herramienta informa del formato detectado, el número de rótulos, el número de palabras, la duración cubierta y cuántas repeticiones se han quitado. Ese último número es el honesto: si es grande, la fuente era automática y en desplazamiento, y ves exactamente qué parte del archivo crudo era pura repetición.

Nada sale del navegador

Los archivos de subtítulos no siempre son públicos. Grabaciones de entrevistas, reuniones internas, procedimientos judiciales, consultas médicas y material sin estrenar los generan todos. El análisis corre en JavaScript en esta pestaña, así que el archivo se lee localmente y nunca se sube. Por eso también la conversión es instantánea y por eso cambiar una opción vuelve a representar al momento en lugar de hacer otro viaje de ida y vuelta.