Vidéo et sous-titres · Boîte à outils de sous-titres
Ce que signifie « nettoyer » un fichier de sous-titres : balises, codes et formatage parasite
· Comment ça marche
sous-titres traitement de texte formats de fichiers
Les fichiers de sous-titres collectent des déchets : balises de type HTML, codes de style d'autres formats, nomenclatures parasites et fins de lignes mixtes. Cet article explique ce qu'est chaque type de désordre, d'où il vient et comment une étape propre l'élimine sans toucher aux mots.
Les sous-titres affichent '{\an8}' et '<i>' à l'écran : les symptômes visibles d'un fichier de sous-titres sale.
Lorsqu'une légende affiche les caractères d'une balise au lieu d'y obéir, le joueur vous dit qu'il n'implémente pas ce balisage. SRT n'a pas de spécification de formatage, la prise en charge est donc conventionnelle : de nombreux joueurs honorent un petit ensemble de balises de type HTML, et tout ce qui se trouve en dehors de cet ensemble est dessiné sous forme de texte littéral. Un fichier qui s'affiche correctement dans un lecteur et affiche des accolades dans un autre n'a pas changé ; seul l’ensemble des balises honorées l’a.
C'est pourquoi le ménage est une véritable opération plutôt qu'un rangement cosmétique. Le désordre n’est pas une décoration moche. Il s'agit d'instructions écrites dans un format qu'un autre joueur lit sous forme de dialogue, et la solution consiste à supprimer les instructions tout en laissant chaque mot intact.
D'où vient le désordre : exportations à partir de formats gourmands en style, de sorties OCR et d'éditeurs qui ajoutent leur propre balisage
La plupart du désordre arrive via la conversion. Un fichier créé dans un format de style lourd tel que ASS ou SSA contient des directives de positionnement et d'apparence en ligne, et un convertisseur qui mappe fidèlement les timings transmettra souvent ces directives sous forme de texte. Les éditeurs de sous-titres ajoutent leur propre balisage pour l'identification et l'accentuation du locuteur, et la reconnaissance optique des caractères des sous-titres incrustés introduit des signes de ponctuation parasites et des espaces doublés qu'aucun auteur n'a tapés.
Aucune de ces sources n'est mal formée dans son propre monde. Le bloc de remplacement ASS est significatif dans ASS. Le problème est que SRT n'a pas d'équivalent, donc une conversion sans perte produit un fichier dans lequel l'instruction survit sous forme de caractères plutôt que de comportement.
Balises de formatage : balises italiques, grasses et de police, que les joueurs les honorent et qui les affichent littéralement
Les balises entre crochets sont traitées en premier, avec une expression régulière qui supprime tout ce qui se trouve entre un inférieur à et le immédiatement supérieur à. Cela couvre les balises italiques et grasses, les balises de classe WebVTT telles qu'une annotation de classe de repère et les balises vocales qui nomment un locuteur. La propriété importante est qu'il s'agit d'une substitution de texte, pas d'un analyseur HTML, et qu'il n'essaie pas de faire correspondre les balises d'ouverture aux balises de fermeture.
Cette simplicité a un coût qui mérite d'être connu. Une ligne de dialogue qui contient véritablement un inférieur à et un supérieur à, comme une inégalité parlée, verra le texte entre eux supprimé ainsi que les parenthèses. C'est rare dans les dialogues et courant dans les légendes techniques, il vaut donc la peine de numériser le résultat d'une passe de nettoyage sur du matériel qui traite du code ou des mathématiques.
Codes de positionnement et de style : que signifient des codes comme {\an8} dans ASS/SSA et pourquoi ils sont du bruit dans SRT
Les codes d'accolade sont supprimés par une deuxième substitution couvrant tout ce qui se trouve entre une accolade ouvrante et fermante. Dans les formats SubStation, ce sont des blocs de remplacement, et le plus fréquemment observé est celui qui déplace une ligne vers le haut du cadre afin qu'elle n'entre pas en collision avec le texte gravé. D'autres définissent la police, la couleur, la rotation ou le timing du karaoké.
Dans un fichier SRT, aucun d'entre eux ne veut rien dire, c'est pourquoi ils sont supprimés plutôt que traduits. Une directive de position n'a pas d'équivalent SRT dans lequel traduire : le format ne comporte tout simplement pas de placement. La suppression du code perd l'intention de l'auteur selon laquelle la ligne doit se trouver en haut du cadre, et cette perte est réelle, mais il est préférable d'imprimer le code au spectateur.
Fouillis invisible — marques d'ordre d'octets, fins de lignes CRLF et LF mixtes et espaces de fin
Le fouillis invisible est traité plus tôt, lors de l'analyse, et il vaut la peine de le séparer car il ne fait pas du tout partie du texte. Une marque d'ordre d'octet au début du fichier est supprimée avant toute autre chose, car sinon elle s'attache au premier numéro d'index et coûte le premier signal. Les retours chariot sont normalisés, à la fois la paire Windows et un retour chariot isolé, de sorte qu'un fichier édité sur deux plates-formes se divise correctement en blocs.
Les espaces à l'intérieur d'une réplique sont gérés avec les balises. Les séquences de deux ou plusieurs espaces ou onglets se réduisent en un seul espace, chaque ligne est coupée individuellement et la réplique dans son ensemble est coupée une fois les lignes réunies. Les entités de caractères sont délibérément laissées seules : une esperluette est un contenu qu'un spectateur devrait voir, pas un balisage, et un nettoyeur qui la décoderait éditerait le dialogue plutôt que de supprimer des instructions.
Exemple pratique : nettoyage d'une exportation de repères 200 – qu'est-ce qui change, qu'est-ce qui reste et comment vérifier le résultat
Le nettoyage d'une exportation importante change moins qu'il n'y paraît. Prenez un fichier de deux cents repères dans lequel un convertisseur a préfixé le code de haut de l'image à soixante repères et enveloppé les balises d'accentuation autour de quarante autres. Les deux substitutions suppriment le code et les balises, la passe d'espacement réduit les espaces doublés laissés par les suppressions, et deux cents signaux deviennent deux cents signaux avec les mêmes mots et les mêmes timings.
Deux autres étapes comptent. Une réplique dont tout le contenu était un code parasite devient vide une fois le code disparu, et les répliques vides sont supprimées lors d'une passe séparée plutôt que d'être émises sous forme de blocs vierges, car une réplique avec un horodatage et sans texte est un espace que certains joueurs restituent sous forme de flash. La réécriture du fichier renumérote les repères à partir d'un seul et les maintient contigus, de sorte que les suppressions ne laissent pas de trous dans la séquence. Vérifiez le résultat en comparant le nombre de repères et en vérifiant ponctuellement toute ligne contenant à l'origine une entité.
Ce que cela ne couvre pas : la réécriture du texte lui-même, l'orthographe ou la traduction ; les mots sont à toi
Le nettoyage supprime le balisage et ne touche pas au langage. Il ne corrige pas l’orthographe, ne développe pas les abréviations, ne corrige pas les erreurs de transcription ou ne traduit pas. Si une légende dit le mauvais mot, elle dira ensuite le mauvais mot, correctement formaté. Cette limite est délibérée : il serait impossible de faire confiance à un outil qui réécrit silencieusement le dialogue sur du matériel qu’il ne comprend pas.
Il ne répare pas non plus la structure. Un fichier dont les blocs manquent d'horodatage a un problème d'analyse, pas de formatage, et la suppression de balises ne produira pas d'indices. Les défauts d’encodage sont également hors de portée. Un fichier décodé avec le mauvais jeu de caractères produit des signaux parfaitement formés dont le texte est erroné, et aucune suppression de balise ne le détecte, car rien dans la structure n'est cassé.
À retenir : supprimez le balisage, conservez le sens – comment l'étape propre de la boîte à outils de sous-titres gère l'encombrement courant et documente ce qu'il laisse tranquille
La règle est de supprimer le balisage, de conserver le sens. Les étiquettes de support d'angle et les codes d'accolade disparaissent parce que ce sont des instructions qu'un joueur ignore ou imprime. Les espaces doublés et le remplissage par ligne disparaissent car ils sont des artefacts de la suppression ou de l'exportation d'origine. Les entités, la ponctuation et chaque mot restent, car c'est ce que le spectateur est censé lire.
Exécutez une exportation contenant beaucoup de balises via le convertisseur Subtitle Toolkit et comparez-la à l'original plutôt que de vous fier au résultat en un coup d'œil. Confirmez que le nombre de repères est inchangé sauf là où les repères étaient véritablement vides, vérifiez que toute ligne contenant une entité la contient toujours et analysez les lignes qui traitent du code ou des mathématiques à la recherche de texte perdu à cause d'un crochet angulaire égaré.