本文へ移動

字幕の同期がズレる問題を直す:一定オフセットとドリフトへの対処法

1 min read 1 views 最終更新: 8月 2, 2026
A television on a stand showing a paused frame, a remote control on the arm of a sofa

要点

動画の始めのあたりのセリフと、終わりのあたりのセリフを確認する。両方が同じくらいズレていれば、それは一定のオフセットで、ファイル全体をそのズレの分だけ動かせば直る。始めはほぼ合っているのに終わりに近づくほど大きくズレている場合は、ドリフトであり、たいていはフレームレートの不一致が原因で、シフトではなくタイミングそのものを比率で調整する必要がある。ドリフトしているファイルをシフトしても、ズレがゼロになる位置が移動するだけで、問題自体は解決しない。

字幕がズレるというと一つの現象のように思えるが、実際には無関係な二つの原因のどちらかであることがほとんどだ。一つは単純な固定のズレで、最初のセリフから最後のセリフまで、すべての行が同じ数秒だけ遅れている場合。もう一つは徐々に広がっていくズレで、冒頭は問題なく合っているのに、終盤になると字幕がセリフの一文か二文分遅れてしまっている場合だ。

片方の直し方はもう片方には効かず、無理に当てはめるとかえって別の分かりにくいズレを生んでしまうことがある。ただ幸い、どちらのタイプかを見分けるのに30秒もかからないし、原因が分かれば直し方自体はすぐに終わる。

30秒で見分ける方法

動画の始めのあたりでセリフを一つ再生し、字幕がどれくらいズレているかを確認する。0.5秒遅い、3秒早い、どんな数字でも構わない。次に終わりのあたりまで飛んで、そこでも一行確認する。これだけでチェックは完了だ。

始めのズレと終わりのズレが、ほぼ同じ大きさで同じ方向であれば、それは一定のオフセットだ。ファイル全体をそのズレの分だけ動かせば、どこでも正しく合うようになる。

始めのズレがほとんどないか小さいのに、終わりのズレが明らかに大きい場合は、それはドリフトだ。動画が進むにつれてズレが大きくなっているということは、これは単なる遅延ではなく、字幕ファイルが想定していた再生速度と、実際の動画の再生速度が違うということを意味している。

一定オフセットの直し方

一定のオフセットは二つのうち直しやすい方であり、より多く見られる原因でもある。誰かが字幕トラックより数秒早く(あるいは遅く)動画を再生し始めた、あるいはファイルを書き出す際に小さな遅延が組み込まれてしまった、といったことが理由だ。ファイル内のすべてのタイムスタンプが同じ一定量だけズレているので、直し方は単純な計算になる。字幕が早すぎる場合はすべてのキューにその分の時間を加え、遅すぎる場合はその分を引く。

字幕ファイルは行ごとに、各キューの開始時刻と終了時刻としてタイミングを保存している。シフトはどの行のテキストにも触れず、それに付いている数値だけを動かすので、文言や話者の区切りなど、他の部分はすべてそのまま残る。タイムシフトツールはまさにこの作業を行うもので、ズレの量と方向を入力すれば、行を一つずつ手作業でずらす代わりに、ファイル内のすべてのキューに同じ調整を一度に適用してくれる。

後ろ方向にシフトしたときはファイルの先頭に注意

ファイル全体を大きく前方向(すべてのキューを早める方向)にシフトする場合は、最初のキューがどうなるかを確認してほしい。もし開始時刻がゼロに近かった場合、シフトによって開始時刻がゼロより小さくなってしまうことがあり、これは無効なタイムスタンプになる。負の開始時刻に対するプレイヤーの挙動はまちまちで、ゼロに補正するものもあれば、その行をスキップするもの、ファイル自体を読み込まないものもある。大きく前方向にシフトした後は、他の部分を信用する前に、まず1番目のキューを開いて確認しておくこと。字幕バリデーターを使えば、生のファイルをスクロールして探す代わりに、負のタイムスタンプを自動で検出してくれる。

字幕が「遅れる」のではなく「ズレていく」のはなぜか

