Journal Extraire les sous-titres des enregistrements de la TNT HD

Posté par  (site web personnel) . Licence CC By‑SA.
19
12
fév.
2016

Avec la fin de la définition SD pour la TNT en France, il devenait urgent pour l'amateur de VOST que je suis de comprendre comment récupérer les sous-titres des flux HD, le brave Project X ne traitant à ma connaissance que les flux SD.

En fait, l'outil miraculeux existe, il s'appelle SubtitleEdit, mais malgré des recherches fréquentes, je n'ai appris son existence que récemment.
En plus, il y a une petite astuce à utiliser, car il ne reconnait pas directement les flux de sous-titres de mes enregistrements au format ts (alors que dans la doc, on a l'impression que oui), cependant on s'en sort en extrayant le flux soi-même avec ffmpeg.

J'explique les manipulations sous Ubuntu, mais ce n'est pas très distribution-dépendant.

Installation

1) quelques paquets à installer:
sudo apt-get install ffmpeg mono-complete libhunspell-dev tesseract-ocr-fra tesseract-ocr-deu

2) Télécharger SubtitleEdit
https://github.com/SubtitleEdit/subtitleedit/releases
Il faut choisir la version portable
Aujourd'hui, c'est le fichier SE3411.zip qui convient

3) Dézipper le fichier zip dans votre répertoire utilisateur
s'y rendre, puis
cd Tesseract/tessdata
ln -s /usr/share/tesseract-ocr/tessdata/fra.traineddata
ln -s /usr/share/tesseract-ocr/tessdata/deu.traineddata

Ceci pour bénéficier de reconnaissance de caractère plus adaptée pour allemand, français.

Utilisation

1) On repère la piste de sous-titres voulue avec
ffmpeg -i fichier.ts

2) On extrait la piste avec ffmpeg
numero= # ce que vous avez repéré
ffmpeg -i fichier.ts -map 0:$numero -scodec copy fichier_extrait.ts

3) On lance SubtitleEdit
mono repertoire_de_l_executable/SubtitleEdit.exe fichier_extrait.ts

La fenêtre OCR de reconnaissance de caractère s'ouvre automatiquement.
On lance la reconnaissance, après avoir sélectionné la langue, on ferme la fenêtre OCR, puis on sauve au format de sous-titres voulu. C'est fini !

  • # Oups

    Posté par  (site web personnel) . Évalué à 4.

    Bien sûr, à la première ligne, je voulais dire la fin prochaine de la définition SD !

    • [^] # Re: Oups

      Posté par  (site web personnel) . Évalué à 0.

      Ça me semblait bizarre, donc il n'y a pas d'urgence :-)

      La même procédure s'applique sur les flux HD ? Un coup de ffmpeg pour extraire la piste subtitle et le tour est joué non?

      • [^] # Re: Oups

        Posté par  (site web personnel) . Évalué à 1.

        Oui, justement, l'intérêt c'est que ça marche sur les flux SD et HD.

        A propos, je me rends compte que j'ai écris "fermer la fenêtre", je veux dire qu'on la ferme en cliquant sur "OK", pas sauvagement avec une croix.

    • [^] # Re: Oups

      Posté par  (site web personnel) . Évalué à 4.

      Corrigé, merci.

  • # sous-titres multilingues ?

    Posté par  (site web personnel) . Évalué à 2.

    Ceci pour bénéficier de reconnaissance de caractère plus adaptée pour allemand, français.

    comment tu fais pour récupérer des sous-titres multilingues ? il y a des options spécifiques pour les avoir tout le temps ?
    Chez Free, je ne réussis à avoir que des sous-titres français, ce qui m'embête foncièrement : je préfère regarder une VO anglais avec des sous-titres en anglais (déjà que ce n'est pas toujours gagné avec des DVD…).

    • [^] # Re: sous-titres multilingues ?

      Posté par  (site web personnel) . Évalué à 2.

      Je crois qu'il n'y a pas de miracle, c'est un cas particulier, lié à la chaîne franco-allemande Arte.

      Exemple de sortie:

      Input #0, mpegts, from 'Trepalium-123.ts':
      Duration: 02:35:58.01, start: 6862.405789, bitrate: 6522 kb/s
      Program 1031
      Stream #0:0[0x2d0]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 90k tbn, 50 tbc
      Stream #0:10x2da: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
      Stream #0:20x2db: Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz, stereo, s16p, 256 kb/s
      Stream #0:30x2e4: Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
      Stream #0:40x2e5: Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006)
      Stream #0:50x2e6: Subtitle: dvb_subtitle ([6][0][0][0] / 0x0006) (hearing impaired)

      Ici, en fait, la piste 3 est vide et la piste 4 ne contient que les sous-titres forcés, le film est originellement en français. Je suppose qu'avec un film en anglais, on aurait tous les sous-titres en piste 3 et 4, mais pas de sous-titres anglais. Je testerai à l'occasion.

      • [^] # Re: sous-titres multilingues ?

        Posté par  (site web personnel) . Évalué à 1.

        Test hier avec the bling ring, sur Arte.
        C'est du grand n'importe quoi.
        Les sous-titres français sont incrustés dans la vidéo.
        La bande son "français" est en anglais.
        "audio original" est en anglais

        "allemand" est en allemand
        "qad" est en français.
        Les pistes de sous-titres "français" et "malentendants" sont vides, la liste de sous-titres allemande contient quelques vagues sous-titres de présentation du film.

  • # Tesserac

    Posté par  . Évalué à 2.

    Ayant utilisé dernièrement tesserac il y a une partie que je ne comprend pas

    ln -s /usr/share/tesseract-ocr/tessdata/fra.traineddata

    Ont ils fait de l'apprentissage à Tesserac et que ce sont les fichier obtenus ?

    Si tu utilise un OCR ça veut dire que tes sous titre sont sous forme d'image ? (je demande je ne me suis jamais amusé a regarder ça)

    • [^] # Re: Tesserac

      Posté par  (site web personnel) . Évalué à 2.

      Oui, c'est le même principe sur les DVD et les Bluray.

      Bizarrement, il y a peu d'applications sous Linux comprenant les flux de sous-titres DVB.
      Avidemux, mkvtoolnix and co les ignorent royalement, ce qui est très ennuyeux.
      vlc et totem savent les afficher, mais je n'y ai pas trouvé de fonction d'export vers les formats classiques, genre vobsub.

      Pour tesseract, ça correspond au paramètre -l de la ligne de commande. Je suppose qu'ils ont des stats liés à la proximité des lettres dans les différentes langues.

    • [^] # Re: Tesserac

      Posté par  (site web personnel) . Évalué à 2.

      Si tu utilise un OCR ça veut dire que tes sous titre sont sous forme d'image ? (je demande je ne me suis jamais amusé a regarder ça)

      oui.
      Vu que c'est généralement toujours la même police, cela permet un apprentissage facilité et une meilleure reconnaissance des lettres malgré le fond changeant (le cas idéal étant sur fond noir ou au moins uni, mais quand c'est en surimpression du flim, c'est le cas le pire tout de même car trop changeant… s'il y a un invariant, lié à la police de caractères, cela aide).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.