Aller au contenu principal
SubtitleMatrix

Convertir LRC en TTML

Ou collez le texte d'un sous-titre

Options

Utilisée quand la source n'a pas d'heures de fin (texte brut, LRC). La chronologie de la sortie est ici générée plutôt que convertie : c'est donc ce nombre que vous obtiendrez.

Ce que cette conversion change

1 élément perdu ou à décider

  • Minutage

    les heures de fin des blocs — la source ne les enregistre pas, celles de la sortie seront donc générées plutôt que converties

Ce rapport de pertes vient de la matrice de capacités de ces deux formats, pas du fichier particulier que vous avez chargé. Un fichier précis peut perdre davantage s'il utilise des fonctionnalités que le format autorise mais que la matrice ne modélise pas.

Cette page convertit un fichier LRC en TTML, le format XML de sous-titrage du W3C. La sortie déclare les espaces de noms TTML et TTS, puis place chaque bloc dans un élément <p> dont les attributs begin et end portent des heures du type 00:00:12.000. Une ligne vide du LRC reste un <p> vide.

Le LRC n’a pas d’heure de fin : end est déduit du début suivant, et la dernière ligne reçoit 2 000 ms. Deux lignes partageant un horodatage tiennent dans un même <p>, séparées par <br/>. Aucun élément <style> ni <region> n’est écrit, puisque le LRC ne transporte ni style ni position.

Les caractères réservés du XML sont échappés dans le texte, et les horodatages LRC au centième sont transcrits en millisecondes avec trois décimales. Le TTML produit ne déclare pas de ttp:frameRate : toutes ses heures sont des horloges, pas des numéros d’images. Tout le traitement est local.

Exemples

Un fichier LRC typique, converti en TTML

Entrée

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

Sortie

<?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>
<p begin="00:00:12.000" end="00:00:15.300">First line of the song.</p>
<p begin="00:00:15.300" end="00:00:18.000">Second line.<br/>Second line, translated.</p>
<p begin="00:00:18.000" end="00:00:21.500"></p>
<p begin="00:00:21.500" end="00:00:23.500">Final line.</p>  </body>
</tt>

Chaque bloc devient un p avec begin et end ; le bloc bilingue utilise un seul p et un br, et aucun style n’est ajouté.

La même conversion sur une entrée abîmée

Entrée

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

Sortie

<?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>
<p begin="00:00:03.000" end="00:00:05.500">Out of order.</p>
<p begin="00:00:05.500" end="00:00:07.000">Leading zero omitted, one decimal.</p>
<p begin="00:00:07.000" end="00:00:09.000">Second with no centiseconds.<br/>Repeated chorus line.</p>
<p begin="00:00:09.000" end="00:00:12.000">Repeated chorus line.</p>
<p begin="00:00:12.000" end="00:00:14.000"></p>  </body>
</tt>

Les horodatages irréguliers sont normalisés, les lignes sont triées et le bloc sans texte sort en p vide.

Questions fréquentes

Comment les horodatages LRC s’écrivent-ils dans le TTML ?

Sous forme d’horloge dans les attributs begin et end, avec trois décimales : [00:12.00] devient begin="00:00:12.000". La fin, déduite du début suivant, suit le même format ; la dernière ligne reçoit 2 000 ms.

Le TTML produit contient-il des éléments style ou region ?

Non. Le LRC ne décrit ni couleur, ni police, ni position, donc ajouter <styling> ou <layout> reviendrait à inventer des valeurs. La sortie se limite à <tt>, <body> et aux <p> horodatés, ce qui reste un TTML valide.

Où va une paire de lignes partageant un horodatage ?

Dans un seul élément <p>, avec un <br/> entre les deux textes. Le TTML autorise plusieurs lignes dans un paragraphe, et ce choix conserve l’idée du LRC selon laquelle deux lignes au même instant forment un même écran.

Pourquoi le TTML produit n’a-t-il pas de déclaration de fréquence d’images ?

Parce que ses heures sont des horloges, pas des numéros d’images. Une déclaration ttp:frameRate ne servirait qu’à lire des valeurs comme 00:00:07:12 ou 36f ; ici, begin et end sont toujours exprimés en heures, minutes, secondes et millisecondes.

Les caractères spéciaux du texte sont-ils échappés ?

Oui, le texte passe par l’échappement XML : une esperluette devient &amp; et un signe inférieur devient &lt;. Sans cela, un texte contenant ces caractères casserait le document et le rendrait illisible pour un analyseur XML.

Le TTML est-il plus précis que le LRC ?

Le format TTML peut exprimer des millisecondes et même des images, mais la source LRC est limitée aux centièmes de seconde. La conversion ne fabrique donc pas de précision supplémentaire : elle écrit en millisecondes des valeurs qui sont toujours des multiples de 10.

Outils associés