重要ポイント
SRTファイル(SubRip Subtitle、拡張子
.srt)は、字幕を記録したプレーンテキストのファイルです。番号付きのブロックが並び、それぞれに時:分:秒,ミリ秒の形式で書かれた開始時刻と終了時刻、そして表示するテキストが入っています。映像も音声も含まず、どんなテキストエディタでも開け、ほぼすべてのプレーヤーと動画プラットフォームで受け付けられます。手で書くことも、プレーンテキストから生成することも、文字起こしから書き出すこともでき、アップロードする前にチェッカーで確認しておくと安心です。
動画プレーヤーで字幕をオンにしたことがあるなら、その裏ではSRTファイルが働いていた可能性が高いでしょう。SRTは、今も日常的に使われている字幕形式の中で最も古いものの1つで、数あるファイル形式の中でもとびきりシンプルです。だからこそ、どこにでもあります。
このページでは、形式の全体を1か所にまとめます。ファイルの中身、各部分の正確なルールとその一次情報、作成と修正の方法、そしてWebVTTとの違いです。
SRTファイルの中身はどうなっている?
SRTファイルはキューの一覧で、どのキューも同じ4つの部分でできています。連番、タイミング行、1〜2行のテキスト、そして空行です。.srt ファイルをメモ帳やTextEditで開くと、次のようなブロックが見えます。
1
00:00:01,600 --> 00:00:04,200
チャンネルへおかえりなさい。
2
00:00:04,400 --> 00:00:07,900
今日は字幕ファイルが
実際にどう動くのかを見ていきます。
3
00:00:08,100 --> 00:00:10,000
<i>(ドアが閉まる音)</i>上から読むと、2番目のキューは「動画の4.4秒から7.9秒まで、この2行を表示する」という意味です。ヘッダーもスタイルの記述部分もバイナリデータもないので、ファイルは小さいままで、ほぼどんなプログラムで開いて編集して保存しても壊れません。
SRT形式のルールは?
SubRipの仕様書に最も近いものは、アーカイブやコンテナ形式が保管している解説です。米国議会図書館のフォーマット解説は、タイムコードを「時:分:秒,ミリ秒」、つまり 00:00:00,000 と書き、開始と終了の間に矢印 --> を置くとしています。Matroskaの字幕ドキュメントも、同じ4部構成のブロックを説明しています。
| 部分 | ルール | 例 |
|---|---|---|
| 連番 | 単独の行に書く整数で、1から始めて順に増やす | 2 |
| タイミング行 | 開始と終了を「時:分:秒,ミリ秒」で書き、両側にスペースを入れた --> で区切る | 00:00:04,400 --> 00:00:07,900 |
| ミリ秒の区切り | カンマを使う。ピリオドではない(ピリオドはWebVTTのもの) | ,400 |
| テキスト | 一緒に表示される1行以上の行。ファイル内の改行は、画面上でも改行になる | 今日は字幕ファイルが |
| 空行 | キューを終わらせる。次の番号が次のキューを始める | (空の行) |
| 書式 | <i>、<b>、<u> のような単純なタグ。多くのプレーヤーが対応し、対応しないものもある | <i>(ドアが閉まる音)</i> |
ほかのすべてを合わせたよりも多くのファイルを壊す細部が2つあります。1つ目はカンマです。00:00:04.400 のようにピリオドで書いたタイミング行はWebVTTの癖で、SRTでは受け付けないツールもあります。2つ目は空行です。空行が抜けたキューは次のキューとつながってしまい、プレーヤーは両者を結合するか、片方を捨てます。
文字エンコーディング
SRTファイルはUTF-8で保存してください。アクセント付きのラテン文字からアラビア語、中国語、絵文字まで、あらゆる文字を扱え、現在のプレーヤーもこれを前提にしています。古いWindowsツールで作られたファイルは、地域ごとの旧式エンコーディングになっていることがあり、そのためにアクセント付きの文字がクエスチョンマークや奇妙な記号の羅列になります。テキストエディタでUTF-8として保存し直せば直ります。UTF-8のファイルの先頭に、見えないバイトオーダーマークを付けるプログラムもあります。ほとんどのプレーヤーは無視しますが、厳格なツールが最初のキューを拒否する場合は、マークなしのUTF-8で保存することを最初に試してください。
1行の長さは、読みやすさのルールであり、形式のルールではない
形式そのものは、1行の長さを制限していません。制限しているのはスタイルガイドです。米国議会図書館の解説は、1行32文字の制限に触れており、BBC Subtitle Guidelines は放送向けに37文字、Netflix English (USA) Timed Text Style Guide は1行42文字、最大2行を認めています。プレーヤーはそれより長い行でも、たいてい折り返して表示します。つまりこの制限は、人が字幕を時間内に読めるかどうかの問題で、当サイトのSRTチェッカーの読み取り速度チェックが、選んだガイドに照らしてそれを測定します。
SRTファイルは何に使われる?
- 動画プラットフォーム:動画と一緒にSRTをアップロードすると、視聴者がオンにできる字幕が付きます。
- デスクトップとテレビのプレーヤー:VLCなど多くのプレーヤーは、動画ファイルの隣にある同じ名前のSRTを読み込みます。
- 翻訳:翻訳者はテキストの行を置き換え、タイミングはそのままにして、言語ごとに1つのSRTを作ります。
- 編集ソフト:一般的な動画編集ソフトは、SRTを字幕トラックとして読み込めます。
- アクセシビリティ:聴覚障害のある視聴者向けの字幕は、音の説明を括弧で、話者名とともに書き込んでも、通常のSRTのテキスト行に収まります。
SRTファイルを作成するには?
動画から自動で
YouTube動画なら、リンクをYouTube文字起こしツールに貼り付けて、文字起こしのページでSRTを押してください。タイミングは動画自身の字幕から取られます。自分の録音やファイルなら、SozAIアプリが99言語で音声を文字起こしして、字幕を書き出します。
すでにあるテキストから
台本や文字起こしがプレーンテキストである場合、無料のTXTからSRTへの生成ツールが、各段落を1つのキューにして、その長さから、1分あたり150語で表示時間を付けます。ただし、2秒より短くも8秒より長くもなりません。長い段落は先に分割してください。20語を超えるキューは8秒の上限に達して、速すぎて読めない字幕になります。ブラウザ内で動作し、何もアップロードされません。
手作業で
短いクリップなら、テキストエディタでSRTを書くのは十分に現実的です。4部構成のブロックに従い、UTF-8で subtitles.srt として保存すれば完成です。動画が1〜2分を超えると、手作業のタイミング付けは面倒になるので、上の2つの方法のどちらかのほうが速くなります。
SRTファイルが動かないのはなぜ?
| 問題 | 通常の原因 | 対処方法 |
|---|---|---|
| 字幕がまったく表示されない | 拡張子の誤り、エンコーディングの誤り、またはタイミング行の不正 | ファイルをSRTチェッカーにかける。壊れたブロックを教えてくれる |
| 字幕が、一定の量だけ早い、または遅い | 動画にイントロやカットがあり、ファイルがそれを知らない | 字幕のタイムシフトツールで、すべてのタイムコードを一度にずらす |
| 再生が進むにつれて、字幕のずれが大きくなる | ファイルが別のフレームレートで作られている(たとえば23.976と25) | 字幕が同期から外れる理由を参照 |
| アクセント付きの文字が文字化けする | 旧式のエンコーディングで保存されている | UTF-8で保存し直す |
| プラットフォームがファイルを拒否する | WebVTTを期待している | VTTとSRTの変換ツールで変換する |
SRTはWebVTTやフレーム単位のタイムコードと何が違う?
WebVTT(.vtt)は、HTML5動画プレーヤーが使うW3Cの形式です。W3CのWebVTT仕様は、ミリ秒をピリオドのあとに3桁で書き、時を省略可能とし、ファイルは WEBVTT というヘッダー行で始まります。また、SRTにはない位置指定とスタイルも加わります。タイミングは同じ時刻の書き方が違うだけなので、一方からもう一方への変換は、句読点とヘッダーの問題で、VTTとSRTの比較でさらに詳しく扱っています。
動画編集者は、時間をミリ秒ではなくフレームで、SMPTEタイムコード(HH:MM:SS:FF)として数えます。SRTは実時間を記録するので、編集のタイムコードから字幕を作るときは、フレームレートが結果を左右します。毎秒29.97フレームでは、ノンドロップのタイムコード1時間は、ラベルが示すより実時間で3.6秒長くなります。当サイトのタイムコード変換ツールは、ドロップフレームを含むSMPTEタイムコードを、SRTのタイムスタンプに、またその逆に変換します。
必要なのがタイミングなしの言葉だけなら、字幕からテキストへのツールが、SRTやVTTから番号とタイムコードを取り除き、読みやすい段落を残します。

