jueves, 8 de diciembre de 2016

Aprendiendo informatica: traducir desde hardsubs

Ayer me llegaba una petición acerca de cómo se puede realizar "comodamente" una traducción de un hardsub en chino. Os voy a mostrar la manera que he usado yo para hacerlo que no necesariamente es la mejor pero si es una que os puede venir bien.

En primer lugar, necesitareis un programa llamado AVISubDetector. Es un programa antiguo, que ya no está en desarrollo, y posiblemente encontreis alguno mejor. Hace poco me recomendaron el VideoSubFinder, pero se me cuelga el programa cuando intento analizar el video, con lo que no me ha servido de nada.

Ahora lo que necesitaremos es el archivo que vamos a analizar en formato .AVI o un script de AviSynth. Si no sabeis lo que es esto, con un .AVI es suficiente.

Abrimos AVISubDetector y en la primera ventana seleccionamos Add AVIs.


En las opciones de la derecha podemos desmarcar todas las que ponen "save" (aunque no es necesario). En principio generan una mascara que se usa para el reconocimiento y la guardan en el directorio de archivos temporales. No lo usaremos para nada, asi que podemos marcarla o desmarcarla, como prefiramos.

Despues de esto, vamos a la pestaña "settings".

Podreis ver que a veces no cargan bien las pestañas o el programa no hace nada. Si es así, lo mejor es cerrar el programa, volverlo a abrir y empezar de cero.

En esta pestaña deberemos seleccionar la parte que se analizará. Cuanto mas grande sea la parte a analizar, mayores fallos habrá y mas lento funcionará, asi que es un paso importante. Apretamos cualquiera de los botones de "Start" para forzarlo a que cargue el video y despues lo paramos con "Stop". Despues de darle a Stop os pedira un nombre de archivo. Dado que no hemos hecho nada util podemos poner el nombre que queramos o cancelar. Ese archivo podemos borrarlo directamente. Hecho esto, desplazamos la barra horizontal que hay hasta encontrar una imagen en la que aparezca un subtitulo. Este paso es crucial, ya que de el depende gran parte del proceso. Observad la siguiente imagen (hay que desplazar la barra vertical de la derecha para verlo).


En la parte de arriba se ve la imagen completa del video, mientras que en la inferior se ve exclusivamente lo que se va a analizar. No sirve de nada pedir al programa que busque subtitulos donde no los hay, asi que lo que debemos hacer es reducir ese campo lo mas posible, y para eso se usan los dos deslizadores que he marcado.

Si bajamos aun mas, podremos ver en "video inverso" (o sea, en negativo) la parte que ha detectado como subtitulo. Si lo hemos hecho bien, las lineas estarán perfectamente marcadas.

Ahora, ya estamos listos para empezar. Comprobamos que aparece pulsado "Automatic Mode" arriba y le damos a "Start (Full)". Si usasemos el "Manual mode", cada vez que no supiera reconocer si una imagen es subtitulo o no nos preguntaria, pero eso es tedioso y realmente no lo necesitaremos. El modo "OCR" ya lo vimos en tutoriales anteriores. En este caso no necesitamos reconocimiento, ya que vamos a traducirlo "a mano" y tambien podríamos tener problemas con los caracteres chinos.

Vemos que en la parte superior derecha nos indica el frame por el que vamos y lo que va detectando cada vez. Aparecen varios mensajes:

- STOPPED: No está analizando.
- NO SUBTITLE: No ha detectado un subtitulo en ese frame.
- DETECTED: Ha detectado un subtitulo.
- CHANGED/FRAME SKIPPED: Ha detectado un salto de escena, y ha optado por crear un posible cambio o lo ha ignorado.

Hay varios momentos en que este programa falla. Cuando hay un salto de escena o un cambio brusco de iluminacion y se mantiene el subtitulo, cuando el programa no detecta ese cambio, cuando detecta un subtitulo y no lo hay (esto suele ocurrir con escenas de time-lapse de coches por la noche, por ejemplo) o cuando hay subtitulo y no lo detecta. Todo esto lo veremos en la fase de revision.

