コンテンツへスキップ
Free Subtitle Converter
言語
カラーテーマ
応援する

XML 字幕の解説:TTML、DFXP、IMSC

TTML、DFXP、IMSC の字幕ファイルとは何か、そのタイミングの仕組み、このサイトのコンバーターが読み込むものと省くもの。

執筆:Syed Peera Saheb · 公開日

結論

TTML、DFXP、IMSC は、W3C の Timed Text Markup Language に基づく XML 字幕ファイルです。DFXP は TTML の以前の名前で、IMSC はストリーミングや放送の納品に使われる TTML のプロファイルです。

.ttml、.dfxp、.xml の字幕ファイルがあって SRT や VTT が必要な場合、このサイトのコンバーターはそのテキスト、タイミング、改行、斜体・太字・下線を読み取れます。位置、色、フォントは保持されず、字幕を含むすべての XML ファイルを読めるわけではありません。

1つのファミリー、複数の名前

TTML は W3C のタイムドテキストの標準です。策定中は DFXP(Distribution Format Exchange Profile)と呼ばれており、TTML 1 の仕様にも、古い名前がプロファイル名やファイル拡張子に残っていると記されています。実際には、.dfxp ファイルと .ttml ファイルは同じ種類の文書です。TTML2 は第2版で、機能が追加されています。

TTML は大規模な仕様なので、業界ごとにプロファイルが定められています。プロファイルとは、ファイルで使える機能を定めたサブセットです。IMSC(Internet Media Subtitles and Captions)プロファイルは最も一般的なものの1つで、現行バージョンではテキスト専用プロファイルと画像専用プロファイルが定義されています。EBU-TT はヨーロッパの放送局が使うプロファイルで、SMPTE-TT はアメリカの放送で使われています。いずれも <tt> ルート要素から始まります。

TTML ファイルの中身

TTML 文書には head と body があります。head ではフォントや色などのスタイルと、画面上の領域であるリージョンを定義できます。body には段落である <p> 要素が入り、それぞれに開始時間と終了時間、字幕テキストがあります。<br/> で改行し、<span> 要素で行の一部にスタイルやタイミングを付けます。

短い TTML ファイル
<?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>

TTML のタイミングの仕組み

TTML では時間を何通りかの方法で書けます。時刻表記は 00:00:01.200、または末尾にフレーム番号を付けた 00:00:01:05 のようになります。オフセット時間は単位付きの数値で、1.2s、1200ms、フレームなら 30f、ティックなら 12000000t です。ティックはストリーミングサービスのファイルによく使われます。ルート要素の tickRate が1秒あたりのティック数を示すので、ティックレートが10,000,000なら 12000000t は1.2秒です。

時間は相対的に書くこともできます。div が独自の begin 時間を持ち、その中の段落の時間にそれが加算されることもあれば、段落が終了時間の代わりに継続時間を指定することも、時間のない段落がその span から時間を受け取ることもあります。単純な検索・置換ツールが TTML のタイミングをよく間違えるのはこのためです。

このサイトが読み込むもの

コンバーターはファイル拡張子にかかわらず <tt> ルート要素で TTML を認識するため、.ttml、.dfxp、.xml のどのファイルも開けます。上の例は、1.2秒から3.5秒までの2行の字幕1つになり、2行目は斜体になります。詳しく言うと、次のものを読み込みます。

  • 小数またはフレームを含む時刻表記と、時間・分・秒・ミリ秒・フレーム・ティック単位のオフセット時間。
  • ルート要素の frameRate、frameRateMultiplier、subFrameRate、tickRate の設定。ティックレートがない場合は、仕様に記載されているとおり、フレームレートから求めるか、1秒あたり1ティックを使います。
  • 段落と span の begin、end、dur。外側の body と div の begin 時間が加算されます。
  • <br/> で書かれた改行。
  • 要素に直接設定されたものも、名前付きスタイルで設定されたものも含む斜体・太字・下線。
  • EBU-TT や一部の IMSC ファイルにある <tt:p> のような、名前空間の接頭辞付き要素。編集者向けのメモなどのメタデータはスキップされ、字幕テキストになることはありません。

