Format de sous-titres TTML
Ce que ce format peut exprimer
- Style du texte
- Polices, couleur, contour, ombre
- 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 TTML typique, et ce qu’on y lit
Fichier
<?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="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Ce qu'il contient
2 cues, 3 lines of text
00:00:01.000 → 00:00:03.500
Hello there. [italic ×1]
[region="bottom" style="s1"]
00:00:03.500 → 00:00:06.000
How are you?
Fine, thanks.
[region="bottom"]
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
styling 1 × <style> — "s1", the colour and weight a paragraph points at by name
layout 1 × <region> — "bottom", the origin and extent a paragraph points at by name
resolved the head is kept as it was written and is not applied here — a paragraph's style="s1" region="bottom" stays an attribute, not a colour or a screen positionLa colonne de droite n’est pas un fichier converti : c’est la lecture faite par ce site, avec les deux paragraphes, l’italique en ligne et les définitions de style et de région.
Un fichier TTML abîmé, et ce qu’on en lit encore
Fichier
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<div begin="00:00:01.000" end="00:00:05.000">
<p>Inherits its timing from the div, which we do not resolve.</p>
<p begin="00:00:06.000" end="00:00:07.000">This one has its own timing.</p>
</div>
<!-- <p begin="00:00:08.000" end="00:00:09.000">commented out</p> -->
<div>
<p begin="00:00:10.000"/>
<p begin="00:00:11.000" end="00:00:12.000">Last one.</p>
</div>
</body>
</tt>
Ce qu'il contient
3 cues, 2 lines of text
00:00:06.000 → 00:00:07.000
This one has its own timing.
00:00:10.000 → 00:00:12.000
(no text)
00:00:11.000 → 00:00:12.000
Last one.
Outside the cues:
prolog an XML declaration and the namespace bindings, kept as they came in
head none — no <styling> and no <layout>, and no paragraph points at one either
comments the commented-out <p> stays a comment, in the place it was written
divs the timings on an enclosing <div> are not pushed down onto the paragraphs inside it
Reported while reading — repaired or skipped, never silently:
1 × paragraphs with no readable begin time of their own (they were skipped — see the note about timing inherited from an enclosing div)
1 × paragraphs with neither an end time nor a duration of their own (their end times were generated)Les offsets, durées, images et entités sont acceptés ; les paragraphes sans fin reçoivent une durée et rien ne lève d’erreur.
Convertir TTML (Timed Text) 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.
- Précision
- Contenu propre au format
- Style
- Positionnement
- Contenu propre au format
- Contenu propre au format
- Minutage
- Style
- Positionnement
- Précision
- Contenu propre au format
- Style
- Positionnement
- Fréquence d'images
- Contenu propre au format
- Style
- Positionnement
- Contenu propre au format
- Style
- Contenu propre au format
- Style
- Positionnement
- Contenu propre au format
- Précision
- Contenu propre au format
- Minutage
- Style
- Positionnement
- Sauts de ligne
- Contenu propre au format
- Style
- Positionnement
- Contenu propre au format
Convertir vers ce format
- SubRip (SRT) → TTML (Timed Text)
- WebVTT (VTT) → TTML (Timed Text)
- Advanced SubStation Alpha (ASS) → TTML (Timed Text)
- SubStation Alpha (SSA) → TTML (Timed Text)
- YouTube SBV → TTML (Timed Text)
- SAMI (SMI) → TTML (Timed Text)
- LRC Lyrics → TTML (Timed Text)
- MicroDVD → TTML (Timed Text)
- SubtitleMatrix JSON → TTML (Timed Text)
- Plain Text (TXT) → TTML (Timed Text)
- CSV Spreadsheet → TTML (Timed Text)
Le TTML, pour Timed Text Markup Language, est un format XML normalisé par le W3C pour le sous-titrage et le texte horodaté. Ses unités de base sont des paragraphes <p> avec begin et end, regroupés dans un <body> et éventuellement dans des <div>. Le document peut aussi porter un prologue, un <head> et des métadonnées.
Le format est plus riche que la plupart des formats de sous-titres : il sait décrire des styles nommés dans <styling>, des régions d’affichage dans <layout>, des spans en ligne et quatre écritures de temps, horloge, offset, numéro d’image et décalage en images. Les deux dernières dépendent de ttp:frameRate, et ttp:frameRateMultiplier permet d’exprimer 29,97.
Le tableau ci-dessus liste ce que le format sait stocker et ce qu’il ignore. Toutes les conversions ci-dessous se font dans le navigateur, sans envoi de fichier ni compte : un document de diffusion ou un projet sous embargo n’a pas à quitter votre ordinateur.
Questions fréquentes
Qu’est-ce que le TTML ?
Un format XML du W3C pour le texte horodaté, utilisé dans la diffusion, le streaming et l’accessibilité. Il décrit le contenu par paragraphes datés et peut porter des styles, des régions et des métadonnées de document, ce qui le distingue d’un simple format de sous-titres à blocs.
TTML stocke-t-il des styles et des positions ?
Oui. Les styles nommés vivent dans <styling>, les zones d’affichage dans <layout> avec tts:origin et tts:extent, et les mises en forme ponctuelles dans des <span> avec tts:fontStyle, tts:color ou tts:textDecoration. C’est l’un des formats les plus expressifs pris en charge par ce site.
Chaque paragraphe a-t-il un début et une fin ?
En général, begin et end sont présents, mais le TTML autorise aussi un paragraphe ouvert ou une durée exprimée par dur. Ce site complète un paragraphe sans fin avec 2 000 ms pour produire des formats qui exigent deux bornes, et signale cette valeur dans le rapport de pertes.
Pourquoi ttp:frameRate est-il parfois nécessaire ?
Parce que le TTML peut exprimer un temps en images, par exemple 00:00:07:12 ou 36f. Sans fréquence déclarée, ces valeurs ne peuvent pas être converties en heures. ttp:frameRateMultiplier complète le dispositif pour les fréquences non entières comme 30000 1001, soit 29,97.
Que garde un fichier TTML en dehors des paragraphes ?
Le prologue XML, le <head>, les métadonnées, les définitions de <styling> et de <layout>, les commentaires et les éléments inconnus. Ce site les préserve lors d’un aller-retour TTML vers TTML, mais les abandonne quand la cible ne peut pas les représenter.
Vers quels formats convertir un fichier TTML ?
Vers les onze autres formats pris en charge : SRT, VTT, ASS, SSA, SBV, SMI, MicroDVD, LRC, JSON, CSV et TXT. Les pertes dépendent de la cible : l’ASS garde les mises en forme en ligne mais pas les styles nommés, le LRC perd tout le style et les fins, et le TXT ne garde que les mots.