Ahora llegamos al final del video y nos aparece la opcion de salvar el archivo. Este archivo es el definitivo, asi que escogemos un nombre y grabamos.

Tendremos un archivo de subtitulos nuevo, que abriremos con nuestro programa preferido, en mi caso Aegisub.


Veremos una enorme cantidad de lineas que ponen algo parecido a " ! Frame=XXXX:DLC=XX;MED=XX;MBC=X;LMB=XXX;RMB=XXX;" En realidad no nos importa lo que ponen, ya que eso es informacion para programas de reconocimiento de caracteres. Lo que realmente nos importa es que aparecen divididos correctamente.

Tened en cuenta un pequeño detalle, el programa si hay un archivo demasiado largo no lo procesara entero, tendreis que dividirlo en varios trozos y luego concatenarlo. Vamos a comprobarlo yendo a la ultima linea. Si no es el final del video, fijaos donde está esa linea y cortad el video en el punto en el que comienza la linea anterior (buscad el tutorial de recorte de videos que hice hace poco). Con el video recortado, cread un segundo archivo de subtitulos, un tercero... los que necesiteis. Dado que al recortar un video siempre redondea al I-Frame mas cercano puede recortarse de mas o de menos.

El siguiente paso es comenzar a traducir el primer archivo. Entrad en el programa de subtitulado que useis, cargad el video, el audio y ubicad los subtitulos mediante el administrador de estilos en un punto donde no se superpongan con los subtitulos sin traducir. Hecho esto, usad la forma que prefirais para traducir. Personalmente uso Aegisub, que me permite moverme entre una y otra linea y ver el video por lineas. En el caso de que al traducir encontreis dos lineas que han sido detectadas como una, una linea de texto (en la imagen) en varias lineas de subtitulos (en el programa de traduccion) o un falso positivo marcadlo de alguna manera, poniendo algun caracter como _, % o cosas parecidas. Si dejais la linea en blanco, Subtitle Edit la ignora, asi que mejor tener lineas de mas que lineas de menos.

Ahora toca unir el primer subtitulo, el traducido, con el siguiente. Para unir esos subtitulos, el programa que he usado es Subtitle Workshop. No he encontrado la funcion equivalente en otros programas, asi que he usado este otro. Para ello vamos a "Tools->Join subtitles", seleccionamos en orden los subtitulos que queremos unir y los grabamos en un nuevo archivo.

Ahora toca "recolocar" los subtitulos en el punto correcto. Todos los programas tienen una opcion similar, desplazar los subtitulos desde un punto hasta mas adelante. Colocamos esa linea en el punto exacto usando la ultima linea del subtitulo traducido y la segunda del que está sin traducir y lo ajustamos milisegundo a milisegundo.

Cuando esten recolocados, se traduce desde ahi hasta el final y se repite para cuantos archivos sean.

Ahora toca la siguiente fase: revision. Esta es la mas pesada de todas. La deteccion es lenta, pero puedes hacer otras cosas mientras tanto. La traduccion es trabajosa, pero es muy efectiva. La revision requiere atencion.

Se trata de revisar el video y la traduccion para ver si concuerdan y si faltan o sobran lineas. Para eso yo uso Subtitle Edit, ya que permite mover el texto facilmente linea a linea, asi como agregarlas o dividirlas. Podemos tambien aprovechar para revisar el texto, si se nos ha ido alguna errata o quedan frases demasiado artificiales.

Y con esto hemos terminado. Espero que os haya servido. Un consejo mas que os quiero dar es que trateis de alternar varias etapas, como la traduccion y la revision, en bloques de 15 minutos aproximadamente. Revisar es tedioso, y ayuda a sobrellevarlo.

Un saludo.

1 comentario:

  1. ¡Muchas gracias tío! Seguro que con esto podemos sacar más pelis chinas que ahora casi todas vienen en hardsub (lo bueno es que así subs en inglés si tenemos).
    Un abrazo, komo

    ResponderEliminar