2枚の字幕文書の横で、字幕キューのカードが動画のタイムラインに沿って並んでいる。
キューの時刻を維持し、保存したファイルを再生して確認します。

字幕キューとは、表示の開始時刻と終了時刻を持つ1つのテキストブロックです。SRT(SubRip Text)では、ミリ秒の前にカンマを使います。VTT(WebVTT)は`WEBVTT`ヘッダーで始まり、ミリ秒の前にピリオドを使います。UTF-8は、特殊文字を損なわずに保存できる標準的な文字コードです。Actorはウェブデータを収集するプログラムで、TaskはActorの入力設定を保存したものです。

字幕の抽出には、YouTube Transcript Scraper Actorを使います。SRT形式とVTT形式に加えて、JSON形式も指定してください。生のJSON出力には、各セグメントのフィールドとして`startSeconds`、`endSeconds`、`durationSeconds`、`text`が含まれます。字幕の生の文字列だけを、UTF-8のテキストファイルとして保存してください。データセット全体をCSVとして書き出したり、`\n`という文字を含むエスケープされたJSON文字列のまま保存したりしないでください。処理に失敗した入力は、データセットの行ではなく、実行結果のOUTPUTに表示されます。1つの字幕トラックを使ったテスト実行では、取得を検証するために61個のキューを保存しました。ただし、ご自身のプレーヤーで再生を確認する必要があります。

時間情報付きの字幕がまったく存在しない場合は、ファイルを検証する前にYouTube字幕抽出ガイドを確認してください。

変換と検証の全手順

  1. 動画と言語を確認する:動画のURLと選択した言語を確認します。元のJSONキューと取得元のURLを保存してください。
  2. 出力形式を指定する:JSON、SRT、VTT形式を指定します。処理が成功した行があり、セグメントが空でないことを確認してください。字幕を取得できない場合は、リンク先の取得ガイドを使ってください。時間情報のないテキストから終了時刻を作り出さないでください。
  3. ファイルを保存する:`srt`フィールドの内容全体を`lesson.srt`にコピーするか、`vtt`フィールドの内容全体を`lesson.vtt`にコピーします。文字コードをUTF-8に設定したプレーンテキストエディターを使ってください。JSONの引用符、文字としての`\n`、CSVのセルを残したり、ファイル名の末尾に`.txt`拡張子を付けたりしないでください。
  4. 構文を確認する:SRTではキュー番号を付け、ミリ秒の前にカンマを使います。VTTは`WEBVTT`とその後の空行で始まり、ミリ秒の前にピリオドを使います。どちらの形式も、キューの間を空行で区切り、開始時刻と終了時刻の間に`-->`を使います。終了時刻が開始時刻より後になっていることと、キューの開始時刻が前のキューより早くなっていないことを確認してください。時間の重複が正しい場合もあるため、自動で削除せず、再生して確認してください。
  5. 動画の再生を確認する:最初、中間、最後のキューを、動画プレーヤー上の映像や音声と照らし合わせます。アクセント記号、改行、長い行を確認してください。書式の確認に合格しても、画面上のタイミングやテキストが誤っている場合があります。
  6. 時間のずれを修正する:すべてのキューが同じ一定時間だけ遅れている場合は、手元の動画でイントロが削除されていないか確認します。その特定の動画に対してのみ、開始時刻と終了時刻の両方を、ずれと正確に同じ時間だけ移動してください。時間の経過とともにずれが大きくなる場合、一定時間の移動では修正できません。ずれが次第に大きくなる場合は、未検証のフレームレート変換を適用せず、正しい時間情報を持つ元の字幕に戻ってください。
  7. 最終ファイルを保存する:元のキューと、承認された時刻変更の記録を保存してください。

架空のサンプルファイル

秒単位の時刻を持つ3個のキューを使った簡単な例を示します。

  • キュー1:`0.250`秒から`2.750`秒 — 「設定を開いてください。」
  • キュー2:`3.000`秒から`5.500`秒 — 「Françaisを選んでください。」
  • キュー3:`6.000`秒から`8.125`秒 — 「変更を保存してください。」

SRTファイルの全内容

srt
1
00:00:00,250 --> 00:00:02,750
Open the settings.

2
00:00:03,000 --> 00:00:05,500
Choose Français.

3
00:00:06,000 --> 00:00:08,125
Save the change.
架空のサンプルファイル

VTTファイルの全内容

vtt
WEBVTT

00:00:00.250 --> 00:00:02.750
Open the settings.

00:00:03.000 --> 00:00:05.500
Choose Français.

00:00:06.000 --> 00:00:08.125
Save the change.
架空のサンプルファイル

ミリ秒を区切る記号は、SRTではすべてカンマ(`00:00:00,250`)、VTTではすべてピリオド(`00:00:00.250`)になる点に注意してください。

計算の内訳

小数で表した秒をミリ秒に変換するには、1,000を掛けます。たとえば、`0.250`秒は`250`ミリ秒になり、`8.125`秒は`00:00:08.125`になります。

  • 各キューの表示時間は、2.500秒、2.500秒、2.125秒です。
  • キューが実際に表示される時間の合計は7.125秒です(`2.500 + 2.500 + 2.125`)。
  • 字幕全体の開始から終了までの時間は7.875秒です(`8.125 - 0.250`)。これにはキュー間の空白時間も含まれます。

どちらの合計値も、テキストの正確さや読む速さを測るものではありません。

時間のずれを修正する別の例

別の動画コピーで、1.000秒のイントロが削除されている場合を考えます。その動画で元の開始時刻と終了時刻が`10.250–12.750`秒だったキューは、1.000秒を引くと`9.250–11.750`秒になります(`10.250 - 1 = 9.250`、`12.750 - 1 = 11.750`)。

この時刻の移動を、最初の三つのキューを使ったサンプルファイルに適用しないでください。最初のキューの開始時刻(`0.250`)から1.000秒を引くと、無効な負の開始時刻(`-0.750`)になってしまいます。元のファイルは変更せずに保存し、時刻を移動したファイルは使用前に動画プレーヤーで確認してください。

出典と参考資料

著者 Chronometrica · 更新日

ページの先頭へ ↑