Timed Text Markup Language

OuvrirEnregistrerXMLStylé

Le XML du W3C pour les sous-titres et les légendes, celui que demandent les diffuseurs et les services de streaming. DFXP était le nom de son premier profil, et beaucoup de fichiers le portent encore. IMSC, EBU-TT-D et l'iTT d'Apple sont aussi du TTML, chacun avec ses habitudes.

En bref

Extension.ttml
Type de médiaapplication/ttml+xml
SpécificationW3C, Timed Text Markup Language 1 (TTML1), une Recommandation. TTML2 l'étend ; IMSC et EBU-TT-D en sont des sous-ensembles pour la diffusion.
Précision temporelleAu choix : fractions de seconde, images ou ticks
Encodage du texteDéclaré dans le XML. Presque toujours UTF-8.
Mise en formeStyles nommés et attributs tts: : police, taille, couleur, arrière-plan, italique, gras, souligné, barré, contour
PositionnementRégions : des boîtes placées et dimensionnées où l'on veut sur l'image
IntervenantsAgents (ttm:agent), nommés dans l'en-tête
Dans les conteneursMP4 en stpp (ISO/IEC 14496-30), dans les flux DASH, CMAF et HLS

Anatomie d'un fichier

Un document XML : un en-tête qui nomme les styles et les régions, et un corps de paragraphes, un par sous-titre.

<tt xml:lang="en" …>
<head>styles, regions</head>
<body><div>
<p begin="00:00:23.000"
   end="00:00:24.500">
You're a jerk,<br/>Thom.</p>
</div></body>
</tt>
  1. 1 · Racine

    <tt>, avec les espaces de noms de TTML, la langue, et l'horloge sur laquelle se comptent les temps : ttp:frameRate, ttp:tickRate.

  2. 2 · En-tête

    Des styles nommés, les régions de l'écran, et qui parle.

  3. 3 · Temps

    Le begin de chaque paragraphe, et son end ou son dur.

  4. 4 · Texte

    Le sous-titre. Les spans mettent en forme une partie du texte, et <br/> coupe la ligne.

Les temps

TTML écrit un temps de plus de manières que tout autre format de sous-titres :

Écrit Ce que c'est
00:00:23.500 Heures, minutes, secondes et une fraction
00:00:23:12 Images après les secondes : douze, selon le ttp:frameRate du fichier
23.5s, 23500ms, 1h Un décalage en heures, minutes, secondes ou millisecondes
564f Images
235000000t Ticks, ttp:tickRate par seconde

Les temps se comptent depuis ce qui les contient. Le begin d'un paragraphe se compte depuis le début de sa <div> et de son <body>, et un paragraphe sans end propre se termine avec eux.

Styles

Un style est un ensemble d'attributs tts:. Le texte les prend dans l'ordre : depuis sa région, puis depuis le body, la div, le paragraphe et le span qui l'entourent. Chaque élément prend les styles qu'il nomme (style="s1 s2", et ceux que ceux-ci nomment), puis ses propres attributs.

Attribut Effet Dans Subtitld
tts:fontStyle="italic" Italique Conservé
tts:fontWeight="bold" Gras Conservé
tts:textDecoration="underline", "lineThrough" Souligné, barré Conservés
tts:color Couleur du texte : un nom, #rrggbb, #rrggbbaa ou rgb() Conservée, sans sa transparence
tts:displayAlign, tts:textAlign Où le texte se place dans sa région Conservés, comme l'un des neuf emplacements
tts:fontFamily, tts:fontSize Police et taille Non conservées
tts:backgroundColor, tts:textOutline Une boîte derrière le texte, un contour Non conservés
<set> Un style qui change dans le temps Non conservé

Régions

Une région est une boîte sur l'image, placée par tts:origin et dimensionnée par tts:extent. À l'intérieur, tts:displayAlign place le texte en haut, au milieu ou en bas (before, center, after), et tts:textAlign sur un côté ou au centre.

<region xml:id="top"
        tts:origin="10% 10%"
        tts:extent="80% 80%"
        tts:displayAlign="before"/>

Subtitld détermine où atterrit le texte, que la région soit mesurée en pourcentages, en pixels ou en cellules, et retient le plus proche des neuf emplacements que {\an1} à {\an9} de SubRip désignent. Quand il écrit un fichier, chaque emplacement utilisé devient une région de ce nom : bottom, top, top-left…

Quand le fichier ne le précise pas. Les valeurs par défaut de TTML placent le texte en haut à gauche de sa région, mais les lecteurs l'affichent en bas et centré, et Subtitld fait de même. Il lit aussi textAlign="start" dans une région sans taille ni place comme centré : les fichiers écrits avec pycaption, ceux de l'ancien Subtitld compris, le mettent sur chaque région.

