ASS を VTT に変換 — ウェブ動画の字幕に

ASS を VTT にする変換は、ブラウザーが実際に読み込めるものを用意します。track 要素は WebVTT しか受け付けず、Advanced SubStation Alpha はそのまま拒否されるからです。言葉とタイミングはそのまま渡りますが、スタイル、位置、演出は渡りません。WebVTT がそれらの一部を表現できるとしてもです。配置はページ側の作業として残ります。

  • 処理される場所 ブラウザーの中です。ファイルがアップロードされることはありません。
  • 作り直し VTTはASSとは仕組みが違います。非可逆コーデックのような段階的な劣化ではありません。VTTが表現できるものは忠実に再現され、対応するものがないものはまったく残りません。
  • ファイルサイズの上限 1ファイルあたり100MBまで。無料、アカウント不要です。
  • 知っておきたいこと 位置指定、フォント、効果は失われます。残るのは文字とその時刻だけです。

一度に100ファイルまで。フォーマットが混ざっていても構いません。

装飾された字幕トラックと、ブラウザーが見せるもの

ASS のまま渡せば、何も表示されません。track 要素は WebVTT だけを受け付け、拒否は静かに起きます。動画は再生され、字幕メニューは空のままで、形式を指摘するコンソールメッセージすらありません。これがこの変換が存在する理由そのもので、SubRip のファイルがぶつかる壁とまったく同じです。

ASS の場合に違うのは、何が失われるかです。SubRip には最初から失うものがありませんでした。装飾された字幕トラックにはフォント、色、位置、場合によっては演出があり、それこそが本来の要点で、ブラウザーにはそれを表現するネイティブな手段がありません。ここでの変換は形式的な手続きではなく、デザインのどこまでを手作業で再現し、どこを諦めるかという判断です。

WebVTT は位置を持てますが、この変換では渡りません

WebVTT はスタイルに完全に無力な形式ではありません。cue には縦位置を動かす line、横位置を動かす align、position や size を指定できます。これは SubRip より確かに多くのことができ、字幕を画面上の別の要素から遠ざけるという最もよくある要望をちょうどカバーします。

ですが、これらのどれも埋められません。すべての ASS の行は、書き出す前に開始、終了、平文の 3 つに縮められるので、スタイルの整列設定も、数値のグリッド位置も、行内の位置指定も、WebVTT が組み立てられる時点ではすでに失われています。cue は設定なしで届き、ブラウザーはすべてを下部中央に配置します。

配置は cue 設定で手作業で再現できます

この作業は手作業ですが、選んで行う価値があります。ASS と VTT を並べて開き、位置指定があった行——看板や画面上の文字など、台詞ではないもの——を見つけてください。それらが画面下部で映像と衝突する cue で、台詞はもともと下部に置くつもりだったものです。

それぞれに対して、パーセンテージで表した line 設定が cue を上へ動かし、align 設定が左右へ動かします。タイミング行に単語を 2 つ加えるだけで、字幕は邪魔にならない位置に移ります。動く看板の上に正確に重ねる、といった元のタイポグラファーの配置とは一致しません。WebVTT はアニメーションできず、ブラウザーもそれを許さないからです。それでも、重なって読めない字幕を、読める字幕には変えられます。

該当する cue の数は元のファイル次第で、手を付ける前に数えておく価値があります。素直な台詞の翻訳ならゼロで、すべての行がもともと下部に置く前提だったので、変換したファイルはそのまま完成です。看板をシーンごとにタイポグラフィした作品なら数百件になることもあり、1 つずつ手で配置するのは 1 日仕事で、削除するなら 10 分です。最初の cue 設定を打つ前に、そのファイルがどちらなのかを見極めておく価値があります。

スタイルはファイルではなくページに宿ります

これが 2 つの形式の構造的な違いで、なぜ自動的に変換できないのかの理由です。ASS はファイルの中で名前付きスタイルを定義し、それぞれの行がそれを参照します。WebVTT はページ側が cue の疑似要素を CSS でスタイルすることを前提にしていて、ファイル自体は内容として扱われます。

