Aller au contenu principal
SubtitleMatrix

Resynchroniser sur la bande-son

Entrées médiaResynchroniser sur l’audio

La première exécution télécharge le moteur vidéo — environ 31 Mo, servi par ce site et mis en cache par le navigateur ensuite. Il ne sert qu'à lire la piste audio ; les sous-titres sont mis en correspondance avec le son lui-même, sans modèle vocal et sans rien envoyer.

Options

Jusqu'où les sous-titres peuvent être loin de leur place, dans un sens ou dans l'autre. C'est un réglage de coût et de risque plutôt que de précision : une fenêtre plus large trouve une dérive plus grande, mais donne aussi plus de chances à la recherche de s'arrêter sur une coïncidence qui obtient un bon score. Rien au-delà d'une minute environ ne vient d'une coupe ou d'un logo — cela signifie généralement une autre version du film, ou un décalage de fréquence d'images, que cette page résout séparément. Choisissez la plus petite fenêtre qui couvre votre estimation.

Cette page corrige des sous-titres qui sont dans le bon ordre mais aux mauvais moments. Vous lui donnez deux choses — le fichier de sous-titres et la vidéo ou l'audio auquel il appartient — et elle calcule de combien le texte a dérivé, puis réécrit le fichier avec chaque bloc déplacé. Une dérive de quelques secondes vient de coupes et de logos ; une dérive qui grandit au fil du film vient d'un désaccord de fréquence d'images, où un master à 23,976 images/s a été associé à des sous-titres calés sur 25 images/s et l'erreur atteint déjà une minute et demie à la fin de la première heure.

La mesure est faite sur l'audio lui-même. La page extrait une piste mono, la découpe en trames de vingt millisecondes de niveau sonore et marque les trames qui contiennent de la parole. Elle pose ensuite une seule question, encore et encore : pour ce décalage et ce changement de vitesse, quelle part du texte des sous-titres tombe sur de la parole plutôt que sur du silence ? La réponse est notée bloc par bloc puis moyennée, et la paire gagnante est celle qui est appliquée. Aucune reconnaissance de parole n'intervient, ce qui explique que le calcul prenne quelques secondes et qu'il fonctionne quand les sous-titres sont dans une langue pour laquelle vous n'avez pas de modèle.

Comme le score est une mesure et non une garantie, la page est conçue pour ne rien faire quand la mesure est faible. Cinq blocs ou moins, une piste audio sans parole détectable, un meilleur score qui tombe encore majoritairement sur du silence, ou deux alignements très différents qui obtiennent à peu près le même score : chacun de ces cas se termine par un rapport et aucun fichier de sous-titres réécrit. Un échec discret vaut bien mieux ici qu'une réussite confiante : des sous-titres décalés de cinq secondes paraissent négligés, mais des sous-titres décalés de cinq secondes par un outil qui a annoncé une réussite sont difficiles à remarquer et à expliquer.

Quand l'alignement est bon, vous obtenez deux fichiers, parce qu'ils répondent à deux questions différentes. Le sous-titre corrigé conserve le format d'origine, sous le nom film.synced.srt ou l'extension correspondante, prêt à être lu. Le rapport est un petit fichier texte — film.sync.txt — qui contient le décalage en millisecondes, le ratio réellement appliqué, le score, la confiance, et une ligne disant si le fichier a été touché ou non. Les deux sortent de la même exécution, donc un lot d'épisodes produit une paire assortie pour chacun.

Le travail est local. L'audio est décodé par ffmpeg compilé en WebAssembly, téléchargé une fois depuis ce site — environ 31 MB — puis mis en cache ; le sous-titre est analysé dans l'onglet. Rien de votre film ni de vos sous-titres n'est envoyé nulle part : il n'y a pas d'étape d'envoi à contourner, ce qui compte pour un matériel qui n'a pas le droit de quitter la machine.

Questions fréquentes

Quelle différence entre un décalage mesuré et le décalage fixe que je saisis sur la page de translation ?

