メインコンテンツへスキップ
SubtitleMatrix

PGS(SUP)を SRT に変換

メディア入力ビットマップ字幕(PGS / VobSub)

初回は文字認識エンジン(約4 MB+言語モデル)をダウンロードします。このサイトから配信され、以降はブラウザにキャッシュされます。アップロードは行われません。結果は機械が読み取ったものなので、利用する前に校正してください。

オプション

ビットマップ字幕は文字を画像にしたものなので、単語を読み取る必要があります。読み取り側に、字幕が実際に書かれている言語を伝えてください。選択肢にはこのサイトが提供しているすべての言語が並んでいます。ロシア語の字幕を英語のモデルで読むと、ロシア語ではなく雑音になります。選んだモデルだけをダウンロードし(他はダウンロードされません)、切り替えのコストは言語ごとの1回だけで、その後はキャッシュされます。

.sup ファイルは PGS ストリームで、Blu-ray ディスクが使う画像字幕の形式です。中に文字は 1 つもありません。各字幕はビットマップとして保存され、パレットと表示されるべき瞬間を伴い、プレーヤーが動画の上に合成します。したがって文字を取り出すには、各画像の文字を読むことになります。この頁はそれをタブの中で、サイトが自ら配信する OCR エンジンで行い、結果を .srt として書き出します。処理はすべてブラウザ内で完結し、ファイルはどこにも送信されません。初回だけ約 4 MB の読み取りエンジンと選んだ言語のモデルをダウンロードし、以降はブラウザのキャッシュから読みます。

形式はセグメントの並びで、各セグメントは 13 バイトのヘッダーを持ち、90 kHz 単位の表示タイムスタンプ、種類、長さを運びます。重要な種類は 4 つです。パレット定義(PDS)は添字を YCbCr 経由で RGB に対応づけ、オブジェクト定義(ODS)は 1 つのランレングス符号化ビットマップを保持し、表示構成(PCS)はどのオブジェクトが画面のどこに座るかを述べ、表示セットがそれらを積みます。cue の開始はそれを表示する表示セットのタイムスタンプです。PGS ストリームは終了時刻をまったく持ちません。字幕は次の表示セットが置き換えるまで画面に残るので、ここでの各 cue の終了は次の cue の開始であり、それはプレーヤーがすることと同じです。

すべての cue が機械に読まれるので、テキストは転記ではなく読み取りです。小さいサイズのセリフ体、変わったフォント、太い輪郭は、ある文字を別の文字に変え得ます。頼る前にファイルを校正してください。この注意は定型文ではありません。このサイトで出力がファイルの言ったことから導かれない唯一の場所であり、頁は結果を正確なものとして提示せずにそう述べます。

字幕が実際に書かれている言語を選んでください。選択肢にはこのサイトが提供しているすべての言語が並び、各モデルはそれぞれの文字を読みます。日本語字幕に英語モデルを走らせると、悪い翻訳ではなく雑音が出ます。認識器はそこにない形を探しているからです。ダウンロードされるのは選んだモデルだけで、その後はキャッシュされます。

画像からテキストがまったく出なかった cue(フェードの途中のフレーム、ロゴ、真っ黒な cue)は、空行として書かずに省き、損失一覧に数えます。画像だったものは精神としても画像のままです。フォント、色、輪郭、画面上の位置は .srt に存在せず、損失一覧がファイル全体に対して一度そう述べます。

よくある質問

.sup ファイルの何が SRT への変換を認識作業にするのですか?

文字ではなくセグメントです。PGS ストリームの各字幕はオブジェクトで、パレット添字のランレングス符号化ビットマップと、その添字を RGB に変えるパレット定義から成ります。ファイル内でテキストらしい値は表示タイムスタンプだけで、これは人が読むものではなく 90 kHz の整数です。それを SRT に変換するには各ビットマップをキャンバスに置いて文字を認識する必要があり、だから結果に校正が要り、頁が字幕の言語を尋ねます。

出力の最後の字幕だけ、本来より数秒遅く終わるのはなぜですか?

PGS が字幕の終了を決して述べないからです。プレーヤーは次の構成が来るかストリームが消えるまで表示を続けるので、ファイルに存在する終了時刻は「次の cue の開始」だけです。最後の cue には次がありません。頁はそれに 2 秒を与え、その選択を損失一覧に記録します。ディスクが本当に最後の行を 10 秒出していたなら、正直な直し方はシフトか表示時間の編集で、変換器に隠した推測ではありません。

日本語と英語の行が混ざる字幕ではどの言語モデルを選ぶべきですか?

セリフの大半が使っている言語です。PGS のフレームは 1 行の中で文字体系を混ぜられ、日本語の文に英単語がラテン文字で打たれているのはよくあります。しかし認識器は 1 回の実行につき 1 つのモデルを与えられ、ある文字体系で訓練されたモデルは別の文字体系をゴミとして読みます。ファイルが本当に 2 つの文字体系を交互に使うなら、言語ごとに 2 回実行し、各回が正しく取れた行を残してください。出力は普通の .srt なので、2 つを結合するのは再書き出しではなく差分作業です。

字幕の色は SRT に引き継がれますか?

いいえ、できません。.sup は色を 3 重に符号化します。cue ごとのアルファ付き YCbCr のパレット、1920×1080 のフレームのどこにビットマップが座るかの構成、そしてビットマップ自体に描かれた輪郭と影です。SRT にはそのどれの枠もありません。頁は OCR に必要なだけ、各画素の輝度を読んで何がインクで何が背景かを決め、損失一覧はファイル全体に対して一度だけ書式の損失を報告し、色が残ったふりはしません。

いくつかの cue が空で出たか、欠けていました。何が起きたのですか?

テキストを生まなかった画像は、空の字幕として書かずに落としました。フェードインとフェードアウトのフレーム、ロゴや記号だけの cue、認識器が解像できないほど小さい文字で起こります。どれも損失一覧に数えられるので、受け取るファイルが渡したファイルより黙って短くなることはありません。数が多いときの普通の原因は、言語モデルの選択違いか、ビットマップが異常に小さいストリームです。

.sup ファイルやその画像はどこかへ送信されますか?

されません。認識器はタブの中で動き、そのワーカー、WebAssembly のコア、言語モデルはすべてこのサイトから配信されブラウザがキャッシュします。頁が行う要求はそれらのファイルのためだけです。これはテキストの頁より重要なことです。ディスクから抽出した PGS ストリームは、スタジオや弁護士が第三者に最も渡したがらない素材であることが多く、この頁の要点は渡さなくてよいことだからです。

関連ツール