実務的にはこれは作業場所の逆転を意味します。フォント、サイズ、色、影、背景を一度スタイルシートで設定すればトラック全体に適用され、行ごとの上書きより表現力は落ちますが、一貫性を保つのはずっと楽になります。cue に付けたクラスで部分集合だけ別にスタイルできるのが、WebVTT が持つスタイル表に最も近いもので、2 人の話者を区別するには十分です。

装飾タグは書き換えられず、削除されます

波かっこの中身はすべて、文字が書かれる前に取り除かれます。色の変化も、フェードも、移動も、回転も、痕跡を残さず消えます。半端に変換されたマークアップも余計な文字も残りません。タグをそのまま残せばブラウザーがタグの文字を画面に描いてしまうので、これは正しい動作です。

これは斜体も残らないことを意味し、意外に感じる人が多い点です。ASS は斜体を装飾タグで表し、WebVTT は山かっこのタグで表すため、両者を橋渡しする仕組みがありません。字幕が心の声や歌詞、あるいは第二言語に斜体を使っていたなら、山かっこ形式で VTT に手で戻す必要があります。改行の 2 種類と強制スペースだけが、削除ではなく変換される数少ない ASS の記法です。

看板と台詞が VTT では同時刻の cue になります

ASS は複数のレイヤーを使って画面上に同時に複数の行を意図的に置けます。下部の台詞と、それが説明する対象の上に重ねた翻訳看板です。WebVTT にレイヤーはなく、どちらも同じ秒数を占める普通の cue になります。

ブラウザーはこれを動画下部への積み重ねとして処理します。理屈は通りますが、意図とはたいてい違います。画面右上にあるはずの看板が、2 秒間台詞の上に重なって表示されます。上で述べた cue 設定で配置するか、ウェブ版には看板は不要だと判断して該当する cue を削除してください。装飾の多い作品では、削除するほうが誠実な答えであることが多いです。

WEBVTT ヘッダーがなければファイルは読み込まれません

WebVTT ファイルは 1 行目に単独で WEBVTT という語を持たなければなりません。これは説明書きではなく、ないファイルは他の何を確認するより先に拒否されます。この変換は WEBVTT を書き、空行を挟んでから cue を続けます。

タイムスタンプももう 1 つの要件です。ASS は 100 分の 1 秒まで記録し、WebVTT はピリオドのあとにミリ秒を 3 桁で書くので、0:00:01.23 から始まる行は時間の桁を補って 00:00:01.230 になります。精度を新しく作り出しているわけではなく、記録されたタイミングをそのまま、より長い表記で表しているだけです。

ファン翻訳の字幕は subtitles であり、字幕とキャプションは別物です

track 要素の kind 属性はこの 2 つを区別し、その区別はマークアップにとどまらない意味を持ちます。subtitles は音を聞いて台詞を理解できる視聴者を前提にします。captions は音が聞こえない視聴者を前提にし、台詞以外の情報——画面外の話者、音楽の始まり、物音——を含みます。

変換された ASS のトラックは、そう作られている以上ほぼ常に subtitles です。アクセシビリティのチェックリストを満たすために captions と表記しても、マークアップの語句が正しくなるだけで、義務を満たしたことにはなりません。公的機関や増えつつある企業にとってこの義務は法的なものです。captions が必要なら台詞以外の情報を書き足す必要があり、どの変換もそれを生成しません。

強制改行は VTT の cue で本物の改行になります

ASS はカンマ区切りの 1 フィールドに行全体を収める必要があるため、台詞の中の強制改行をバックスラッシュと大文字の N で表します。これは削除ではなく変換され、cue のテキストの中の本物の改行になります。WebVTT は cue 内の改行を、著者が意図した区切りとして扱うので、2 行の字幕は同じ場所で 2 行のまま残ります。

