VTT

VTTファイルとは

HTML5 の動画が求める字幕形式。ヘッダーと書式の選択肢が付いた SRT です。

VTT とは何か

VTT はプレーンテキスト形式です。どのエディターでも開けます。 字幕制作とウェブのために使われます。

拡張子は .vtt、正式名称は WebVTT です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

VTT はどこから来たのか

W3C が 2010 年に公開しました。 仕様は WebVTT です。

古さが役に立つのは、ごく実務的な理由からです。形式が古いほど、それを覚える時間が多くのプログラムに与えられてきたということだからです。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

捨てられるものはありません

VTT ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。

VTT を開けるのは何か

VLCとSubtitle Editが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これは今のブラウザーならどれでも読めます。

ですからページに置くのも、メッセージに添えて送るのも、安心してできます。相手が何をインストールしているかを考える必要がありません。

作業のための形式です

VTT は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。

ブラウザーが求める形式

HTML の video は、VTT ファイルを指す track 要素を通じて字幕を受け取り、これが唯一受け付ける字幕形式です。SRT でも ASS でもありません。どちらを渡してもブラウザーは無視します。この一点だけで、このページへのアクセスの大半を説明できます。字幕を持っていて、ウェブページ上で動画の隣に置いたのに、何も表示されない、という状況です。

この形式自体は、変換を簡単にするために意図的に SubRip に近づけられています。項目の番号は必須ではなく任意で、タイムスタンプはミリ秒の前がコンマではなくピリオドで、ファイルは最初の一行に単独で WEBVTT という単語を持つ必要があります。このヘッダーは飾りではありません。これがないファイルは丸ごと拒否されます。

なぜ字幕が表示されないのか

確認する価値のある順に、原因は四つあります。WEBVTT ヘッダーが欠けている場合で、たいてい SRT を改名しただけのファイルだからです。タイムスタンプが今もコンマを使っている場合も同じ理由です。track 要素に kind と srclang の属性が設定されていない、あるいは default 属性がなく視聴者が字幕を一度もオンにしていない場合。そして一番時間を無駄にするのが、ページとは別のオリジンから配信されていて、正しいクロスオリジンのヘッダーがなく、ブラウザーが静かに拒否している場合です。

最後のケースは特に立ち止まる価値があります。目に見えるエラーが何も出ないからです。動画は再生され、字幕メニューは空で、ページの中にはその理由を示すものが何もありません。ページと同じオリジンから VTT を配信すれば、この問題はまるごと避けられます。別のアセット用ドメインではなく、動画と同じ場所に字幕を置く一番単純な理由です。

キューの設定 — 位置、整列、大きさ

すべてのキューは、タイムスタンプの後に設定を持てます。垂直位置、水平の整列、幅、行番号です。これは SRT には表現しようのないもので、単なる書き起こし以上のものが必要な場面で VTT を選ぶ実務上の理由です。

よくある使い道は、キャプションを邪魔にならない場所に動かすことです。字幕は既定で下部に表示されますが、そこはまさに放送局がロワーサードを置く場所であり、動画プレーヤーが自分のコントロールを置く場所でもあります。その数秒間だけキューを上部に押し上げる行設定は、ファイルにわずか二単語加えるだけで済み、他の場所でどれだけスタイルを整えても解決できない問題を解決します。

スタイルと、その限界

VTT は太字、斜体、下線といった少数のインラインタグと、話者を名指しするボイスタグを許容していて、これによって書き起こしは、文中に名前を書かなくても二人の話者を区別できます。ファイル内のスタイルブロックや、キューの疑似要素を対象にしたページ側の CSS で、フォント、色、背景を設定できます。

ブラウザーが実際にどこまで尊重するかはまちまちで、これはこの仕様の中でも実装が最も弱い部分です。斜体と話者の区別はどこでも動くと想定し、それ以上は補強程度に考えてください。スタイルが無視されると読めなくなる字幕トラックは、この形式を活かすのではなく、この形式に逆らって設計されています。

チャプター、音声解説、メタデータ

VTT ファイルは字幕を含む必要さえありません。track 要素は kind 属性を持ち、それ以外の値も本当に役立ちます。chapters は対応するプレーヤーで移動可能な区切りの一覧を作り、descriptions はスクリーンリーダー向けの音声解説テキストを運び、metadata は動画の再生中に JavaScript が反応できる任意のキューを運びます。