Profils

La plupart des TTML sont écrits selon un profil : un sous-ensemble du langage, avec ses propres règles. Subtitld lit chacun d'eux comme du TTML.

Profil Où il est utilisé Ses habitudes
DFXP Premier profil de TTML, et l'extension .dfxp Anciens fichiers dans l'espace de noms http://www.w3.org/2006/10/ttaf1
IMSC 1 Streaming en DASH, CMAF et HLS Le profil du W3C pour les sous-titres et légendes en ligne
EBU‑TT‑D Lecteurs en ligne des diffuseurs européens Éléments souvent écrits avec un préfixe : <tt:p>
SMPTE‑TT Légendes en ligne de la télévision américaine Ajouts de la SMPTE, pour les légendes reprises de la diffusion
iTT (.itt) Livraisons à l'iTunes Store d'Apple et à Apple TV Temps en images (ttp:timeBase="smpte")

Le TTML dans Subtitld

Conservé dans le .ttml
  • Le texte et les retours à la ligne de chaque sous-titre
  • Italique, gras, souligné, barré et couleur
  • L'endroit où il se place à l'écran
  • Les intervenants, sous forme d'agents
  • Début et fin, à la milliseconde, dans l'ordre
Nulle part où aller
  • Polices, tailles, arrière-plans et contours ligne par ligne
  • La taille et la place exactes d'une région
  • Styles qui changent dans le temps, ruby, sous-titres en image
  • Traductions à côté de l'original, doublages, visages des intervenants

Enregistrez un projet .usfx pour conserver ce qui est propre à Subtitld.

Ouvrir un fichier TTML

Subtitld ouvre .ttml, .dfxp, .itt et .xml, et :

  • lit le TTML quelle que soit son écriture : dans son espace de noms, dans l'ancien espace DFXP, ou avec tt: devant chaque élément ;
  • lit toutes les formes de temps, chacune comptée depuis la div et le body qui la contiennent ;
  • suit les styles comme TTML les applique, en gardant l'italique, le gras, le souligné, le barré et toute couleur autre que le blanc ;
  • place chaque sous-titre là où sa région l'affiche ;
  • prend les agents comme intervenants, prêts pour le doublage, et le xml:lang du fichier comme langue du projet ;
  • lit l'encodage déclaré par le fichier, ainsi que les entités HTML telles que &nbsp;.

Un fichier qui n'est pas du XML bien formé s'ouvre avec un message indiquant la ligne et la colonne. Un fichier qui n'est pas du tout du TTML le signale.

Exporter en TTML

Boîte de dialogue d'export de Subtitld avec TTML choisi et les intervenants écrits comme agents

Exporter, puis Sous-titres et TTML ou DFXP, propose :

  • TexteL'original, une traduction, ou les deux, la traduction en dessous.
  • Noms des intervenantsOmis, placés avant le texte (Thom : …), ou sous forme d'agents (ttm:agent), la façon propre à TTML.
  • Mise en formeConservée, ou supprimée.
  • Décalage des tempsChaque sous-titre plus tôt ou plus tard, du même écart.
  • ApparenceBlanc avec contour noir, ou tel que l'aperçu de Subtitld le dessine : sa police, sa couleur et sa boîte translucide.

Le fichier est du TTML 1 en UTF-8. Les temps s'écrivent 00:00:23.000, chaque emplacement des sous-titres devient une région, la mise en forme passe par des spans et les retours à la ligne par <br/>. Son xml:lang est la langue du texte qu'il contient. TTML et DFXP donnent le même fichier ; seule l'extension diffère.

TTML ou WebVTT ?

WebVTT pour un <track> sur une page web : les navigateurs le lisent seuls. TTML pour les diffuseurs, pour les services de streaming qui le demandent, et pour les lecteurs qui le lisent, comme dash.js et Shaka Player. La page WebVTT en dit davantage.

Anecdotes

2010

TTML 1.0 est devenu une Recommandation du W3C en novembre 2010, après des brouillons désignés par son premier profil : le Distribution Format Exchange Profile, DFXP.

ttaf1

L'ancien espace de noms, http://www.w3.org/2006/10/ttaf1, date des brouillons de 2006, quand TTML était le Timed Text Authoring Format. Beaucoup de fichiers le portent encore.

Emmy

En 2016, le W3C a reçu un Technology & Engineering Emmy pour TTML, aux côtés de HBO, Netflix, Telestream et SMPTE.

Formats associés

Un fichier .ttml à corriger ?

Ouvrez-le dans Subtitld avec la vidéo et recalez-le sur la forme d'onde.

Télécharger Subtitld