Aller au contenu principal
SubtitleMatrix

Convertir SRT en ASS

Ou collez le texte d'un sous-titre

Ce que cette conversion change

1 élément perdu ou à décider

  • Précision

    la précision du minutage — l'horloge de la sortie est plus grossière, chaque code temporel est donc arrondi au 10 ms le plus proche

Ce rapport de pertes vient de la matrice de capacités de ces deux formats, pas du fichier particulier que vous avez chargé. Un fichier précis peut perdre davantage s'il utilise des fonctionnalités que le format autorise mais que la matrice ne modélise pas.

Cette page réécrit un fichier SRT en script Advanced SubStation Alpha. Les deux formats ne définissent pas la même chose : le SRT est une liste de blocs avec deux codes temporels, l'ASS est un script avec un en-tête, une table de styles et des lignes Dialogue. Chaque bloc devient donc une ligne Dialogue rattachée à un style, et les durées sont réécrites en notation ASS : 0:00:01.00 au lieu de 00:00:01,000, car l'ASS compte les centièmes de seconde là où le SRT compte les millisecondes.

La mise en forme est traduite, pas recopiée. Une suite en italique devient un code de surcharge ASS activé au début de la suite et désactivé à la fin, et le gras suit la même règle. Un retour à la ligne dans un bloc devient le code de saut de ligne de l'ASS, donc deux lignes restent deux lignes dans un seul événement au lieu de devenir deux blocs voisins. Ce que le SRT ne sait pas dire — une police, une position, un contour — n'est pas inventé : le script produit contient un style utilisable, à retravailler dans n'importe quel éditeur ASS.

Un fichier ou une saison entière, sans fréquence d'images à calculer, car les deux formats stockent le temps horloge. Rien ne quitte votre ordinateur.

Exemples

Un fichier SRT typique, converti en ASS

Entrée

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

Sortie

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.

La précision est la seule perte annoncée : tout le reste se compare ligne par ligne.

La même conversion sur une entrée mal formée

Entrée

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

Sortie

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.

C'est le genre de dégâts que portent les vrais fichiers : fins de ligne mélangées, espaces parasites, champs vides. Comparez avec l'exemple propre ci-dessus pour voir ce que l'analyseur pardonne.

Questions fréquentes

Pourquoi les codes temporels changent-ils de forme d'un SRT vers un ASS ?

Parce que l'ASS stocke le temps au centième de seconde, alors que le SRT le stocke à la milliseconde : 00:00:01,250 devient 0:00:01.25. L'arrondi porte au maximum sur 5 ms, et la perte de précision est annoncée dans le rapport de pertes.

Pourquoi le script ASS contient-il une table de styles que je n'ai pas demandée ?

Parce qu'une ligne Dialogue doit pointer vers un style : l'ASS n'a pas de sous-titre sans style. Le convertisseur écrit un style Default, Arial taille 20, blanc avec un contour sombre, et chaque ligne s'y rattache ; modifier cette ligne suffit à changer tout le script.

Comment les balises d'italique et de gras du SRT arrivent-elles dans l'ASS ?

Sous forme de codes de surcharge : une suite en italique est encadrée par un code d'italique activé puis désactivé, et le gras reçoit le même traitement. Un éditeur ASS affiche alors du style, et non des balises restées dans le texte.

Un bloc SRT de deux lignes tient-il dans un seul événement ASS ?

Oui, grâce au code de saut de ligne de l'ASS : les deux lignes restent dans une seule ligne Dialogue. La seconde ligne conserve donc le minutage du bloc, au lieu de devenir un sous-titre séparé.

Le SRT peut-il transmettre une position d'écran au script ASS ?

Non. Le SRT ne place pas ses blocs de façon standard ; ses extensions X1, Y1, X2 et Y2 sont lues comme une perte, et la conversion n'invente pas de code de position. Le script reste lisible, mais la place à l'écran revient au lecteur ou à votre éditeur.

Que signifie la perte de précision annoncée pour SRT vers ASS ?

Chaque code temporel perd ses millièmes : 00:00:04,126 s'écrit 0:00:04.13, soit un déplacement maximal de 5 ms par borne. Rien n'est étiré ni réordonné, mais un alignement à l'image près peut se voir à la comparaison.

Le fichier est-il envoyé pour être converti en ASS ?

Non. L'analyse et l'écriture se font dans l'onglet du navigateur ; aucun octet du script ne part vers un serveur. La page continue de convertir une fois chargée, même réseau coupé.

Outils associés