Aller au contenu principal
SubtitleMatrix

Convertir SMI en ASS

Ou collez le texte d'un sous-titre

Ce que cette conversion change

2 éléments perdus 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

  • 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 fichier SAMI (`.smi`) en ASS (Advanced SubStation Alpha v4.00+). Le SAMI est un document HTML : chaque sous-titre y est un `<SYNC Start=…>` suivi d’un paragraphe `<P Class=…>`, et l’écran est effacé par un `<SYNC>` vide. L’ASS, lui, aligne des lignes `Dialogue:` dans une section `[Events]`.

Deux familles se perdent. D’abord la précision : ASS compte en centièmes, le SAMI en millisecondes. Ensuite les constructions propres à SAMI — le bloc `<STYLE>`, le `<TITLE>`, les attributs `Class=` et la logique de remplacement d’écran. Le rapport affiché en haut de page vient des capacités déclarées par chaque format, pas de votre fichier : il ne change donc pas selon ce que vous déposez, et il nomme chaque famille de données qui n’a pas de place dans la sortie.

Le fichier produit est un script ASS complet, avec `ScriptType: v4.00+` et une table `[V4+ Styles]`. Tout se passe dans le navigateur, sans envoi ni compte. Plusieurs fichiers peuvent être déposés ensemble : la file les traite l’un après l’autre, l’annulation est possible, et les résultats arrivent dans une archive ZIP.

Exemples

Un fichier SAMI courant converti en ASS

Entrée

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

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.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,How are you?\NFine, thanks.

Perdus dans cette sortie : la précision millimétrique et les constructions SAMI. Les dialogues sont alignés, l’écran n’est plus remplacé par un SYNC vide.

La même conversion sur une entrée abîmée

Entrée

<SAMI>
<HEAD>
<TITLE>Episode 1</TITLE>
<STYLE TYPE="text/css">
<!--
.ENCC { Name: English; }
-->
</STYLE>
</HEAD>
<BODY>
<sync start="00:00:02,500">
<P Class=ENCC>Line one<br>Line two
<sync start=9000>
<P Class=ENCC>Tom &amp; Jerry
<SYNC Start=12000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

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:02.50,0:00:09.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Tom &amp; Jerry

Entités non décodées, SYNC sans P et styles pointant vers une classe absente : les blocs lisibles sortent, le reste est compté et signalé.

Questions fréquentes

Pourquoi les horodatages changent-ils d’un SAMI vers un ASS ?

Le SAMI écrit `Start=4126`, en millisecondes, alors qu’ASS écrit `0:00:04.13`, en centièmes. Chaque début est arrondi aux 10 ms les plus proches, avec au plus 5 ms d’écart. Aucun bloc n’est étiré ni réordonné, mais l’alignement exact à la milliseconde n’est plus garanti.

À quoi ressemble la sortie quand un SAMI devient un ASS ?

À un script ASS : section `[Script Info]` avec `ScriptType: v4.00+`, section `[V4+ Styles]`, puis `[Events]` où chaque sous-titre est un `Dialogue:` avec sa colonne `Layer`. Un bloc SAMI donne un dialogue, dans l’ordre chronologique du document d’origine.

Comment un paragraphe SAMI sur deux lignes sort-il en ASS ?

Les deux lignes, séparées dans le SAMI par un `<br>`, sont jointes par `\N` dans le dialogue ASS. Le regroupement survit : elles restent un seul sous-titre, et le lecteur les affiche ensemble comme le faisait le lecteur SAMI.

Que deviennent le bloc STYLE et les attributs Class du SAMI dans l’ASS ?

Ils sont abandonnés. Le SAMI décrit son apparence dans un bloc `<STYLE TYPE="text/css">` et la choisit par `Class=` sur chaque `<P>` ; l’ASS décrit la sienne dans `[V4+ Styles]` et la choisit par `Style:`. Les deux modèles ne se correspondent pas, et la classe SAMI n’est donc pas recopiée comme nom de style ASS.

Les blocs SAMI conservent-ils leur ordre dans l’ASS produit ?

Oui, et ils sont triés par heure de début au passage. Dans un SAMI, l’ordre des `<SYNC>` est déjà l’ordre d’affichage, mais un fichier abîmé peut les chevaucher ; l’ASS les remet dans une chronologie stricte, sans changer le texte.

Le retour de l’ASS vers le SAMI est-il sans perte ?

Non : l’ASS vers SAMI perd le style, la position, le karaoké et toutes les constructions propres à ASS. La page de cette direction liste ces pertes séparément. Ici, dans le sens SAMI vers ASS, les pertes sont la précision et les constructions SAMI.

Outils associés