ドリフトはオフセットより不思議に感じられる。理由もなく悪化していくように見えるからだが、実際の原因はありふれたものだ。字幕ファイルが、今実際に見ている動画とは異なるフレームレートで再生される版に合わせてタイミングを作られている、というだけのことだ。フレームレートとは動画が1秒間に表示するフレーム数のことで、字幕のタイミングがあるフレームレートを前提にしているのに、動画自体は別のフレームレートで再生されていると、時間が経つごとに少しずつズレが広がっていく。始めのうちはズレがごく小さく気づきにくいが、2時間の映画の終わりには数秒単位のズレになっていることもある。

典型的な組み合わせは、24フレーム/秒でマスターされた映画と、25フレーム/秒で放送される版だ。どちらの数字も単体としては間違っていない。同じ内容の異なるマスターというだけであり、片方に合わせて作られた字幕ファイルは、もう片方の上ではわずかに先行するか遅れるかし、それが再生時間とともに積み重なっていく。

フレームレート変換でドリフトを直す

ドリフトは速度の不一致であり、固定のズレではないので、シフトでは直らない。シフトはファイル全体を一定量だけ早めるか遅らせるかするだけであり、ドリフトは一定量ではなく、動画のどこまで進んだかに比例して大きくなるものだからだ。ドリフトしているファイルをシフトすると、たまたま始めと終わりが同時に正しく見えることもあるが、中間部分は依然としてズレたままになる。それはズレを解消したのではなく、単に移動させただけだからだ。

ドリフトに実際に必要なのは、すべてのタイムスタンプを一定量ずらすことではなく、比率に応じて伸縮させることだ。字幕ツールの中には、これをそのまま「フレームレート変換」として提供しているものがある。ファイルが想定していたフレームレートと、動画が実際に再生されているフレームレートを入力すれば、固定の数値を足し引きする代わりに、その比率に基づいてすべてのキューのタイミングを再計算してくれる。使っているツールが単純なシフトしか提供していない場合は、フレームレートまたは速度変換のオプションを探すこと。それが固定のズレ用ではなく、この種の不具合のために作られた機能だ。

オフセットでもドリフトでもない場合

ファイルの一部だけがズレているというケースもある。最初の20分は完全に合っているのに、途中の一区間だけズレていて、その後また合ってくる、あるいはその逆、というような場合だ。このパターンはオフセットでもドリフトでもない。どちらも、ファイル全体に予測可能な形で、しかも徐々に大きくなる形で影響するものだからだ。一部は合っていて一部だけズレている字幕ファイルは、たいてい異なるバージョンの動画に合わせて作られたものだ。シーンが追加された版、広告が削除された版、あるいは途中の一部だけ数分長い監督編集版、といった場合だ。

これはシフトでもフレームレート変換でも直らない。字幕が想定している元の内容と、実際に見ている内容自体が違うからだ。あるバージョン用の字幕ファイルを別のバージョン用に変換する計算式など存在しない。余分な、または欠けている映像の分は、それが実際に発生している箇所で個別に対処する必要があり、たいていの場合は、自分が持っている版に合わせて作られた字幕ファイルを見つけるか、その一区間だけ手作業でタイミングを直すことになる。

手元にあるのが音声や動画そのものだけで、それに合う字幕ファイルが一切存在しない場合は、古いファイルを無理に調整するより、元の音声・動画から新しくタイミングを作り直す方が簡単なこともある。字幕コンバーターは、使えるファイルがすでにある場合の形式の違いを処理してくれるが、まだ存在しないタイミングを新しく作ることはできない。そのためには音声自体を文字化してくれるものが必要で、SozAIのような文字起こしアプリはまさにそれを行う。誰か他の人のファイルを無理に合わせようとするのではなく、手元にある実際の音声や動画をもとに、独自のタイミング付きのテキストを生成してくれる。

どちらの原因か判断がつかないときに知っておくこと

