Aller au contenu principal
SubtitleMatrix

Format de sous-titres SMI

Ce que ce format peut exprimer

Style du texte
Gras et italique
Positionnement à l'écran
Oui
Minutage karaoké
Non
Sauts de ligne dans un bloc
Oui
Chronologie
Heure de début et de fin pour chaque bloc
Résolution du minutage
1 ms
Minutage stocké en numéros d'image
Non
Texte de droite à gauche
Oui

Exemples

Un fichier SAMI courant et ce qu’on y lit

Fichier

<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>

Ce qu'il contient

2 cues, 3 lines of text

  Start=1000  =  00:00:01.000 → 00:00:03.000
    Hello there.
    [Class=ENCC]
  Start=3500  =  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [Class=ENCC]

Outside the cues:
  head       a <STYLE> block with CSS for the paragraphs, kept as it came in
  cue ends   the next <SYNC> tag — a SAMI file writes no end time of its own
  clearing   a <P>&nbsp; block blanks the screen; the two here are kept as clearing blocks, not turned into cues

La colonne de droite n’est pas un fichier converti : c’est ce que ce site lit dans la colonne de gauche, point de départ de toute conversion.

Un fichier SAMI abîmé et ce qu’on en lit encore

Fichier

<SAMI>
<BODY>
<SYNC Start=abc>
<P Class=ENCC>this block's start cannot be read
<SYNC Start=2000>
<SYNC Start=4000>
<P>no attributes here<br>second line
<SYNC Start="6000">
some loose text before any P
</BODY>
</SAMI>

Ce qu'il contient

3 cues, 3 lines of text

  Start=2000  =  00:00:02.000 → 00:00:04.000
    (no text)
  Start=4000  =  00:00:04.000 → 00:00:06.000
    no attributes here
    second line
  Start=6000  =  00:00:06.000 → 00:00:08.000
    some loose text before any P

Outside the cues:
  head       no <STYLE> block and no <TITLE> — just the <SAMI> and <BODY> tags
  cue ends   the next <SYNC> tag; the last cue has none after it, so its end time was given a default
  loose text text between two <SYNC> tags that belongs to no <P> is kept and attached to the cue open at that point

Reported while reading — repaired or skipped, never silently:
  1 × SYNC blocks whose start time could not be read (they were skipped)
  1 × the last cue has no following timestamp, so its end time was generated

SYNC orphelins, entités non décodées, classes sans règle CSS : rien ne lève d’exception, ce qui n’est pas compris est signalé.

Convertir SAMI (SMI) vers un autre format

Chacune de ces pages tourne entièrement dans votre navigateur. Les étiquettes indiquent ce que coûte cette direction avant de l'ouvrir.

Convertir vers ce format

SAMI, le format `.smi`, est l’un des formats de sous-titres traités par ce site. Cette page en est la référence : ce qu’il stocke, ce qu’il ne peut pas exprimer, et une page dédiée pour chaque format vers lequel le convertir.

La table affichée plus haut est la source de vérité. Là où une ligne indique non, c’est exactement ce qui disparaît en convertissant vers SAMI, et chaque page de conversion liée plus bas nomme cette perte avant même que vous ouvriez un fichier.

Toutes ces conversions tournent dans le navigateur. Aucun fichier n’est envoyé, aucune inscription n’est demandée : c’est ce qui compte pour un document confidentiel, un dossier médical ou une vidéo sous embargo.

Questions fréquentes

Qu’est-ce qu’un fichier SMI ?

`.smi` est l’extension de SAMI (Synchronized Accessible Media Interchange), un format de sous-titres de Microsoft construit comme une page HTML. Le document contient un `<HEAD>`, souvent un bloc `<STYLE TYPE="text/css">`, puis un `<BODY>` où chaque sous-titre est un `<SYNC Start=…>` suivi d’un paragraphe `<P Class=…>`.

Comment un fichier SAMI indique-t-il le début et la fin d’un sous-titre ?

Seul le début est écrit, dans `Start=4126` sur la balise `<SYNC>`. La fin n’existe pas comme valeur : elle est donnée par le `<SYNC>` suivant, qui remplace le contenu affiché. Un `<SYNC>` suivi d’un `<P>&nbsp;` efface donc l’écran, et le dernier bloc n’a de fin que celle que le convertisseur doit fabriquer.

À quoi servent les balises P et Class dans un SAMI ?

`<P>` porte une ligne ou un groupe de lignes affiché à partir du SYNC courant ; `Class=` y attache une classe CSS définie dans le bloc `<STYLE>`. C’est ainsi que SAMI décrit police, couleur et position, sans attribut de style sur chaque paragraphe : le document ressemble à une page web, et c’est exactement ce qu’il est.

Vers quels formats convertir un SAMI sans rien perdre ?

TTML et JSON : ce sont les deux seules directions où ce que SAMI sait exprimer trouve un équivalent complet. Vers SRT, VTT, SBV ou CSV, la position ou le style sont abandonnés ; vers ASS, SSA ou LRC, c’est la précision du temps en plus. Chaque page de conversion nomme sa liste exacte.

Peut-on ouvrir un fichier SAMI dans un navigateur ou un éditeur ?

Oui, dans les deux cas, puisqu’un `.smi` est du HTML. Le navigateur peut l’afficher comme une page, mais n’en fera pas un lecteur de sous-titres synchronisé ; l’éditeur de texte montre la structure brute. Attention aux entités comme `&nbsp;`, qui restent littérales dans le fichier et ne sont décodées qu’au rendu.

Que se passe-t-il si un bloc SAMI n’a pas de SYNC lisible ?

Il est ignoré et compté. Un SAMI n’a pas de ligne de timecode autonome : le début vit dans l’attribut `Start`, et un paragraphe sans SYNC au-dessus de lui ne peut pas être placé dans le temps. La conversion préfère l’écarter et le signaler plutôt que de lui inventer une position.