Convertir des sous-titres VobSub en SRT sur GNU/Linux
Quand elle est revenue de sa dernière croisière, ma grand-mère avait dans ses bagages un DVD contenant plusieurs petits films de ses vacances, une séquence par étape, le tout sous-titré en anglais. Bien que n'habitant pas le Cantal, Mamie ne savait pas trop que faire de ce DVD, d'autant qu'elle ne lit pas la langue de la perfide Albion et n'a aucunement l'intention de s'y mettre, à son âge aussi respectable qu'avancé.
Elle a donc fait appel à moi pour arriver à faire quelque chose de ce DVD, particulièrement pour les sous-titres, qu'elle aimerait avoir en français.
Il existe de nombreuses méthodes pour extraire des sous-titres VobSub d'une vidéo, tant sur GNU/Linux que sur Windows. Par contre GNU/Linux ne propose rien de probant pour convertir le format VobSub en quelque chose de facilement éditable comme le SRT. Alors bien sûr, on peut le faire à la main avec Avidemux par exemple ou même SubRip via Wine, mais c'est assez long et surtout, dans le cas présent, le DVD contient pas moins de 24 séquences distinctes comptant chacune entre 300 et 400 lignes de sous-titres. L'automatisation de la tâche s'impose…
Heureusement pour moi, ruediger.s du forum Doom9.org a développé un script qui permet de faire ce que je veux : j'ai nommé VobSub2Srt. Procédure d'installation :
On récupère les sources ici : https://github.com/ruediger/VobSub2SRT/zipball/master
On installe le nécessaire pour compiler :
— Ubuntu 11.10 Oneiric :
$ sudo apt-get install libavutil-dev tesseract-ocr-dev tesseract-ocr-eng build-essential cmake checkinstall
— Ubuntu 12.04 Precise et versions suivantes :
$ sudo apt-get install libavutil-dev libtesseract-dev libtiff4-dev tesseract-ocr-eng build-essential cmake checkinstall
Notez ici l'installation de Tesseract : c'est lui qui, par OCR, va faire le gros du boulot. Ici, j'installe le nécessaire pour faire de l'OCR sur la langue anglaise ; il est bien évident qu'il faut installer les paquets tesseract correspondant aux langues que vous voudrez extraire…
Maintenant, on va compiler le tout et installer dans le même mouvement à l'aide de checkinstall :
$ unzip ruediger-VobSub2SRT-*.zip && cd ruediger-VobSub2SRT-* $ ./configure --prefix=/usr $ make $ sudo checkinstall -D --nodoc --maintainer=your@email.tld --pkgname=vobsub2srt --pkgversion=0:`cat debian/changelog | head -1 | cut -d"(" -f2 | cut -d")" -f1`-`lsb_release -a | grep Codename | cut -d":" -f2 | sed 's/^[ \t]//'` --pkglicense=GPL3+ --pkgarch=`dpkg --print-architecture` --pkgsource=https://github.com/ruediger/VobSub2SRT --provides=VobSub2Srt --requires="tesseract-ocr-eng" --backup=no --deldoc --default
Enfin, il ne reste plus qu'à l'utiliser, postulons que j'ai sous_titres.sub (et sous_titres.idx bien sûr). Je me place dans le répertoire contenant ces deux fichiers, puis :
$ vobsub2srt sous_titres
et l'on obtient en quelques secondes un fichier sous_titres.srt qu'il reste à corriger. Ben oui, c'est génial l'OCR mais loin d'être infaillible, surtout quand c'est automatique. Cependant, j'ai obtenu d'aussi bons résultats qu'en le faisant à la main avec Avidemux, et beaucoup plus rapidement !
Il existe deux options pour vobsub2srt :
--verbose --lang code_langue
Le premier active le mode verbeux et le second permet de régler l'OCR sur la langue donnée.
Voilà ! Convertissez bien et comme toujours, je vous fournis un paquet précompilé pour architecture x64 disponible dans l'espace de téléchargement, section Applications → Ubuntu.
— Paquet pour Ubuntu 11.10 Oneiric :
Fichier : vobsub2srt_23dcb63-1_amd64.deb
Signature : vobsub2srt_23dcb63-1_amd64.deb.asc
SHA1 : f0c74851a26b82d1729ad56b5cc5a83b772f93ae
MD5 : 878cb25143f637bf7a9a3bc290d2d688
CRC32 : 1f719842
— Paquet pour Ubuntu 12.04 Precise :
Fichier : vobsub2srt_2d8d1b0-1_amd64.deb
Signature : vobsub2srt_2d8d1b0-1_amd64.deb.asc
Checksums : vobsub2srt_2d8d1b0-1_amd64.deb.checksum
— Paquet pour Ubuntu 13.10 Saucy :
Fichier : vobsub2srt_0.0ubuntu1~1.gbpdb8f2d-saucy-1_amd64.deb
Signature : vobsub2srt_0.0ubuntu1~1.gbpdb8f2d-saucy-1_amd64.deb.asc
Checksums : vobsub2srt_0.0ubuntu1~1.gbpdb8f2d-saucy-1_amd64.deb.checksum