Les sous-titres XML expliqués : TTML, DFXP et IMSC
Les fichiers TTML, DFXP et IMSC, le fonctionnement de leur minutage, et ce que le convertisseur de ce site en lit ou en laisse de côté.
Par Syed Peera Saheb · Publié
La réponse courte
TTML, DFXP et IMSC sont des fichiers de sous-titres XML fondés sur le Timed Text Markup Language du W3C. DFXP est un ancien nom du TTML, et IMSC en est un profil utilisé pour la livraison en streaming et en télédiffusion.
Si vous avez un fichier de sous-titres .ttml, .dfxp ou .xml et qu’il vous faut du SRT ou du VTT, le convertisseur de ce site sait lire son texte, son minutage, ses retours à la ligne ainsi que l’italique, le gras et le soulignement. Il ne conserve pas les positions, les couleurs ni les polices, et il ne lit pas tous les fichiers XML contenant des sous-titres.
Une famille, plusieurs noms
Le TTML est une norme du W3C pour le texte minuté. Pendant sa rédaction, il s’appelait DFXP, pour Distribution Format Exchange Profile, et la spécification TTML 1 note toujours que l’ancien nom survit dans des noms de profils et des extensions de fichiers. En pratique, un fichier .dfxp et un fichier .ttml contiennent le même type de document. TTML2 est la deuxième version et ajoute davantage de fonctions.
Comme le TTML est volumineux, les secteurs professionnels définissent des profils : des sous-ensembles qui précisent les fonctions qu’un fichier peut utiliser. IMSC, le profil Internet Media Subtitles and Captions, est l’un des plus courants. Ses versions actuelles définissent un profil texte uniquement et un profil image uniquement. EBU-TT est un profil utilisé par les diffuseurs européens, et SMPTE-TT est utilisé par la télévision américaine. Tous commencent par un élément racine <tt>.
À quoi ressemble un fichier TTML
Un document TTML comporte un en-tête (head) et un corps (body). L’en-tête peut définir des styles, comme une police ou une couleur, et des régions, c’est-à-dire des zones de l’écran. Le corps contient des paragraphes, des éléments <p>, chacun avec un temps de début et de fin et le texte du sous-titre. Un <br/> commence une nouvelle ligne, et les éléments <span> mettent en forme ou minutent des parties d’une ligne.
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xmlns:ttp="http://www.w3.org/ns/ttml#parameter" ttp:tickRate="10000000">
<head>
<styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
<layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
</head>
<body>
<div>
<p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
</div>
</body>
</tt>Comment fonctionnent les temps en TTML
Le TTML permet d’écrire un temps de plusieurs façons. Les heures ressemblent à 00:00:01.200, ou à 00:00:01:05 avec un numéro d’image à la fin. Les temps décalés sont un nombre suivi d’une unité : 1.2s, 1200ms, 30f pour les images, ou 12000000t pour les ticks. Les ticks sont courants dans les fichiers des services de streaming ; l’attribut tickRate de l’élément racine indique combien de ticks font une seconde : avec une fréquence de 10 000 000, 12000000t correspond donc à 1,2 seconde.
Les temps peuvent aussi être relatifs. Un div peut avoir son propre temps de début, auquel s’ajoutent ceux des paragraphes qu’il contient, un paragraphe peut indiquer une durée au lieu d’un temps de fin, et un paragraphe sans temps peut les tenir de ses spans. C’est pourquoi les outils de simple rechercher-remplacer se trompent souvent sur les minutages TTML.
Ce que lit ce site
Le convertisseur reconnaît le TTML à son élément racine <tt>, quelle que soit l’extension du fichier : les fichiers .ttml, .dfxp et .xml s’ouvrent donc tous. L’exemple ci-dessus devient un sous-titre de 1,2 à 3,5 secondes sur deux lignes, la seconde en italique. Dans le détail, il lit :
- Des heures avec fractions ou images, et des temps décalés en heures, minutes, secondes, millisecondes, images et ticks.
- Les réglages frameRate, frameRateMultiplier, subFrameRate et tickRate de l’élément racine. En l’absence de fréquence de ticks, il en déduit une à partir de la fréquence d’images, ou utilise un tick par seconde, comme le décrit la spécification.
- Begin, end et dur sur les paragraphes et les spans, en additionnant les temps de début du body et des div qui les contiennent.
- Retours à la ligne écrits <br/>.
- L’italique, le gras et le soulignement, qu’ils soient définis directement sur un élément ou via un style nommé.
- Les éléments avec un préfixe d’espace de noms, comme <tt:p> dans l’EBU-TT et certains fichiers IMSC. Les métadonnées, comme les notes destinées aux éditeurs, sont ignorées et ne deviennent jamais du texte de sous-titre.
Ce qu’il laisse de côté
Le convertisseur conserve les mots et le minutage, et supprime la présentation. Les régions et les positions, les couleurs, les polices, les tailles, les fonds, les contours et les réglages de sens du texte ne sont pas repris. Si un fichier affiche deux paragraphes en même temps dans des régions différentes, par exemple deux intervenants en haut et en bas, ils deviennent deux sous-titres qui se chevauchent ; le vérificateur de sous-titres vous les signalera.
Certains fichiers de sous-titres XML ne sont pas du tout du TTML, et la page indique qu’elle ne les reconnaît pas comme des sous-titres. C’est le cas du format XML timedtext propre à YouTube, dont l’élément racine est <timedtext> ou <transcript> au lieu de <tt>. Les fichiers IMSC à base d’images, qui stockent des images du texte, ne contiennent aucun texte à lire. Les modes de minutage inhabituels, comme les timecodes SMPTE drop-frame, ne font pas l’objet d’un traitement particulier : comparez donc quelques sous-titres vers la fin de l’aperçu avec la vidéo.
Ce qu’il écrit
Quand vous convertissez en TTML ou en DFXP, le convertisseur écrit un document TTML 1 simple : chaque sous-titre devient un paragraphe avec des temps de début et de fin en millisecondes, les retours à la ligne deviennent <br/>, et l’italique, le gras et le soulignement deviennent des spans avec l’attribut de style correspondant. Il n’y a pas de head avec des styles ou des régions : les lecteurs utilisent donc leur apparence par défaut. L’option DFXP écrit le même document avec une extension .dfxp.
L’attribut de langue de l’élément racine est laissé vide, car le convertisseur ne peut pas savoir dans quelle langue sont vos sous-titres. Certaines plateformes l’exigent. Si c’est le cas de la vôtre, ouvrez le fichier dans un éditeur de texte et renseignez xml:lang avec un code comme en ou es avant de l’importer.
<?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="">
<body>
<div>
<p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
</div>
</body>
</tt>Convertir du TTML ou du DFXP en SRT ou en VTT
La conversion prend quelques secondes, et le fichier reste sur votre appareil.
- Ouvrez le convertisseur TTML vers SRT ou DFXP vers SRT, ou le convertisseur principal, et choisissez votre fichier .ttml, .dfxp ou .xml.
- Vérifiez le résumé. Il indique combien de sous-titres ont été trouvés et si certains paragraphes avaient un minutage illisible.
- Choisissez le format de sortie, comme SRT ou VTT, et parcourez l’aperçu.
- Lisez le résultat avec votre vidéo et comparez un sous-titre vers le début et un vers la fin, au cas où le fichier utiliserait un mode de minutage que le convertisseur ne gère pas.
- Téléchargez le fichier. Il est enregistré en UTF-8.
Quand utiliser le TTML, et quand s’en passer
Utilisez le TTML ou le DFXP quand une plateforme, un service de streaming ou un diffuseur le demande ; leurs spécifications de livraison nomment généralement un profil, auquel un fichier TTML 1 simple peut correspondre ou non. Pour un usage courant dans les lecteurs, les logiciels de montage et les plateformes vidéo, le SRT ou le WebVTT est plus simple et plus largement pris en charge. Si vous recevez un fichier TTML et voulez seulement le regarder ou le modifier, convertissez-le en SRT.
Gardez le fichier d’origine dans tous les cas. La conversion en SRT supprime définitivement les régions et le style : si vous devez plus tard livrer de nouveau du TTML avec ses positions d’origine, vous voudrez la source plutôt qu’un fichier TTML reconstruit à partir du SRT.
Questions fréquentes
Le DFXP est-il identique au TTML ? En pratique, oui. DFXP était le nom utilisé pendant la rédaction du TTML, et le convertisseur traite les deux de la même façon.
Pourquoi mon fichier .xml est-il signalé comme n’étant pas un fichier de sous-titres ? Soit ce n’est pas du TTML, par exemple du XML timedtext de YouTube, soit il ne contient pas d’élément racine <tt>. Le convertisseur ne lit pas ces fichiers.
Le SRT converti gardera-t-il la position de chaque sous-titre ? Non. Le SRT n’a pas de méthode standard pour placer les sous-titres, et le convertisseur ne reprend les régions TTML dans aucun format.
Pour aller plus loin :