Convertir ASS en SRT
Ou collez le texte d'un sous-titre
Ce que cette conversion change
4 éléments perdus ou à décider
- Style
tout le style (gras, italique, couleur, contour, ombre)
- Positionnement
le positionnement à l'écran (chaque bloc revient à la position par défaut)
- Karaoké
le minutage karaoké (surlignage par syllabe)
- Contenu propre au format
le contenu que le format source garde hors de ses blocs (blocs hors sous-titres, texte d'en-tête, réglages par bloc, événements commentés) — le format cible n'a nulle part où le mettre
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 convertit un ASS en SRT. Le fichier produit contient les mêmes sous-titres que le script, mais seulement le texte et les temps : les lignes Dialogue deviennent des blocs numérotés, et les codes temporels au centième deviennent des codes à la milliseconde.
Le SRT est le format le plus pauvre de la liste, donc le rapport de pertes est long. Quatre familles disparaissent ensemble. Le style : chaque Dialogue est rattaché à un style nommé de la table, et cette table n'a pas d'équivalent SRT, même si le gras, l'italique et le soulignement écrits dans le texte passent en balises. Le positionnement : les codes de placement comme \pos(320,240), \move ou \an7 sont retirés, car le SRT ne place pas un bloc. Le karaoké : les codes \k, \kf et \ko n'ont aucune case dans un SRT. Et les constructions propres au script : l'en-tête [Script Info], la table [V4+ Styles], les événements Comment: et Picture:, ainsi que les sections [Fonts] et [Graphics] n'ont pas de place dans un fichier de blocs.
Le texte lui-même est intact : l'ordre des blocs est conservé et un Dialogue de deux lignes garde sa coupure. Un fichier ou une saison entière, traité dans le navigateur, avec un ZIP à la fin.
Exemples
Un fichier ASS typique, converti en SRT
Entrée
[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0
[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left
Sortie
1
00:00:01,000 --> 00:00:04,000
Hello there.
2
00:00:05,000 --> 00:00:08,500
<i>Italic</i> and <b>bold</b> text.
3
00:00:09,000 --> 00:00:12,000
Positioned
4
00:00:13,000 --> 00:00:16,000
<c>ka</c><c>ra</c><c>o</c><c>ke</c>
5
00:00:17,000 --> 00:00:20,000
Line one
Line two
6
00:00:21,000 --> 00:00:24,000
Top left
Les pertes annoncées sont le style, le positionnement, le karaoké et les constructions propres au script : le texte se compare ligne par ligne.
La même conversion sur une entrée mal formée
Entrée
[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecodeSortie
1
00:00:01,000 --> 00:00:04,000
Hello, world
2
00:00:05,000 --> 00:00:08,000
{\fad(300,300)}Unmodelled override
3
00:00:09,000 --> 00:00:12,000
Both, wrong order
4
00:00:13,000 --> 00:00:16,500
One decimal centisecond
5
00:00:17,000 --> 00:00:20,000
Soft
break
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 l'ASS perd-il quatre choses en passant au SRT ?
Parce que le SRT ne stocke que du texte et des temps. Le style, le positionnement, le karaoké et les constructions propres au script — [Script Info], [V4+ Styles], Comment:, [Fonts], [Graphics] — n'ont aucune case dans un bloc SRT et sont donc écartés.
Que deviennent \pos(320,240) et \an7 dans un SRT ?
Ils sont retirés : le SRT ne place pas un bloc à l'écran, et réinterpréter un code ASS en attribut SRT produirait un résultat faux. Le texte reste au même instant, mais à la position que le lecteur choisit.
Le gras et l'italique d'un ASS deviennent-ils du style SRT ?
Ils deviennent des balises dans le texte du bloc, car le SRT conserve le balisage en ligne. La table de styles, elle, ne passe pas : la police, la taille, les couleurs de premier plan et de contour, l'ombre et les marges restent dans le script.
Les lignes Comment: d'un ASS deviennent-elles des sous-titres SRT ?
Non : seul un événement Dialogue produit un bloc. Une ligne Comment: est une note pour l'auteur, pas un sous-titre, et le SRT n'a pas de type d'événement pour la distinguer.
L'en-tête [Script Info] et les sections [Fonts] et [Graphics] survivent-ils ?
Non : le SRT n'a ni en-tête, ni style global, ni ressource embarquée. Ces blocs sont perdus au même titre que la table de styles, et le rapport de pertes les compte dans la famille des constructions propres au script.
Comment un Dialogue ASS de deux lignes sort-il en SRT ?
Sur deux lignes dans le même bloc, car le code de saut de ligne du script est traduit en saut de ligne dur. La paire garde un seul début et une seule fin, et reste donc un seul sous-titre.
Les temps au centième de l'ASS sont-ils exacts dans le SRT ?
Ils sont convertis sans perte : 0:00:04.13 devient 00:00:04,130, et chaque borne gagne les millisecondes que le centième ne nommait pas. L'instant est préservé, la résolution augmente.