字幕読了 6 分

VTTファイルとは

WebVTTはブラウザーが対応しているフォーマットです。SRTに何を足すのか、どんなときに必要になるのか、各要素は何のためにあるのか。

WebVTTは、ブラウザーが読める字幕の形式です。そして、読めるのはこれだけです。SRTをHTML5の動画に付けても、何ひとつ起こりません。エラーも、警告も、字幕もです。

拡張子は .vtt で、なかはSRTによく似ています。変わるのは3つ。必須のヘッダーを持つこと、SRTがコンマを置くところに点を置くこと、そしてSRTより格段に多くのことを表せることです。

なかに入っているもの

WEBVTT

1
00:00:04.120 --> 00:00:06.480
数字に入る前に、
いまどこにいるかを見直しましょう。

2
00:00:06.600 --> 00:00:09.000 line:90% align:start
思っていなかったのは、
2週目の落ち込みでした。

この1行目は WEBVTT と書かれていなければなりません。それがない場合、その前にバイト順マークが立つ場合、あるいは空行が先に来る場合、ブラウザーはファイルまるごとを捨てます。

そこから先は、これまでと同じブロックです。ひと目で分かる違いが2つあります。ミリ秒の前の点と、時間の行の末尾に設定をぶら下げられることです。

SRTに対して足されるもの

位置とそろえ方。line:90% は字幕を下げ、align:start は左に寄せ、position:20% は横にずらします。映像にすでにあるテロップを隠さないために便利です。

**スタイル。**ファイルの先頭に本物のCSSを書いた STYLE ブロックを置き、本文のなかに <c.narrator> のようにクラスを撒きます。色、大きさ、影。

誰が話しているか。<v マルタ>こんにちは</v> というタグが、声を示すやり方です。これを認識できるプレーヤーは別の色で描けますし、そうでないものは素通りします。インタビューや会議では、これが「文字の壁」と「読めるもの」との境目になります。

領域とノート。NOTE ブロックは誰にも見えないコメントを保ち、REGION は画面の一部を、独自のスクロールを持つ区画として区切ります。生放送で上がっていくテロップのようなものです。

**ブロックの名前。**時間の行の上で、各ブロックは名前——intro、question-3——を受け取れます。JavaScriptからそれを指すためです。

VTTが必要になるとき

動画がブラウザーで再生されるときはいつもです。ページに <video> とその <track> があるなら、そのファイルはWebVTTでなければなりません。

<video controls>
  <source src="kaigi.mp4" type="video/mp4" />
  <track src="kaigi.vtt" kind="subtitles" srclang="ja" label="日本語" default />
</video>

いまどきのウェブのプレーヤー(Video.js、Plyr、Shaka)でも、字幕をWebVTTの断片として配るHLSの配信でも同じです。

ブラウザーの外に出ると、これを求める相手はほとんどいません。パソコンの編集ソフト、みんなが昔から使ってきたプレーヤー、ほとんどの投稿フォームは、いまもSRTを待っています。

転ぶ2つのことと、それがファイルのせいではないこと

サーバーは text/vtt として返さなければなりません。text/plain や application/octet-stream で渡されると、一部のブラウザーはこれを捨てます。直す場所はサーバーの設定であって、ファイルではありません。

そして、同じオリジンから来るか、CORSを備えている必要があります。Access-Control-Allow-Origin ヘッダーなしに別のドメインに置かれた .vtt は、手で開けばうまく動くアドレスであっても、決して読み込まれません。「動画は動くのに字幕が出ない」という古典の第1の原因がこれです。

どちらも内容の問題ではなく、どちらもページ上に見えるエラーを残しません。ブラウザーの開発者ツールのネットワークのタブに現れます。しかも、そこを見に行くべきだと知っている場合だけ。

変換する

SRTからVTTへの道は簡単です。ヘッダーを置き、コンマを点に替え、SRTが文字として持っていて、WebVTTならマークアップと受け取ってしまう & と < を escape する。SRTをVTTには、この3つをブラウザーのなかで片づけます。ファイルはどこにも出ません。

逆向きでは、SRTに言えないものはすべて外に残ります——位置、スタイル、領域——。だからVTTをSRTにはそれらを外し、声のタグは行頭の「マルタ:」に変えます。SRTがそれを示せるやり方です。どちらを、何のために選ぶか。

手元にあるのが動画で、字幕ではない場合

アップロードしてください。時間と、声ごとに分かれて名前の付いた文字起こしと、要約をお返しします。VTTはそこから、組み上がった状態で、声の印付きで出てきます。始めるのにアカウントは要りません。

関連ツール

SRTをVTTに

SRTをVTTに

録音を文字にする

タイムスタンプ付きのテキスト、話者ごとの区別、そして要点のまとめ。始めるのにアカウントは要りません。