Formats de fichiers de sous-titres comparés : SRT, VTT, TTML, ASS, SAMI et plus

Huit formats de sous-titres côte à côte — à quoi ressemble chacun, ce qu’il peut exprimer, où il est utilisé, et lequel choisir pour le web, la diffusion, l’anime ou l’archivage.

Huit formats sont d’usage courant, ils se recoupent largement, et les différences entre eux portent presque entièrement sur la quantité de présentation que le fichier est autorisé à transporter. À une extrémité, SRT ne contient que du texte et des timings, rien d’autre. À l’autre, ASS spécifie polices, couleurs, rotation et animation, et TTML spécifie un modèle complet de style et de mise en page en XML.

Voici ces formats côte à côte, suivis de ce à quoi ressemble chacun et de quand le choisir.

La comparaison

Format Extension Origine Style Positionnement Multi-langue Usage typique
SubRip .srt SubRip (de facto) aucun aucun un fichier par langue interchange universel, plateformes vidéo
YouTube .sbv Google aucun aucun un fichier par langue envoi de sous-titres YouTube
WebVTT .vtt W3C CSS via ::cue réglages de cue, régions un fichier par langue <track> HTML5, vidéo web
SAMI .smi, .sami Microsoft classes CSS limité oui, dans un seul fichier Windows Media legacy, archives
ASS / SSA .ass, .ssa SubStation Alpha étendu : polices, couleurs, effets complet, par événement un fichier par langue fansubs d’anime, karaoké, typesettage
TTML / DFXP .ttml, .dfxp W3C modèle de style XML complet régions et mise en page oui, dans un seul fichier diffusion, livraison streaming
MicroDVD .sub lecteur MicroDVD codes de contrôle en ligne limité un fichier par langue legacy, sources basées sur les frames
SubViewer .sub SubViewer minimal aucun un fichier par langue legacy

Deux colonnes valent qu’on s’y arrête.

Multi-langue dans un seul fichier. SAMI et TTML peuvent porter plusieurs langues dans un seul document ; les autres non. Cela semble pratique et c’est généralement un piège pour un workflow de traduction — cela transforme le fichier en conflit de fusion en puissance, et couple la sortie de chaque langue à celle de toutes les autres. Un fichier par langue et par format est l’arrangement qui survit au contact d’une équipe.

Basé sur les frames contre basé sur le temps. MicroDVD adresse les cues par numéro de frame, pas par horodatage. Changez la fréquence d’images de la vidéo et chaque cue se déplace. Tous les autres formats de cette liste sont basés sur le temps et immunisés contre ce problème.

À quoi ressemble chacun

SubRip (.srt)

1
00:00:00,580 --> 00:00:04,270
In the last video, we showed
that if you had a line, which

Numéro de séquence, code temporel avec une virgule avant les millisecondes, texte, ligne vide. Aucune spécification, aucun style, aucune déclaration d’encodage — et un support quasi total par les lecteurs. Traité en détail dans SRT contre VTT.

YouTube (.sbv)

0:00:06.373,0:00:10.373
hundreds of millions of users of social networks around the World

0:00:10.681,0:00:14.681
have completely changed how to communicate online and build your brand

Du SRT avec les numéros de séquence retirés et les codes temporels joints par une virgule. Le format d’envoi de sous-titres de Google ; quasiment jamais vu hors de ce contexte.

WebVTT (.vtt)

WEBVTT

NOTE Keep this under two lines for the mobile player

intro
00:00:00.000 --> 00:00:04.000 position:50% align:center
Welcome to this video tutorial

Le format natif du web : en-tête obligatoire, point avant les millisecondes, réglages de cue pour le positionnement, blocs STYLE portant du CSS, blocs REGION pour les sous-titres à défilement, et blocs NOTE pour les commentaires. L’UTF-8 est requis, ce qui élimine discrètement les problèmes de devinette d’encodage qui gangrènent le SRT.

