メインコンテンツへスキップ
SubtitleMatrix

LRC を TTML に変換

形式変換歌詞(LRC)
字幕テキストを貼り付けることもできます

オプション

元のファイルに終了時刻がない場合(プレーンテキストや LRC)に使います。出力の時間軸は変換ではなくここで生成されるため、この値がそのまま表示時間になります。

この変換で変わること

1 項目が失われるか、判断が必要です

  • タイミング

    字幕の終了時刻(元の形式が記録していないため、出力側は変換ではなく生成されます)

この一覧は、読み込んだファイルではなく、この2つの形式の機能対応表から作られています。形式としては許されているが対応表が扱っていない機能を使っている場合、そのファイルではさらに多くが失われることがあります。

LRC の字幕を TTML に変換するページです。ファイルをドラッグするか、テキストを貼り付けてください。TTML 版がその場で返ります。変換はすべてブラウザ内で完結するため、アップロードはなく、アカウントも要りません。

この二つの形式は保存できるものが違い、その差は見た目だけではありません。終了時刻の置き場所が TTML にありません。上の一覧はファイルの内容ではなく、二つの形式がそれぞれ表現できるものから作られます。そのため、ファイルを読み込む前から答えは同じです。

1 ファイルでも、シーズン全体でも構いません。キューが順番に処理し、結果は 1 つの ZIP にまとめてダウンロードできます。

例

LRC の典型的なファイルを TTML に変換

入力

[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.

出力

<?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>

この出力で失われるのは終了時刻です。それ以外は行単位で一致します。

同じ変換を、乱れた入力で行う

入力

[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]

出力

<?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>

実在するファイルによくある損傷です。混在した改行コード、余分な空白、空のフィールド。上の整った例と比べると、パーサーがどこまで許容するかが分かります。

よくある質問

LRC の各字幕の終了時刻は TTML でどうなりますか?

LRC は行が始まる時刻だけを記録し、終了時刻は持ちません。歌詞プレイヤーは次の行が始まるまでその行を出し続けるため、終了時刻は冗長だからです。LRC の終了時刻はすべて落ち、開始時刻はそのまま残ります。

LRC を TTML に変換すると、出力はどんな形になりますか?

出力は TTML です。字幕番号はなく、各字幕は begin と end 属性を持つ <p> 要素になり、<body>(多くは <div> も)の中に入ります。文書全体の上には XML 宣言が付きます。LRC の各字幕ブロックは、同じ順序・同じ本文のまま 1 つの字幕になります。

LRC の 2 行の字幕は TTML でどう出力されますか?

間に <br/> が入る 2 行になります。TTML が強制改行を書く記法です。2 行が 1 つの字幕に属するという対応は残り、プレイヤーはまとめて表示します。

LRC の字幕の順序は TTML でも保たれますか?

はい。変換の途中で開始時刻の昇順に並べ替えます。最も早いものが先頭で、どの形式もプレイヤーもその順序を前提にしています。LRC の字幕が順不同だった場合、TTML では順序が直ります。これは内容ではなくファイル構造の変更で、意図した動作です。

TTML を LRC に戻す変換はできますか?

できます。ただし逆方向には独自の損失一覧があります。TTML から LRC への変換では終了時刻・スタイル・画面位置・精度・形式固有の内容が失われます。上の一覧と違うのは、二つの形式が保存できるものが違うからです。

LRC から TTML への変換で文字コードは引き継がれますか?

いいえ。出力は UTF-8、改行コードは LF、BOM なしです。入力が UTF-16 や Windows のシングルバイト文字コードでも、読み込み時にデコードされます(その場合は結果パネルに表示されます)。出てくるのは常に同じ UTF-8 の TTML です。

関連ツール