Sous-titres
méthode subtitleripper/transcode
Cette méthode est celle qui sera automatisée à
terme.
Elle permet de tirer parti de l'encapsulateur vorbis, qui permet de
mixer
video et son (comme le fait tuxrip actuellement) mais aussi texte et
labels
(titre, nom des langues, etc...)
Voici la méthode que nous proposons en utilisant l'arborescence
créée
par tuxrip. Cette méthode pourra ensuite être
automatisée
dans une future version de tuxrip.
Installation
1) Logiciels nécessaires
Il faut :
subtitleripper : http://subtitleripper.sourceforge.net/
gocr : logiciel libre de reconnaissance de caractères
ispell pour chaque langue à extraire : facultatif, mais pratique
pour
corriger les sous-titres extraits par OCR.
Ces logiciels peuvent être compilés ou peuvent être
disponibles
sous forme de paquets pré-compilés.
Pour Mandrake, installer les rpm :
gocr <- dispo dans la distro
ispell-code_de_la_langue_à_2_lettres
subtitleripper <- dispo dans PLF
2) Configuration de pgm2txt
pgm2txt est un script appartenant à subtitleripper. Il appelle
gocr
pour effectuer la reconnaissance des caractères (OCR).
Un peu de configuration peut être nécessaire, et elle doit
être
faite en éditant le script, car il n'utilise pas de fichier de
préférence.
En droits root, éditer le fichier pgm2txt (/usr/bin/pgm2txt en
général)
avec l'éditeur de votre choix.
- Chemin vers la base de caractères (ligne 14)
Lorsque gocr ne reconnaît pas un caractère (ou un groupe
de caractères),
il demande à l'utilisateur de rentrer ce caractère.
Ensuite,
il stocke cette information dans une base de données dont il se
sert
pour effectuer la reconnaissance. Cela permet de ne pas avoir à
rentrer
à nouveau le même caractère non reconnu.
Dans le script, le chemin par défaut est ./db/ : il crée
un
répertoire db dans le répertoire subt du projet. Si vous
voulez
conserver la base pour tous les projets, le mieux est de lui faire
creer cette
base dans le répertoire $HOME de l'utilisateur.
Je recommande donc de remplacer ./db/ par $HOME/db/ (ou autre nom)
- Options d'OCR (ligne 28)
Si on utilise les options auto :
GOCR_OPTIONS_AUTO="-s 8 -m 130"
-s correspond à l'espacement entre les mots. Trop haut, et les
mots
seront attachés, trop bas et il y aura des espaces au sein des
mots.
L'auteur avait mis la valeur -s 10, je préfère -s 8, mais
cela
peut varier d'un DVD à l'autre.
- Afficheur graphique (lignes 38 et 39)
IMAGE_VIWER=
IMAGE_VIEWER_OPTIONS=
Personnellement j'utilise ImageMagick, je mets donc display (et
j'enlève
toute option)
Utilisation
1) Création du répertoire de travail
Se déplacer dans le répertoire projet (il y a les
répertoires
audio, video, tmp, etc...)
Y créer un répertoire subt
cd subt
2) Extraction des sous-titres
Taper en console :
cat ../vob/*.vob | tcextract -x ps1 -t vob -a $PISTE | subtitle2pgm -c
$COLORCONV
-o projet
où PISTE=0x20 + id <-- id est le numéro de la
piste
sous-titre. 0x20 correspond à la première, 0x21 à
la
deuxième, etc...
COLORCONV=0,255,255,255
255,0,255,255 <-- la plus
courante
255,255,0,255
255,255,255,0
255,128,0,255 <-- exceptionnellement, quand les sous-titres sont des
lettres blanches entourées d'un halo gris
Une de ces 4 valeurs est la bonne pour obtenir des sous-titres noirs
sur fond
blanc. Vous ne devez pas avoir de contour autour des lettres.
Cela crée 1 fichier PNG par sous-titre.
3) Reconnaissance auto des caractères
pgm2txt -v [-d] projet
J'utilise -v : permet d'afficher le sous-titre analysé,
cela
facilite l'entrée des caractères non reconnus
-d peut être ou non utilisé : sans -d, gocr utilisera sa
base
de données interne et ne demandera que les caractères
exotiques
ou difficiles (comme #, %, italiques, groupes de lettres
accolées).
Avec -d, gocr est utilisé en mode "database only", ce qui
signifie
qu'il construira la base avec tous les nouveaux caractères. La
première
fois, ce processus est long, car tout l'alphabet est à rentrer.
En
revanche, le résultat est plus fiable que sans -d.
Chaque sous-titre est extrait vers un fichier TXT.
Il utilise gocr pour extraire un fichier TXT par
gocr demande d'entrer chaque caractère inconnu : la
première
fois, il les demande tous ! Mais vous pouvez enregistrer les
caractères
reconnus dans une database que vous pourrez réutiliser plus tard.
4) Vérification de l'orthographe (facultatif)
ispell -d langue projet*txt
Utiliser pour langue :
french pour un sous-titre en français
american pour un sous-titre en anglais.
5) Construction du fichier srt
srttool -s -i projet.srtx -o projet.srt
Construit le fichier sous-titres.
Vous pouvez construire ainsi plusieurs fichiers sous-titre pour chaque
langue,
en construisant plusieurs répertoires subt1, subt2 etc... pour
chaque
langue.
6) Mixage des sous-titres dans le film ogm
Dans le répertoire projet :
ogmmerge -o projet.ogm -c 'TITRE=Titre du film' video/projet
-c LANGUAGE=Français subt1/projet.srt -c LANGUAGE=English
subt2/projet.srt
[etc...]
Cela mixe tous les flux.
ogminfo projet.ogm vous donne la liste des flux et leur type
(video,
audio, texte), ainsi que le numéro qui leur est attribué.
7) Lecture avec mplayer
mplayer projet.ogm -sid numéro_de_la_piste_sous-titre
-subfont-text-scale 3
Pendant la lecture vous pouvez désactiver l'affichage des
sous-titre
avec v, et leur position avec r et t.
Avantages : fichier sous-titre au format texte, qui ne fait que
quelques ko,
inclusion totale dans le film ogm, ce qui facilite la distribution.
Désavantages : méthode longue (reconnaissance des
caractères,
correction OCR)
perte des formatages italiques, gras...
méthode mencoder
dans le répertoire vob (avec les .vob et le .ifo), tapez :
cat ./*vob | mencoder - -ifo vts_01_0.ifo -o /dev/null -nosound -ovc
copy
-vobsubout subtitles -vobsuboutindex 0 -sid 0
-vobsubindex et sid indiquent le numéro du sous-titre.
Le fichier ifo n'est pas indispensable, mais il indique la couleur des
sous-titres.
Si vous ne le mettez pas, les sous-titres sont noirs.
Il crée alors deux fichiers : subtitles.idx (contient les temps)
et
subtitles.sub (contient les sous-titres sous forme d'images).
Pour relire : mplayer film.ogm -vobsub subtitles
Avantages : pas de problèmes de reconnaissance des
caractères,
maintien du formatage
Désavatage : comme les sous-titres sont des images et non un
fichier
texte, le fichier subtitles.sub est gros (2.7Mo pour 2 heures).
Il y a la possibilité de faire de l'OCR sur le fichier sub avec
d'autres
utilitaires, pas encore essayé.
Je vais essayer d'extraire plusieurs sous-titres.
Pour rajouter un subtitle dans une autre langue :
cat ./*vob | mencoder - -ifo vts_01_0.ifo -o /dev/null -nosound -ovc
copy
-vobsubout subtitles -vobsuboutindex 1 -sid 2
Et ça rajoute au subtitle.idx et .sub précédemment
créé
le subtitle n°2 avec l'index vobsub 1. Vous avez donc 2 vobsubs 0
et 1
correspondant aux sous-titres 0 et 2. C'est aussi simple que ça.
Bien
sûr, ça augmente la taille du fichier .sub d'autant.
Pour lire :
mplayer film2.ogm -vobsub subtitles -vobsubid 1
pour lire le sub vobsubindex n°1.
Au fait, je disais que le .ifo était nécessaire pour
déterminer
la palette.
La palette est rajoutée au début du fichier idx. Je suis
sûr
qu'on doit pouvoir la reconstituer si le fichier ifo est manquant (si
on a
extrait que les vobs par ex.)