SAMI (.smi, .sami)

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { font-family: Arial; font-size: 14pt; color: white; }
.ENUSCC { name: English; lang: en-US; }
.FRFRCC { name: French; lang: fr-FR; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=0>
<P Class=ENUSCC>Welcome to the presentation
<P Class=FRFRCC>Bienvenue à la présentation
</BODY>

Le format de Microsoft, de type HTML. Chaque bloc SYNC est une heure de début en millisecondes, et des classes CSS étiquettent chaque paragraphe avec une langue — si bien qu’un seul fichier porte toutes les langues à la fois. Largement legacy aujourd’hui, mais courant dans les archives et les anciennes bibliothèques vidéo d’entreprise, et la mise en page multi-langue fait qu’un fichier SAMI est souvent la seule copie d’une traduction qui existe encore.

ASS / SSA (.ass, .ssa)

[Script Info]
Title: Example Subtitles
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, ...
Style: Default,Arial,48,&H00FFFFFF,&H000000FF,...

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:05.00,Default,,0,0,0,,Welcome to this video presentation
Dialogue: 0,0:00:05.00,0:00:10.00,Default,,0,0,0,,Today we'll learn about subtitles

Une structure de type INI en trois sections : métadonnées, styles nommés, et événements Dialogue datés référençant ces styles. Le champ de texte peut porter des balises de surcharge{\b1}bold{\b0}, {\c&HFF0000&} pour la couleur, {\pos(320,240)} pour la position absolue, plus des transformations et des animations.

C’est le format de choix là où le typesettage compte : fansubbing d’anime, karaoké, et tout cas où un panneau dans la vidéo a besoin d’une surimpression traduite qui suit sa perspective. C’est aussi le format où la traduction est la plus fragile, parce que ces balises de surcharge vivent en ligne avec les mots et doivent passer intactes.

TTML / DFXP (.ttml, .dfxp)

xml
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml"
    xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xml:lang="en">
  <head>
    <styling>
      <style xml:id="defaultStyle" tts:fontFamily="Arial"
             tts:textAlign="center" tts:color="white"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div region="bottom">
      <p begin="00:00:01.000" end="00:00:05.000" style="defaultStyle">
        Welcome to this video presentation
      </p>
    </div>
  </body>
</tt>

La norme W3C, et celle contre laquelle sont écrites les spécifications de livraison de la diffusion et du streaming. Séparation complète du style, de la mise en page et du contenu ; xml:lang sur n’importe quel élément ; régions ; et timing exprimé soit en begin/end, soit en begin/dur. DFXP est l’ancien nom du profil de distribution ; IMSC, le profil que la plupart des grandes plateformes exigent réellement, est un TTML contraint.

Verbeux à lire comme à écrire, et la bonne réponse quand la spécification de livraison l’exige.

MicroDVD (.sub)

sub
{1}{1}29.970
{653}{716}PLANNING: Tailor Project
{716}{812}BASED ON A STORY BY:|Yoshioka Hitoshi

Numéros de frame entre accolades, puis texte, avec | marquant un retour à la ligne. La première ligne déclare généralement la fréquence d’images. Le timing adressé par frame le rend fragile — le fichier n’est correct que pour la vidéo exacte contre laquelle il a été écrit.

SubViewer (.sub)

00:01:31.00,00:01:33.00
String1

00:01:34.32,00:01:36.72
String2

Heures de début et de fin en centisecondes, puis texte. Simple, legacy, et partageant l’extension .sub avec MicroDVD sans lien avec lui — mieux vaut sentir le contenu que faire confiance à l’extension.

Choisir un format

Si vous… Utilisez
Jouez une vidéo dans un navigateur WebVTT — le seul format que <track> accepte
Envoyez sur YouTube, Vimeo ou une plateforme sociale SRT (ou SBV pour l’outillage propre à YouTube)
Livrez à la diffusion ou à une plateforme de streaming TTML / IMSC, selon leur spécification de livraison
Faites du typesettage de panneaux, du karaoké, ou quoi que ce soit de visuellement élaboré ASS
Échangez entre outils, ou n’êtes pas sûr SRT — il se convertit proprement vers tout le reste
Lisez une vieille archive ce que c’est déjà ; convertissez en SRT ou VTT et gardez l’original

Le principe général : écrivez dans le format le plus riche dont votre pipeline a réellement besoin, et générez les plus simples à partir de lui. Descendre d’ASS ou de TTML vers du SRT fait perdre de l’information mais est mécanique ; faire l’inverse signifie refaire le travail à la main.

Traduire des sous-titres

Quel que soit le format, les trois mêmes contraintes s’appliquent, et aucune d’elles ne concerne le fichier.

La fenêtre de temps est fixe. Une cue traduite doit être lisible dans les secondes qu’occupe l’original. L’allemand et le finnois sont généralement 20 à 30 % plus longs que l’anglais, si bien que le travail du traducteur est autant de la compression que de la traduction — et il doit en être informé avant de commencer, pas en relecture.

La vitesse de lecture plafonne la longueur. Environ 15 à 20 caractères par seconde pour un spectateur adulte. Une cue de deux secondes tient environ 35 caractères, quoi qu’il faille dire. Fixer une limite de caractères explicite par segment transforme cela d’un débat de relecture en une contrainte que l’éditeur fait respecter pendant que le traducteur tape.

Le balisage doit survivre. Les balises de surcharge ASS, les réglages de cue VTT, les références de style TTML et les attributs de classe SAMI sont tous de la structure, pas du contenu. Un outil qui remet au traducteur la ligne brute en espérant que tout se passe bien finira, tôt ou tard, par produire un fichier qui ne parse plus.

WebTranslateIt lit et écrit les huit formats ci-dessus. Dans chaque cas, le timing, le style et les métadonnées structurelles font l’aller-retour intacts, tandis que seul le texte des sous-titres est exposé comme segments traduisibles — les blocs NOTE de VTT arrivent comme des commentaires de développeur, les noms de style et les données de layer/effect d’ASS sont préservés à côté du segment, et les balises de surcharge en ligne restent dans le texte pour un aller-retour exact. Une fois le texte segmenté, la mémoire de traduction, la traduction automatique et les opérations en lot s’appliquent de la même façon qu’à n’importe quel autre fichier de langue.

Frequently asked questions

Quel est le format de sous-titres le plus largement supporté ?
SubRip (.srt). Il n’a aucune spécification formelle, ce qui explique précisément pourquoi il est universel — le format est assez simple pour que chaque lecteur l’ait implémenté, et assez simple pour qu’aucun lecteur ne soit en désaccord sur ce qu’il signifie.
Quel format de sous-titres les services de streaming utilisent-ils ?
TTML et son profil DFXP. C’est une norme XML du W3C qui porte le style, la mise en page, les métadonnées de timing et plusieurs langues dans un seul document, ce qu’exigent les spécifications de livraison de la diffusion et du streaming. IMSC, le profil de sous-titrage utilisé par la plupart des grandes plateformes, est un TTML contraint.
Quelle est la différence entre ASS et SSA ?
ASS (Advanced SubStation Alpha) est le successeur de SSA (SubStation Alpha), qui ajoute un style, des transformations et des effets plus riches. Les deux utilisent la même structure sectionnée de type INI, si bien que les outils les gèrent généralement ensemble. ASS est celui qui reste en usage actif, surtout dans le fansubbing d’anime et partout où le typesettage compte.
Quel format de sous-titres est le plus facile à traduire ?
SRT et SBV, parce que le texte est posé sur ses propres lignes sans rien autour. ASS est le plus difficile, parce que les lignes de dialogue portent des balises de surcharge en ligne qui doivent survivre intactes à la traduction. Dans tous les formats, la vraie exigence est un outil qui n’expose que le texte et fait l’aller-retour du timing et du style sans y toucher.

Keep reading

Translate your app without the spreadsheet round-trip

WebTranslateIt reads the file formats and placeholder syntax described on this page, validates them as translators work, and syncs the results straight back into your repository.