省かれるもの

コンバーターは言葉とタイミングを残し、表示に関する情報を削除します。リージョンと位置、色、フォント、サイズ、背景、縁取り、文字方向の設定は引き継がれません。上下の2人の話者のように、ファイルが異なるリージョンで2つの段落を同時に表示している場合、それらは重なった2つの字幕になります。字幕チェッカーがそれを指摘してくれます。

XML の字幕ファイルの中には TTML ではないものもあり、その場合はページに字幕として認識できないと表示されます。たとえば YouTube 独自の timedtext XML は、ルート要素が <tt> ではなく <timedtext> や <transcript> です。テキストの画像を保存する画像ベースの IMSC ファイルには、読み取るテキストがありません。SMPTE のドロップフレームタイムコードのような特殊なタイミングモードは特別には扱われないため、プレビューの終わり付近の字幕をいくつか動画と照らし合わせてください。

書き出すもの

TTML や DFXP に変換すると、コンバーターはシンプルな TTML 1 文書を書き出します。各字幕は、ミリ秒単位の時刻表記の begin と end を持つ段落になり、改行は <br/> に、斜体・太字・下線は対応するスタイル属性を持つ span になります。スタイルやリージョンを含む head はないため、プレーヤーは既定の見た目を使います。DFXP オプションは、同じ文書を .dfxp 拡張子で書き出します。

コンバーターには字幕の言語がわからないため、ルート要素の言語属性は空のままになります。これを必須とするプラットフォームもあります。必須の場合は、アップロード前にテキストエディターでファイルを開き、xml:lang に en や es などのコードを入力してください。

例からコンバーターが書き出すファイル
<?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>

TTML や DFXP を SRT や VTT に変換する

変換は数秒で終わり、ファイルはデバイスにとどまります。

  • TTML から SRT、DFXP から SRT への変換ツール、またはメインのコンバーターを開き、.ttml、.dfxp、.xml ファイルを選びます。
  • 概要を確認してください。見つかった字幕の数と、読み取れないタイミングの段落があったかどうかが表示されます。
  • SRT や VTT などの出力形式を選び、プレビューに目を通します。
  • コンバーターが対応していないタイミングモードがファイルで使われている場合に備えて、結果を動画と一緒に再生し、最初付近と最後付近の字幕を比べてください。
  • ファイルをダウンロードします。UTF-8 で保存されます。

TTML を使うべきとき、使うべきでないとき

プラットフォーム、ストリーミングサービス、放送局から求められた場合は TTML か DFXP を使いましょう。納品仕様ではたいていプロファイルが指定されており、シンプルな TTML 1 ファイルがそれを満たすとは限りません。プレーヤー、編集ソフト、動画プラットフォームでの日常的な利用なら、SRT や WebVTT のほうがシンプルで、幅広く対応しています。TTML ファイルを受け取って視聴や編集だけをしたい場合は、SRT に変換してください。

どちらの場合も元のファイルは残しておきましょう。SRT に変換するとリージョンとスタイルは完全に失われるため、後で元の位置のまま TTML を再び納品する必要が出たときは、SRT から作り直した TTML ファイルではなく元のファイルが必要になります。

よくある質問

DFXP は TTML と同じですか? 実用上は同じです。DFXP は TTML がドラフトだった時期の名前で、コンバーターはどちらも同じように扱います。

.xml ファイルが字幕ファイルではないと表示されるのはなぜですか? YouTube の timedtext XML のように TTML ではないか、<tt> ルート要素を含んでいないかのどちらかです。コンバーターはそうしたファイルを読み込みません。

変換した SRT で各字幕の位置は保持されますか? いいえ。SRT には字幕を配置する標準的な方法がなく、コンバーターは TTML のリージョンをどの形式にも引き継ぎません。

字幕コンバーターを開く
コーヒーをおごる