YouTubeのJSON3字幕をSRT・VTT・LRCへ変換する方法
YouTube字幕をJSON3でダウンロードし、SRT、VTT、LRCへ変換する手順を解説。yt-dlp、JSON3の構造、無料のブラウザ内変換まで網羅しています。
YouTubeから字幕を取得するとき、最も生のデータに近い形式がJSON3です。これはYouTube内部で使われる構造化されたtimedtext形式で、ミリ秒単位の時間、単語単位のオフセット、複数のテキストセグメントまで保存できます。ただし、YouTube以外のほとんどのソフトウェアはJSON3を読み取れません。このガイドでは、JSON3字幕の取得方法と、目的のツールが求めるSRT・VTT・LRCへの変換方法を説明します。
JSON3形式とは
JSON3は、YouTubeが字幕の保存と配信に使用するJSONベースのtimedtext形式です。各字幕キューはイベントオブジェクトとして表され、ミリ秒単位の開始時刻(tStartMs)、継続時間(dDurationMs)、1つ以上のテキストセグメント(segs)を持ちます。セグメントにはtOffsetMsという単語単位のオフセットを含められ、カラオケ風の精密な同期にも使えます。
JSON3は純テキストではなく構造化JSONであるため、一般的なプレイヤーが扱うどの字幕形式よりも多くのタイミング情報を保持できます。忠実度を重視するなら最高のダウンロード形式であり、そのままプレイヤーへ渡すには最も不向きな形式でもあります。解決策はシンプルで、JSON3として保存してから目的の形式へ変換します。
YouTube字幕をJSON3でダウンロードする方法
方法1:yt-dlp(推奨)
最も信頼できる方法は、活発にメンテナンスされているyt-dlpです。プレイリストやチャンネルにも対応します。動画本体をダウンロードせず、英語の自動生成字幕だけをJSON3形式で保存するには次のように実行します。
yt-dlp --write-auto-subs --sub-lang en --sub-format json3 --skip-download "https://www.youtube.com/watch?v=VIDEO_ID"
実行すると、現在のフォルダに.json3ファイルが作成されます。人が編集した字幕トラックがある場合は、精度が高い方を取得するため--write-auto-subsを--write-subsに置き換えてください。
方法2:YouTube timedtext API
YouTubeのtimedtextエンドポイントは、JSON3を直接返せます。動画IDと言語コードを指定して、次のようなURLを作成します。
https://www.youtube.com/api/timedtext?v=VIDEO_ID&lang=ja&fmt=json3
ブラウザでJSON3ペイロードを取得できます。自動生成字幕には追加パラメータが必要な場合があり、YouTubeがこのエンドポイントの利用を一部制限することもあります。
方法3:ブラウザ拡張機能
いくつかの拡張機能はYouTubeページにダウンロードボタンを追加し、JSON3やVTTで字幕を書き出せます。単発の保存には便利ですが、言語トラックと出力形式の細かい制御ではyt-dlpに劣ります。
JSON3を変換する理由
標準のメディアプレイヤー、動画編集ソフト、歌詞アプリはJSON3を読み込みません。出力先ごとに適した形式を選んでください。
- SRTは互換性を最優先する場合の選択肢です。デスクトッププレイヤー、スマートTV、スマートフォン、編集ツールのほとんどが読み取れます。
- VTTはWeb動画向けです。WebVTTはHTML5字幕のW3C標準であり、Webプレイヤーに組み込むなら最適です。
- LRCは同期歌詞向けです。ミュージックビデオの字幕を音楽プレイヤーで歌詞として流したい場合に使います。
変換ワークフロー
- JSON3ファイルをダウンロードする。yt-dlpまたはtimedtext APIで字幕トラックを保存します。
- 変換先を選ぶ。利用場所に応じてJSON to SRT、JSON to VTT、JSON to LRCを使います。
- アップロードして変換する。変換はすべてブラウザ内で実行され、ファイルは端末の外に出ません。
- ダウンロードして確認する。保存したファイルをテキストエディタで開くか、動画と一緒に再生して時間軸を確認します。
変換時にタイミング情報はどうなるか
JSON3は字幕形式の中で最も豊富なタイミング情報を持つため、変換時には一部が簡略化されます。
- 単語単位のオフセット(
tOffsetMs)は、SRT・VTT・LRCが持つキュー単位の開始・終了時刻へ集約されます。 - ミリ秒精度はSRTとVTTでは保持されます。LRCはセンチ秒精度のため、百分の一秒単位に丸められます。
- 終了時刻はSRTとVTTでは保持されますが、開始時刻だけを記録するLRCでは削除されます。
実際の運用では、これらの損失が読みやすさに影響することはほぼありません。各字幕行の開始と終了はフレームに迫る精度で保たれます。
よくある問題と対処法
- JSON3が空、または極端に小さい。指定言語の字幕が存在しないか、自動字幕が無効になっています。
--sub-langの言語コードを変えるか、CCボタンで利用可能なトラックを確認してください。 - 自動字幕の時間がずれる。機械生成字幕は、長い動画では特に近似値になります。人が編集したトラックがあれば、そちらの方が正確です。
- 特殊文字が正しく表示されない。JSON3はUTF-8です。変換後のファイルを開くツールもUTF-8として読み込むことを確認してください。
- 複数の言語トラックが保存された。yt-dlpの
--sub-langで必要なトラックだけを指定してください。
プライバシーとファイルの安全
字幕ファイルには機微な内容が含まれることがあります。yt-dlpのようなローカルツールでダウンロードし、ブラウザ内で変換すれば、ワークフロー全体が自分の端末で完結します。アップロードも外部サーバーもなく、JSON3と変換結果が端末の外に出ることはありません。
変換する準備はできました
JSON3はYouTube字幕を最も忠実に保存できる形式です。これをSRT・VTT・LRCへ変換すれば、実際のプレイヤーや編集環境でそのまま使えます。目的に合ったコンバータを選ぶだけで、残りの処理は数秒です。
YouTubeのJSON3字幕をすぐ使える字幕ファイルに変換しましょう。
今すぐJSON3をSRTへ変換