La page de translation applique un nombre que vous connaissez déjà, et elle reste correcte que l'audio soit d'accord ou non. Cette page part de l'autre bout : elle suppose que vous ne connaissez pas le nombre, lit l'activité vocale dans l'audio et résout ensemble le décalage et le changement de vitesse. C'est aussi pourquoi elle peut réparer un problème de fréquence d'images, qu'aucun décalage unique ne sait exprimer — à 25 contre 23,976, l'erreur est nulle au début et grandit d'environ 3,6 secondes par heure, donc un décalage qui répare le début aggrave la fin.

Pourquoi la page refuse-t-elle parfois d'écrire un nouveau fichier de sous-titres ?

Parce qu'une correction fausse est plus difficile à détecter qu'une correction absente. La recherche rend quatre informations : le nombre de blocs sur lesquels travailler, la présence de parole dans l'audio, la part du temps de sous-titres qui tombe sur de la parole, et l'avance du gagnant sur la meilleure alternative réellement différente. Si l'une de ces informations est faible, l'exécution ne produit que le rapport, dont la ligne d'état indique not-found avec la raison. Vous ne perdez rien — le fichier d'origine n'est pas touché — et vous obtenez un nombre à vérifier avant toute intervention manuelle.

Que signifie le ratio du rapport pour un écart entre 23,976 et 25 images/s ?

Les temps des blocs sont multipliés par le ratio, puis décalés par l'offset : un ratio de 1,0427 signifie que les sous-titres étaient calés sur une base d'images plus rapide et que chaque bloc doit être étiré vers le tard. La page essaie les deux sens de chaque paire courante, car le sens de lecture dépend du fichier que vous tenez : 1,0427 et 0,9590 sont le même désaccord vu de chaque extrémité. Si le ratio rapporté vaut 1,000000 et que l'offset est inférieur à une image, le fichier est déjà aligné et n'est pas modifié.

Le fichier corrigé conservera-t-il mon style, ou seulement les temps ?

Les temps changent et rien d'autre. Le sous-titre est analysé dans la même représentation interne que celle utilisée par toutes les autres pages du site, le début et la fin de chaque bloc sont réécrits, puis le fichier est sérialisé dans le format d'origine. Le style ASS, le positionnement et les balises en ligne survivent, ainsi que la structure propre du fichier, ce qui explique qu'un .ass donne un .ass plutôt qu'un .srt aplati. La seule exception visible est un bloc réduit à moins d'une milliseconde par un grand ratio, qui est maintenu à une milliseconde et compté dans le rapport de pertes.

Cela fonctionne-t-il quand les sous-titres sont dans une langue différente de l'audio ?

Oui, et c'est tout l'intérêt de mesurer le niveau sonore plutôt que de reconnaître des mots. L'activité vocale est une forme — une phrase est une salve d'énergie suivie d'un blanc — et cette forme est la même que la voix parle allemand ou espagnol. Un doublage allemand sous des sous-titres espagnols s'aligne aussi bien qu'une paire assortie. Ce que la page ne sait pas faire, c'est distinguer une ligne doublée d'une ligne originale : si le doublage ajoute du dialogue, l'alignement trouve toujours l'ajustement global, mais certains blocs des passages ajoutés peuvent tomber sur la mauvaise réplique.

Que contient le second fichier, celui qui finit par .sync.txt ?

Le compte rendu de la mesure, en texte simple : le décalage appliqué en millisecondes, le ratio exact, le score d'alignement, le niveau de confiance et une ligne d'état indiquant si le sous-titre a été réécrit ou non. Il est produit même quand la page refuse de toucher au fichier, ce qui est précisément le cas où il est le plus utile. Le sous-titre corrigé et ce rapport sont les deux seules sorties de l'exécution : aucun des deux ne dépend de l'autre pour être lu, et un lot d'épisodes donne une paire de fichiers par épisode.

Outils associés