最後のものが、対話的な書き起こしや同期したスライド、タイミング付きの注釈を作る仕組みです。キューは再生位置がそこに達したときに発火し、ページはそれに対して好きなことをでき、ページ自身が表示しない限り何も表示されません。字幕形式の中に隠れた、小さなスケジューリングの仕組みです。

キャプションと字幕、そして法的な違い

track 要素はキャプションと字幕を区別していて、これは些末なこだわりではありません。字幕は視聴者が聞き取れて翻訳が必要だと想定します。キャプションは視聴者が聞き取れないと想定し、そのため台詞以外の情報 — ドアが閉まる音、音楽が始まったこと、画面外で誰が話しているか — も含みます。

多くの公的機関や増え続ける企業にとって、録画済み動画のキャプションは、WCAG とそれを参照するアクセシビリティ法制のもとで、心遣いではなく要件です。翻訳された台詞だけを含むトラックに「キャプション」というラベルを付けても、マークアップ上は満たしていても、義務は満たしません。これは監査人が見逃さない違いです。

VTT ファイルはどこから来るのか

たいていは自動文字起こしです。主要なプラットフォームや多くの書き起こしサービスは WebVTT を書き出せ、機械の出力は修正する価値があるほどには十分でも、読まずに公開できるほどではありません。固有名詞、重なり合う会話、専門用語がつまずきやすい部分で、それらはたいてい意味を運ぶ言葉です。

もう一つの経路は変換です。字幕の編集はデスクトップの字幕ソフトでは SRT のほうがずっと対応が充実しているため、SRT で修正・タイミング調整をしてから公開時に VTT へ変換する、というよくある作業手順があります。片方を原本、もう片方を生成物として扱っている限り、これは理にかなった役割分担です。二つのコピーが静かにずれていくのでなければ、の話です。

基本情報

VTTフォーマットの識別子と出自。
拡張子.vtt
メディアタイプtext/vtt
公開元W3C
初版2010
仕様WebVTT

VTT ファイルについてのよくある質問

なぜウェブページで字幕が表示されないのですか

順に四つ確認してください。ファイルが単独の行として WEBVTT で始まっているか、タイムスタンプのミリ秒の前がコンマではなくピリオドか、track 要素に kind と srclang が設定されているか、そしてファイルがページと同じオリジンから、あるいは正しいクロスオリジンヘッダー付きで配信されているかです。最後のものはエラーも出さずに失敗します。

SRT ファイルを .vtt に改名するだけでよいですか

よくありません。ファイルは WEBVTT というヘッダー行で始まる必要があり、タイムスタンプのミリ秒の前はコンマではなくピリオドである必要があります。改名するとブラウザーが拒否するファイルになります。変換すれば一瞬でどちらも直ります。

VTT と SRT の違いは何ですか

VTT はウェブページ上の動画にブラウザーが受け付ける形式で、位置指定、整列、話者ボイス、スタイルを追加できます。SRT はデスクトップのプレーヤーやテレビ、アップロードプラットフォームが期待する形式で、スタイルは一切ありません。それ以外の構造はよく似ていて、変換は難しくありません。

キャプションを動画の下部から動かすには

タイムスタンプの後にキュー設定を追加してください。line 設定でキューを垂直方向に、align 設定で水平方向に動かせます。これが VTT にできて SRT にはできない主なことで、キャプションを画面上の文字やプレーヤーのコントロールと重ならないようにする方法です。

キャプションと字幕の違いは何ですか

字幕は視聴者が聞き取れることを前提に台詞を運びます。キャプションは聞き取れないことを前提に、誰が話しているか、画面外で何が聞こえるか、音楽がいつ始まるかといった音の情報も加えます。アクセシビリティの要件はキャプションを求めていて、台詞だけを含む「キャプション」ラベルのトラックはそれを満たしません。

VTT ファイルは字幕以外にも使えますか

使えます。同じ形式でチャプター、音声解説、任意のタイミング付きメタデータを運べ、track 要素の kind 属性で選択します。metadata のキューは動画の再生中に発火し、JavaScript で受け取れます。これが対話的な書き起こしやタイミング付きの注釈を作る仕組みです。