その改行が何のためだったのか確認する価値があります。タイポグラファーは特定の画面サイズでの表示を前提に改行しますが、ブラウザーは視聴者が変更したかもしれない別のサイズ、別のフォントで表示します。1080p の映像を前提に 2 行のバランスを取った改行が、スマートフォンでは単語が 1 つだけ取り残される結果になることがあります。ソフト改行——小文字の n で表され、ASS の描画側が自由に折り返せる——を使っていた場合も、同じ本物の改行になり、任意だったはずの改行が VTT では作者が強制したものとして届きます。

焼き込みか、ウェブでの素の字幕を受け入れるか

スタイルが本質的に重要な場合——プロットに関わる看板、カラオケ、演出そのものが作品の一部である場合——誠実な選択肢は 2 つです。字幕を映像に焼き込んで配布するか、JavaScript で動くレンダラーを使い ASS を動画の上に描画するかです。どちらも代償があります。前者は字幕を選択も無効化もできなくし、後者はライブラリと実行コスト、スクリプトが有効であることへの依存を加えます。

ほとんどのウェブ動画では、どちらも必要ありません。表示され、選択でき、オフにでき、スクリーンリーダーが読める素の cue のほうが、一部の視聴者にしか見えないデザインより多くの視聴者に価値があります。変換し、必要な数箇所の cue だけ配置し、トラックを CSS でスタイルし、見た目が重要なバージョンのためのマスターとして ASS を残しておいてください。

ASS を VTT に変換する手順

  1. お手元の ASS ファイル をこのページに落とすか、押してファイルを選んでください。
  2. 変換先に VTT を選びます。変換はブラウザーの中で行われ、ファイルはアップロードされません。
  3. できあがった VTT ファイル をダウンロードします。

ASS と VTT——何が変わるか

ASSとVTTの比較
ASSVTT
正式名称Advanced SubStation AlphaWebVTT
拡張子.ass, .ssa.vtt
メディアタイプtext/x-ssatext/vtt
最初の公開20022010
発行元W3C
仕様WebVTT
ライセンスオープン標準オープン標準
現在の位置づけ現行現行
ブラウザで開けるか対応なしすべてのブラウザ
代わりに検討される形式SRTSRT

結果を開く

VTT は今のブラウザーならどれでも開けます。ASS はそこまでも届きません。ファイルがウェブページや申込フォームへ向かうのであれば、たいていはそれがこの変換の理由のすべてです。

VLCは ASS と VTT のどちらも読めるので、別のプログラムを開かずに、結果を元のファイルと並べて確かめられます。

どちらの形式が何のためのものか

VTT は W3C の形式で、2010 年から使われています。規定は WebVTT です。VLCとSubtitle Editがこの形式を読めます。

ASS から VTT:よくある質問

ASS ファイル はどこかにアップロードされますか。

いいえ。この変換は完全にブラウザーの中で行われるので、ファイルが端末から出ることはありません。ご自分で確かめられます。開発者ツールのネットワークタブを開いて、何か変換してみてください。ページそのものと、このサービスの費用をまかなっている分析・広告のリクエストは見えますが、あなたのファイルを運んでいるリクエストはひとつもありません。

ASS から VTT への変換は無料ですか。

はい。アカウントも透かしもなく、消費される 1 日の割り当てもありません。お使いの機械の上で動くので、何度でも戻ってきていただけます。ブラウザーが扱えるのは 100 MB までのファイルで、一度に 100 本です。

ASS を VTT に変換すると品質は落ちますか。

ASS と VTT は、内容の表し方が根本から違います。ですからこの変換は複製ではなく再構築です。誠実ではありますが、1 バイトも同じというわけではありません。 位置指定、フォント、効果は失われます。残るのは文字とその時刻だけです。

できあがった VTT ファイル を開くのに、何かインストールが必要ですか。

変換には要りません。すでに開いているブラウザーの中で行われます。そのあと結果を開くには、お使いの端末がふだん WebVTT を表示するのに使っているソフトが必要です。

これらのフォーマットについて