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 |
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 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)
{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
-
SRT contre VTT : quel format de sous-titres choisir ?
Les différences entre SubRip et WebVTT qui comptent vraiment, comment convertir l’un vers l’autre, et lequel choisir pour le web, pour la diffusion et pour la traduction.
-
Aide-mémoire des formats de placeholders : %s, %@, %{name}, {{name}}, {0}
Toutes les syntaxes de placeholder que vous rencontrerez, quel langage ou framework les utilise, et ce qui casse quand un traducteur en retape une à la main.
-
Subtitle file formats WebTranslateIt supports (documentation)
Documentation par format pour chaque format de sous-titres, avec les détails de parsing et le mapping des données.
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.