Convertir SUB/IDX (VobSub) en SRT
La première exécution télécharge le lecteur de texte — environ 4 Mo plus le modèle de langue, servis par ce site et mis en cache par le navigateur ensuite. Rien n'est envoyé, et le résultat est lu par machine : relisez-le avant de vous y fier.
Options
Un sous-titre en bitmap est une image de texte : les mots doivent donc en être relus. Indiquez au lecteur dans quelle langue les sous-titres sont écrits — la liste couvre toutes les langues dans lesquelles ce site est publié. Des sous-titres russes lus avec le modèle anglais ressortent en bruit, pas en russe. Seul le modèle choisi est téléchargé (les autres jamais), donc changer coûte un téléchargement par langue, mis en cache ensuite.
VobSub répartit une seule piste de sous-titres sur deux fichiers, et les deux sont nécessaires. Le fichier .sub contient les images : une chaîne de paquets MPEG program stream, chacun portant un bitmap compressé avec un code run-length à deux bits. Le fichier .idx contient tout le reste : la palette de seize couleurs, la taille de l'image, et une ligne par sous-titre avec son heure de début et l'offset d'octet dans le .sub où commence son image. Déposez seulement le .sub et il n'y a aucun moyen de savoir combien de sous-titres il contient ; déposez seulement le .idx et il n'y a aucune image à lire. Cette page prend la paire et écrit un .srt.
Chaque paquet est localisé par cet offset d'octet : l'index n'est donc pas une commodité, c'est la carte. À l'intérieur du paquet, deux mots d'en-tête donnent la taille et la position d'une séquence de contrôle ; la séquence fixe la zone d'affichage, choisit quelles quatre entrées de la palette concernent les pixels et pointe vers l'image compressée. Le décodeur parcourt ensuite le code run-length deux fois, une fois pour les lignes paires et une fois pour les lignes impaires, car VobSub stocke séparément les deux champs d'une image entrelacée. C'est ce détail qui fait qu'un décodeur naïf produit une image à laquelle une ligne sur deux manque.
Les horodatages viennent du .idx, seul endroit où ils existent sous une forme utilisable. Un bloc se termine là où le suivant commence ; le dernier bloc reçoit deux secondes, et le rapport de pertes l'inscrit. Les sous-titres dont les images ne produisent aucun texte lisible sont écartés et comptés, pas écrits comme des lignes vides.
Le texte lui-même vient de l'OCR, ce qui signifie qu'il s'agit d'une lecture et non d'une transcription. C'est là que les sous-titres de DVD sont les plus difficiles : ils ont été composés dans de petites polices bitmap, avec des italiques pour les voix hors champ, et un reconnaisseur ne sait pas qu'un mot légèrement incliné est le même mot. Relisez le fichier. Choisissez la langue des sous-titres : le modèle est choisi par page, téléchargé une fois avec le moteur de reconnaissance, puis mis en cache par le navigateur.
Rien n'est envoyé. La paire est analysée et reconnue dans cet onglet ; les seules requêtes réseau concernent les fichiers du reconnaisseur, servis par ce site. Cela compte particulièrement pour le VobSub, car ces fichiers viennent souvent d'un disque que l'utilisateur possède et sont exactement le genre de matériel qui ne devrait pas être confié à un service de conversion.
Questions fréquentes
Pourquoi cette page a-t-elle besoin de deux fichiers alors que les autres outils du site n'en demandent qu'un ?
Parce que VobSub stocke une seule piste dans deux fichiers par conception, et non parce que l'outil réclame deux entrées. Le .sub porte les images ; le .idx porte la palette de seize couleurs, la taille de l'image et l'offset de chaque image avec son heure de début. Aucun des deux ne peut répondre seul à la question « combien y a-t-il de sous-titres et que disent-ils ». Si vous avez un .sub sans .idx, la paire a été séparée quelque part et l'index doit être récupéré depuis le disque source avant que l'OCR soit possible.
À quoi correspondent les nombres filepos dans le fichier .idx ?
À un offset d'octet dans le fichier .sub, au début d'un paquet MPEG program stream dont l'identifiant de flux le désigne comme flux privé — le type que les lecteurs DVD utilisent pour les sous-titres. L'offset n'est pas un numéro de sous-titre, et il n'est pas nécessairement croissant avec les horodatages sur un disque inhabituel, ce qui explique que la page trie les entrées par horodatage plutôt que de faire confiance à l'ordre des lignes dans le fichier.
Pourquoi certaines lignes sortent-elles avec de mauvaises lettres mais la bonne longueur ?
Parce que la palette et les formes viennent tous deux de l'image, et que l'OCR résout les formes à une taille fixe. Les sous-titres DVD sont souvent composés dans une police petite, très inclinée ou très grasse ; un mot en italique — utilisé pour le dialogue hors champ et les paroles de chanson — est la victime habituelle, car une version inclinée d'une lettre n'est pas une autre lettre pour un humain, mais c'est une autre forme pour un reconnaisseur. Si les longueurs correspondent et que les lettres non, le remède est la relecture, pas un autre outil.
La position à l'écran du sous-titre survit-elle dans le SRT ?
Non, et elle n'a nulle part où aller. VobSub stocke la position sous forme de rectangle de zone d'affichage en coordonnées 12 bits dans chaque paquet, et le SRT n'a aucune syntaxe de positionnement. La page utilise le rectangle pour savoir où est l'encre — ce qui aide l'OCR à recadrer correctement — puis l'abandonne. Si votre lecteur a besoin de sous-titres positionnés, ASS est le format capable de porter cette information ; un SRT avec des marqueurs de position est une convention que certains lecteurs respectent et que d'autres affichent littéralement.
L'outil réclame le .idx mais je n'ai qu'un .sub. L'index peut-il être reconstruit ?
Pas à partir du .sub seul, et pas de façon fiable à partir des images. Les offsets peuvent en principe être retrouvés en cherchant les paquets de flux privé, mais les horodatages ne peuvent pas être récupérés : ils vivent dans le .idx et nulle part ailleurs dans la paire. Reconstruire un index suppose de revenir au disque ou au fichier VOB dont la paire a été extraite, ou d'utiliser l'index d'origine s'il existe encore à côté d'une autre piste. Deviner les temps produirait un fichier qui paraît correct et dérive par rapport à la vidéo, ce qui est pire que pas de fichier.
La paire de fichiers est-elle envoyée quelque part pendant la lecture ?
Non. Les deux fichiers sont lus en mémoire dans cet onglet, décodés ici et reconnus ici. Le seul téléchargement est celui du moteur de reconnaissance de texte et du modèle de langue choisi, servis par ce site et mis en cache ensuite. Vous pouvez surveiller le panneau Réseau pendant le traitement d'une paire : aucune requête ne transporte l'un ou l'autre fichier. Cela vaut pour le VobSub en particulier, car ces fichiers proviennent généralement d'un disque possédé et sont exactement le type de matériel qui ne doit pas être remis à un service de conversion.