すべてのズレが、きれいなオフセットかきれいなドリフトのどちらかに分類できるわけではない。小さなオフセットと小さなドリフトが重なっているファイルもある。間違ったフレームレートでタイミングが作られている上に、さらに1秒遅れて再生を始めてしまった、といったケースだ。その場合、始めと終わりだけを確認すると誤解を招くことがある。二つの誤差が方向によって打ち消し合ったり、逆に足し合わさったりするからだ。始めと終わりの数字がはっきりしない場合は、動画の中間あたりでも三点目を確認してみること。本当のオフセットであれば三点すべてでほぼ同じ大きさのままであり、本当のドリフトであれば三点すべてで着実に大きくなっていくので、三点目のデータがあれば、どちらの原因かがたいてい判断できる。

また、字幕のファイル形式自体はこの問題に一切関係しないことも知っておくとよい。ファイルがどの形式であるかは、タイミングやテキストの書き方に影響するだけで、詳しくは字幕形式の比較で説明しているが、原因がオフセットなのか、ドリフトなのか、バージョンの不一致なのかということには関係しない。まずは今のファイル形式のまま同期を直し、形式の変換が本当に必要な場合にだけ、その後で行うようにしよう。

最後に、確認せずにシフトやフレームレート変換を何度も連続して適用してしまうと、目で見て元に戻せるとは思わない方がいい。一つ一つの調整はそれ自体単純だが、シフトの上にフレームレート変換を重ね、さらにその上にもう一つシフトを重ねる、というように、その都度当てずっぽうで作業を続けると、どちらの原因ともきれいに一致しない、別の種類のズレを生んでしまうことが多い。何度も重ねてから確認するのではなく、一つ変更するごとに確認すること。

回答

Frequently Asked Questions

字幕がオフセットしているのかドリフトしているのか、どうやって見分ければいいですか?

動画の始めのあたりのセリフと、終わりのあたりのセリフを確認してみてください。両方が同じくらいズレていれば、それは一定のオフセットです。始めはほぼ合っているのに終わりが大きくズレている場合は、動画が進むほど誤差が大きくなっているということなので、それはドリフトです。

動画が進むほど字幕のズレが大きくなるのはなぜですか?

これはドリフトと呼ばれる現象で、たいていは字幕ファイルが、実際に見ている動画とは異なるフレームレートの版に合わせてタイミングを作られていることが原因です。よくある組み合わせは24フレーム/秒と25フレーム/秒です。この不一致は時間が経つほど積み重なっていき、固定のズレのように一定にはなりません。

ファイル内のすべての字幕を同じ量だけシフトするにはどうすればいいですか?

手作業で一行ずつ直すのではなく、専用のツールを使ってください。シフトはファイル内のすべてのタイムスタンプに対して一貫して適用する必要があるためです。ズレの量と方向を入力すれば、テキストには触れずに、すべてのキューの開始時刻と終了時刻を一度に再計算してくれます。

字幕の開始時刻が負の値になってしまったらどうなりますか?

負のタイムスタンプは無効な値であり、プレイヤーによって扱いが異なります。ゼロに補正するもの、その行を完全にスキップするもの、ファイル自体を読み込めないものなどがあります。これは大きく前方向にシフトした後に起こりやすいので、シフトを行った後は必ず最初のキューを確認してください。

映画の中盤だけ字幕がズレている場合、直せますか?

シフトやフレームレート変換では直せません。どちらもファイル全体に均一に影響するものだからです。始めと終わりは合っているのに中盤の一区間だけズレている場合は、たいてい別のバージョンの動画(シーンが追加されたり削除されたりした版)に合わせて作られた字幕ファイルであることが原因です。

字幕ファイルをシフトすると、字幕の言葉自体は変わってしまいますか?

いいえ。シフトは各行に付いているタイムスタンプ、つまり各キューの開始時刻と終了時刻だけを変更するもので、テキストや話者の区切りなど、その他の内容はすべてそのまま残ります。字幕の文言自体には何の影響もありません。

Merey Tleugazin

SozAIの創業者。世界中のプロに向けて、音声をテキスト化するツールを開発中。

SozAI
SozAI — 無料ダウンロード音声・動画をすぐに文字起こし
アプリを入手