字幕ファイル形式の解説:SRT から Spruce STL まで
各字幕形式の概要、見た目、使われる場面、変換時に変わること:SRT、WebVTT、ASS、TTML、SAMI、LRC など。
執筆:Syed Peera Saheb · 公開日
結論
ほとんどの字幕形式が保存するのは、字幕が表示される時点、消える時点、内容の3つです。SRT はほぼどこでも使え、WebVTT はウェブブラウザーに必要な形式で、そのほかの形式はスタイル、放送、古いソフト、音楽の歌詞のために存在します。
このページでは、このサイトのコンバーターが読み書きするすべての形式を順に紹介します。それぞれについて、小さな例、よく使われる場面、変換で何が残るかを説明します。どれもテキストファイルなので、プレーンテキストのエディターで開けば中身を確認できます。コンバーターは拡張子ではなくファイルの内容から形式を認識するので、拡張子が間違っているファイルも開けます。
| 形式 | 拡張子 | 読み込み | 書き出し | 主な用途 |
|---|---|---|---|---|
| SubRip | .srt | はい | はい | プレーヤー、テレビ、動画編集ソフト、ほとんどのプラットフォーム |
| WebVTT | .vtt | はい | はい | ウェブ動画、ブラウザー、e ラーニング |
| Advanced SubStation Alpha | .ass | はい | はい | スタイル付き字幕、アニメ、MKV ファイル |
| SubStation Alpha | .ssa | はい | ASS として書き出し | スタイル付きの古い字幕 |
| SBV | .sbv | はい | はい | YouTube の字幕ファイル |
| TTML と DFXP | .ttml, .dfxp, .xml | はい | はい | ストリーミング、放送、プロ向けの納品 |
| MicroDVD | .sub | はい | はい | 古いプレーヤーとダウンロード、フレーム単位のタイミング |
| SubViewer | .sub | はい | いいえ(SRT として書き出し) | 古いソフト |
| SAMI | .smi, .sami | はい | はい | 古い Windows のメディアプレーヤーとダウンロード |
| LRC | .lrc | はい | はい | 音楽プレーヤーの歌詞 |
| CSV | .csv | はい | はい | スプレッドシートとレビュー用リスト |
| Spruce STL | .stl | はい | はい | DVD オーサリング用、フレーム単位のタイミング |
| プレーンテキスト | .txt | いいえ | はい | タイミングのない書き起こし |
SRT と WebVTT:日常的に使われる2つの形式
SRT は、DVD から字幕を読み取るプログラムである SubRip に由来します。各字幕には、番号、ミリ秒の前がカンマのタイミング行、テキスト、空行があります。公式の仕様がないため、プレーヤーは小さな違いを許容します。書式は <i>、<b>、<u> などのタグに限られます。
WebVTT は W3C の標準です。ファイルは WEBVTT で始まり、タイミング行ではミリ秒の前にドットを使い、字幕番号は任意です。字幕の位置やスタイルも指定できますが、ブラウザー以外のプレーヤーではよく無視されます。2つの形式の間で変換しても、すべてのタイミング、改行、斜体・太字・下線のタグは保持されます。WebVTT の位置とスタイルの設定は SRT には引き継がれず、コンバーターは VTT ファイルを作成するときにもそれらを書き出しません。WebVTT ファイルで <v Name> と書かれた話者は、再び WebVTT で書き出すときは保持され、ほかの形式では省かれます。
1
00:00:04,300 --> 00:00:06,800
Over here.
<i>Follow my voice.</i>
WEBVTT
00:00:04.300 --> 00:00:06.800
Over here.
<i>Follow my voice.</i>ASS と SSA:スタイル付きの字幕
SubStation Alpha とその後継の Advanced SubStation Alpha は、名前付きスタイル(フォント、サイズ、色、縁取り、位置)の一覧と、字幕ごとに1つの Dialogue 行を持ちます。{\an8} や {\i1} のような波かっこのオーバーライドタグで、1行の見た目を変えられます。アニメでよく使われ、MKV 動画ファイルの中によく入っています。
ASS や SSA からの変換では、各行のタイミングとセリフ、\N で書かれた改行、斜体・太字・下線が保持されます。フォント、色、位置、エフェクトは削除され、コメント行はスキップされ、ベクター図形は取り除かれます。ASS への変換では、すべての字幕に1つの既定スタイル(1920 × 1080 の画面下部に黒い縁取り付きの白い Arial)が適用されます。SSA ファイルは ASS として書き出されます。SSA を読めるプログラムなら ASS も読めます。
Dialogue: 0,0:00:04.30,0:00:06.80,Default,,0,0,0,,Over here.\N{\i1}Follow my voice.{\i0}SBV と SubViewer
SBV は、YouTube が昔から字幕ファイルに使ってきたシンプルな形式です。字幕は、1行にカンマで区切った開始時間と終了時間、その後にテキストが続きます。YouTube のヘルプページでは SubViewer と呼ばれています。マークアップに対応していないため、コンバーターは SBV を書き出すときに斜体・太字・下線を削除します。
SubViewer 2 のファイルは似ていますが、100分の1秒単位を使い、[INFORMATION] ヘッダーで始まることがよくあります。コンバーターはこれを読み込んでヘッダーをスキップします。SubViewer の書き出しには対応していないため、ずらしたりクリーンアップしたりすると SRT として保存されます。
0:00:04.300,0:00:06.800
Over here.
Follow my voice.TTML と DFXP:XML のタイムドテキスト
TTML(Timed Text Markup Language)は W3C の XML 形式です。DFXP は以前のドラフトの名前で、2つの拡張子は同じ種類の文書を表します。ストリーミングサービス、放送局、プロ向けの字幕ツールは、TTML と、IMSC や EBU-TT などのそのプロファイルを使っています。
コンバーターは TTML と DFXP から、ティックやフレームに基づく時間も含めて、テキスト、タイミング、改行、斜体・太字・下線を読み込みます。リージョン、色、フォントなどのスタイルは削除されます。TTML や DFXP を書き出すときは、時間がミリ秒単位で、保持された3つの文字スタイルを含むシンプルな TTML 1 文書を作成します。詳細は XML 字幕のガイドで説明しています。
<p begin="00:00:04.300" end="00:00:06.800">Over here.<br/><span tts:fontStyle="italic">Follow my voice.</span></p>MicroDVD SUB と Spruce STL:フレームを数える形式
MicroDVD ファイルは時間の代わりにフレーム番号を保存します。{100}{150} はフレーム100からフレーム150までという意味です。フレームを秒に変換するには、コンバーターに動画のフレームレートが必要です。多くのファイルは {1}{1}23.976 のような1行目でそれを宣言しており、コンバーターはその値を使います。そうでなければ、選んだフレームレート(既定は23.976)を使います。縦棒で改行し、{y:i} で行を斜体にします。MicroDVD を書き出すとき、コンバーターはフレームレートの行を追加し、行全体が斜体の場合だけ斜体を残し、それ以外の書式は削除します。
Spruce STL は DVD オーサリングソフトのテキスト形式です。各行には、フレームで終わる開始と終了のタイムコード、その後にテキストがあります。コンバーターは ^I、^B、^U のスタイルコードを読み込み、書き出すときにも使います。Spruce STL は、同じ .stl 拡張子を使うバイナリの放送用形式である EBU STL とは別物です。コンバーターは EBU STL の読み込みにも書き出しにも対応していません。
{1}{1}23.976
{103}{163}Over here.|{y:i}Follow my voice.
00:00:04:07 , 00:00:06:19 , Over here.|^IFollow my voice.^ISAMI と LRC:開始時間だけを保存する形式
SAMI は Microsoft の HTML に似た形式です。<SYNC Start=...> タグで、続くテキストが表示される時間をミリ秒で示し、空の SYNC で画面を消去します。SAMI ファイルは段落のクラスとして複数の言語を持てます。コンバーターは最初に見つけた言語を読み込み、斜体・太字・下線を保持します。
LRC ファイルは、音楽プレーヤー向けに歌詞のタイミングを記録する形式で、[00:12.50] のようなタイムスタンプごとに1行です。サビが繰り返される場合、1行に複数のタイムスタンプを付けられ、[offset:...] タグですべてをずらせます。SAMI や LRC を読み込むときは、各字幕は次の字幕が始まった時点で終わり、最後の字幕は4秒間表示されます。LRC を書き出すときは、各字幕が1行になるため、改行はスペースになり、書式は削除され、空のタイムスタンプで間を示します。拡張 LRC ファイルの単語ごとのタイミングは保持されません。
[00:04.30]Over here. Follow my voice.
[00:06.80]
[00:07.10]Soft piano musicCSV とプレーンテキスト
CSV ファイルは、スプレッドシートで字幕をレビューするのに便利です。コンバーターが読み込めるのは、1行目に Start、End、Text などの名前で開始・終了・テキストの列があり、カンマ、セミコロン、タブのいずれかで区切られた CSV ファイルです。時間は 00:00:04.300 のような時刻表記でも秒数だけでもよく、見出しに ms とある場合は整数がミリ秒として読み込まれます。書き出される CSV には Number、Start、End、Duration、Text の列があり、書式は含まれません。
プレーンテキストは出力専用です。言葉は残りますがタイミングは失われるため、字幕として読み込み直すことはできません。字幕を段落にまとめるか、各行の先頭にタイムスタンプを付けることができます。これは字幕テキスト変換ツールの役割です。
どの変換でも保持されるものと、決して行わないこと
形式にかかわらず、コンバーターは、変換先の形式が許す範囲で各字幕の開始時間と終了時間をミリ秒単位で保ち、言葉を保ち、変換先の形式に改行があれば改行も保ちます。斜体・太字・下線は、両方の形式で表示できる場合に保持します。すべてのファイルは UTF-8 で保存され、プレビューの文字がおかしい場合は別の文字コードを選べます。
位置、色、フォント、カラオケのタイミング、アニメーションは保持されません。また、文字認識が必要な Blu-ray SUP や DVD IDX ファイルなどの画像字幕は読み込めません。SCC や EBU STL などの放送用形式の読み込み、動画ファイルからの字幕抽出、テキストの翻訳もできません。変換はすべてブラウザー内で行われ、ファイルはアップロードされません。