Sous-titrage complet d’un film.

Création d’un fichier texte de sous-titre:

Utilisation du script python autosub

J’utilise

https://github.com/Iucasmaia/autosub

Installation

pip install autosubmaia

Noter que l’outil est installé dans ~/.local/bin qu’il faut ajouter dans le PATH pour y accéder directement.

autosub -h
usage: autosub [-h] [-C CONCURRENCY] [-o OUTPUT] [-W API_WITAI] [-F FORMAT] [-S SRC_LANGUAGE] [-D DST_LANGUAGE] [-K API_KEY]
               [--list-formats] [--list-languages]
               [source_path]

positional arguments:
  source_path           Path to the video or audio file to subtitle

options:
  -h, --help            show this help message and exit
  -C CONCURRENCY, --concurrency CONCURRENCY
                        Number of concurrent API requests to make
  -o OUTPUT, --output OUTPUT
                        Output path for subtitles (by default, subtitles are saved in the same directory and name as the source
                        path)
  -W API_WITAI, --api-witai API_WITAI
                        The Wit.AI API key to be used. (Required for best transcriptions)
  -F FORMAT, --format FORMAT
                        Destination subtitle format
  -S SRC_LANGUAGE, --src-language SRC_LANGUAGE
                        Language spoken in source file
  -D DST_LANGUAGE, --dst-language DST_LANGUAGE
                        Desired language for the subtitles
  -K API_KEY, --api-key API_KEY
                        The Google Translate API key to be used. (Required for subtitle translation)
  --list-formats        List all available subtitle formats
  --list-languages      List all available source/destination languages

Préparer un fichier wav normalisé après avoir extrait la piste audio avec Avidemux, par exemple

ffmpeg -i Anna-Christie.aac -acodec pcm_s16le -ar 16000 -ac 1 -filter:a loudnorm Anna-Christie.wav

Créer le fichier sous-titre en texte

~/Vidéos/Cinema$  autosub ./Anna-Christie.wav

On note environ 45 mn de traitement:

Converting speech regions to WAV files: 100% |#####################################################################| Time:  0:03:32
Performing speech recognition: 100% |##############################################################################| Time:  0:39:48
Subtitles file created at ./Anna-Christie.srt

Ici il faut contrôler la pertinence des sous-titres et modifier le fichier texte au mieux.

Anna-Christie.srt

Dans l’environnement Gnome il existe un bon outil pour créer, synchroniser, modifier le fichier sous-titre en temps réel avec la vision du film

Gnome subtitles

https://gnomesubtitles.org/about

Faut dire que je n’ai pas choisi la facilité: Anna Christie premier film parlant de Greta Garbo en 1930. Bande son pourrie, personnages sâouls, accent suédois de Greta à couper au couteau…

Mais la reconnaissance vocale arrive à isoler des bribes de dialogue.

Ajout des sous-titres en troisième piste dans le fichier vidéo:

ffmpeg -i Anna-Christie.mkv -i Anna-Christie.srt -c:v copy -c:a copy  -c:s mov_text -metadata:s:s:0 language=eng -disposition:s:1 default Anna-Christie.mp4

On note

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
  Stream #1:0 -> #0:2 (subrip (srt) -> mov_text (native))

NB: Avec ce fichier il faut que le lecteur vidéo détecte automatiquement la piste de sous-titre ou que l’utilisateur sache le faire par les menus du lecteur vidéo.

Incrustation du texte des sous-titres dans l’image:

ffmpeg  -i Anna-Christie.mp4 -vf "subtitles=Anna-Christie.mp4 :si=0"  Anna-Christie-st.mp4

On note

Output #0, mp4, to 'Anna-Christie-st.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.76.100
  Stream #0:0(und): Video: h264 (avc1 / 0x31637661), yuv420p(progressive), 634x480 [SAR 1:1 DAR 317:240], q=2-31, 30 fps, 15360 tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
      encoder         : Lavc58.134.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
  Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]
      encoder         : Lavc58.134.100 aac
[Parsed_subtitles_0 @ 0x555e671aed40] fontselect: (Arial, 400, 0) -> /usr/share/fonts/truetype/msttcorefonts/Arial.ttf, 0, ArialMT

Si on veut changer la police de caractères des sous-titres, ajouter par exemple :force_style=Fontname=Georgia

ffmpeg -i 'Inspiration 1931-st.mp4'  -vf "subtitles='Inspiration 1931-st.mp4' :si=0  :force_style=Fontname=Georgia" 'Inspiration 1931-st-incrust.mp4'

Texte en Georgia jaune de taille 24

Incrustation des sous-titres d’un fichier .srt

la couleur est encadré par & & deux ampersand

subtitles est encadré par " " double-quote

force_style= est encadré par ' ' simple code

(Ce qui donne l’mpression qu’il y a 3 côtes à la fin)

ffmpeg -i Pretty-Addio.mp4  -vf "subtitles=Pretty-Addio.srt:force_style='FontName=Georgia,Fontsize=24,PrimaryColour=&H0000FFFF&'" Pretty-Addio-incrust.mp4

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.

Créez votre site Web avec WordPress.com
Commencer
%d blogueurs aiment cette page :