Aller au contenu principal
SubtitleMatrix

Convertir SUP (PGS) en SRT

Entrées médiaSous-titres en bitmap (PGS / VobSub)

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.

Un fichier .sup est un flux PGS, le format de sous-titres en bitmap utilisé par les disques Blu-ray. Il ne contient pas un seul caractère : chaque sous-titre est stocké sous forme d'image bitmap, avec une palette et l'instant où il doit apparaître, et le lecteur le composite sur la vidéo. En extraire du texte signifie donc lire les lettres de chaque image. Cette page le fait dans l'onglet avec un moteur de reconnaissance de texte (OCR) que le site sert lui-même, et écrit le résultat en .srt.

Le format est une suite de segments, chacun avec un en-tête de treize octets qui porte un horodatage de présentation en unités de 90 kHz, un type et une longueur. Quatre types comptent : la définition de palette (PDS), qui associe des indices à des couleurs RVB via YCbCr ; la définition d'objet (ODS), qui contient une image compressée en run-length ; la composition de présentation (PCS), qui dit quels objets se placent où sur l'image ; et l'ensemble d'affichage qui les réunit. Le début d'un bloc est l'horodatage de l'ensemble d'affichage qui le montre. Un flux PGS ne porte aucune heure de fin — un sous-titre reste à l'écran jusqu'à ce qu'un ensemble suivant le remplace — donc la fin de chaque bloc est le début du suivant, exactement comme le fait un lecteur.

Comme chaque bloc est lu par une machine, le texte est une lecture et non une transcription : une police à empattements de petite taille, une fonte inhabituelle ou un contour épais peuvent transformer un caractère en un autre. Relisez le fichier avant de vous y fier. Cet avertissement n'est pas une formule : c'est le seul endroit du site où la sortie n'est pas dérivée de ce que le fichier disait, et la page le dit plutôt que de présenter le résultat comme exact.

Choisissez la langue dans laquelle les sous-titres sont réellement écrits. La liste couvre toutes les langues dans lesquelles ce site est publié ; chaque modèle lit sa propre écriture. Passer un modèle anglais sur des sous-titres japonais produit du bruit plutôt qu'une mauvaise traduction, car le reconnaisseur cherche des formes qui ne sont pas là. Seul le modèle choisi est téléchargé, avec le moteur de reconnaissance, soit quelques mégaoctets mis en cache ensuite par le navigateur.

Les blocs dont les images ne produisent aucun texte — une image de fondu, un logo, un bloc noir — sont écartés et comptés dans le rapport de pertes au lieu d'être écrits comme des lignes vides. Tout ce qui était une image reste une image par l'esprit : la police, la couleur, le contour et la position à l'écran n'existent pas dans un .srt, et le rapport de pertes le dit une fois pour tout le fichier. Rien n'est envoyé : le fichier et son contenu sont lus dans l'onglet, et les seules requêtes réseau concernent les fichiers du moteur de reconnaissance, servis par ce site.

Questions fréquentes

Qu'est-ce qui, dans un fichier .sup, transforme la conversion en SRT en travail de reconnaissance ?

Des segments, pas des caractères. Chaque sous-titre d'un flux PGS est un objet : une image bitmap d'indices de palette compressée en run-length, plus une définition de palette qui transforme ces indices en RVB. Les seules valeurs assimilables à du texte dans le fichier sont les horodatages de présentation, des entiers à 90 kHz et non quelque chose qu'une personne lit. Convertir cela en SRT signifie placer chaque image sur un canevas et reconnaître les lettres, ce qui explique pourquoi le résultat doit être relu et pourquoi la page demande la langue des sous-titres.

Pourquoi le dernier sous-titre de la sortie finit-il quelques secondes plus tard que prévu ?

Parce que le PGS ne dit jamais quand un sous-titre se termine. Un lecteur affiche une composition jusqu'à l'arrivée de la suivante ou jusqu'à ce que le flux soit effacé, donc la seule heure de fin qui existe dans le fichier est « le début du suivant ». Pour le dernier bloc, il n'y a pas de suivant : la page lui donne deux secondes et inscrit ce choix dans le rapport de pertes. Si le disque laissait réellement sa dernière ligne dix secondes à l'écran, la correction honnête est un décalage ou une modification de durée, pas une supposition cachée dans le convertisseur.

Quel modèle de langue choisir pour des sous-titres mêlant japonais et anglais ?

Celui de la majorité du dialogue. Une image PGS peut mêler les écritures sur une même ligne — une phrase japonaise avec un emprunt anglais en lettres latines est courante — mais le reconnaisseur reçoit un seul modèle par passe, et un modèle entraîné sur une écriture lit l'autre comme du bruit. Si le fichier alterne vraiment entre deux écritures, lancez-le deux fois, une fois par langue, et gardez les lignes réussies de chaque passe : la sortie est un .srt ordinaire, donc fusionner les deux est un diff, pas un nouvel export.

Les couleurs des sous-titres sont-elles reprises dans le SRT ?

Non, et elles ne peuvent pas l'être. Un .sup encode la couleur trois fois : dans la palette (YCbCr avec un canal alpha, par bloc), dans la composition (où l'image se place sur une image de 1920×1080) et dans le contour et l'ombre dessinés dans l'image elle-même. Le SRT n'a aucun de ces emplacements. La page lit la luminance de chaque pixel pour décider ce qui est encre et ce qui est fond, ce dont l'OCR a besoin, et le rapport de pertes signale le style une fois pour le fichier au lieu de prétendre que les couleurs ont survécu.

Certains blocs sont sortis vides ou absents. Que leur est-il arrivé ?

Une image qui n'a produit aucun texte a été écartée plutôt qu'écrite comme sous-titre blanc. Cela arrive avec les images de fondu entrant et sortant, avec les blocs qui ne sont qu'un logo ou un symbole, et avec un texte très petit sous la taille que le reconnaisseur peut résoudre. Chacun est compté dans le rapport de pertes, donc le fichier obtenu n'est pas silencieusement plus court que celui fourni. Si le nombre est élevé, la cause habituelle est un mauvais modèle de langue ou un flux dont les images sont anormalement petites.

Le fichier .sup ou ses images sont-ils envoyés quelque part ?

Non. Le reconnaisseur s'exécute dans l'onglet, et son worker, son cœur WebAssembly et son modèle de langue sont tous servis par ce site puis mis en cache par le navigateur. Les seules requêtes de la page concernent ces fichiers. Cela compte davantage ici que sur une page de texte : un flux PGS extrait d'un disque est souvent l'élément qu'un studio ou un avocat est le moins disposé à confier à un tiers, et toute la raison d'être de cette page est qu'il n'a pas à le faire.

Outils associés