SRTファイルの作成方法:手入力、動画から、音声から
SRTファイルの作成方法を解説します。メモ帳やテキストエディットでの手入力、字幕エディタでのタイミング設定、動画や音声からの自動生成に加え、プレイヤーが正しく読み込めるようUTF-8で保存する手順まで詳しく紹介します。
SRTファイルを作成するには、プレーンテキストエディタで番号付きの字幕ブロック(番号、開始時刻と終了時刻、テキスト、空行)を書き、UTF-8で、拡張子を.srtにして保存します。短いクリップなら、手入力でも十分です。それより長いものは、音声からファイルを生成して修正してください。
この記事では、SRTファイルを作る4つの方法、WindowsとMacの保存ダイアログにある落とし穴、アップロード前にファイルを確認する方法、そして言語ごとに1つずつ作る方法を取り上げます。
SRTファイルには何が書かれていますか?
SRTファイルはプレーンテキストで、次の2つのブロックを見れば形式のすべてが分かります:
1
00:00:01,200 --> 00:00:04,000
Welcome back to the channel.
2
00:00:04,400 --> 00:00:07,850
Today we're fixing the audio
before anything else.
動作するファイルのほとんどは、次の4つのルールだけで説明がつきます:
- ブロックには、1から順に番号を付けます。 番号は単独の行に書きます。
- 時刻は時・分・秒・ミリ秒で表し、ミリ秒の前にはコンマを付けます。
00:00:04,400のように、コンマを使うのがSRTで、ピリオドを使うのがWebVTTです。開始と終了は、前後に半角スペースを入れた-->でつなぎます。 - テキストは1行か2行にします。 1行の文字数は、ラテン文字では42文字前後が一般的な上限で、日本語や韓国語ではそれよりずっと少なくなります。言語ごとの数値は読み上げ速度のガイドにあります。
- 空行がブロックの終わりを示します。 空行がないと、次のブロックがこのブロックにつながってしまいます。
SRTでは、スタイル設定のほとんどが保持されません。YouTubeのヘルプページは、SRTについてはっきり述べています。サポートされるのは基本的なバージョンだけで、スタイル指定のマークアップは認識されず、ファイルはプレーンなUTF-8でなければなりません。フォントや色、位置が必要なら、別の形式を使うことになります。どの形式が何を保持できるかは、SRT・VTT・ASSの比較で解説しています。
SRTファイルを作る4つの方法
- テキストエディタで手入力 — 無料で、短いクリップなら問題ありませんが、長いものには時間がかかります。
- 字幕エディタで作成 — 無料で、波形を見ながらタイミングを正確に設定できます。
- 音声から生成 — 音声認識がテキストとタイミングを書き出すので、あとは修正します。
- 動画編集ソフトから書き出し — Premiere ProやDaVinci Resolveに、すでにキャプションがある場合に使います。
方法1: メモ帳またはテキストエディットで手入力する
プレーンテキストエディタなら、どれを使っても構いません。問題が起きるのは、保存のときです。
Windowsのメモ帳の場合:
- 上の形式でブロックを入力します。
- 「ファイル → 名前を付けて保存」を選びます。
- 「ファイルの種類」を「すべてのファイル」にして、ファイル名を
subtitles.srtにします。 - 「Encoding」(文字コード)を「UTF-8」にして、保存します。
「テキスト文書」のままだと、メモ帳はsubtitles.srt.txtという名前で保存してしまうことがあります。エクスプローラーは既定で登録されている拡張子を表示しないため、ファイル名は正しく見えるのに、読み込みには失敗します。エクスプローラーの「表示」メニューで「ファイル名拡張子」をオンにしておけば、この間違いはずっと目に見えるようになります。
Macのテキストエディットの場合:
- 新規書類を開き、入力する前に「フォーマット → 標準テキストにする」を選びます。テキストエディットの書類は初期状態ではリッチテキストで、リッチテキストのファイルの拡張子を
.srtに変えただけでは、どのプレイヤーも読めない書式コードだらけのファイルになります。 - ブロックを入力します。
- 「ファイル → 保存」を選び、ファイル名を
subtitles.srtにして、文字コードを「Unicode (UTF-8)」に設定します。拡張子を.srtと.txtのどちらにするか尋ねられたら、.srtを選びます。 - Finderで、ファイル名が本当に
.srtで終わっているか確認します。「Finder → 設定 → 詳細 → すべてのファイル名拡張子を表示」をオンにすると、確認できるようになります。
30秒のクリップや、ちょっとした修正なら、手入力で問題ありません。10分のインタビューになると、プレイヤーを見ながら何百ものタイムスタンプを読み取って書き込むことになります。次の2つの方法は、まさにそのために用意されています。
方法2: Subtitle Editの波形を見ながらタイミングを付ける
Subtitle Editは無料のオープンソースで、Windows、macOS、Linuxで動作し、まさにこの作業のために作られています。Subtitle Editのダウンロードページから、すべてのバージョンを入手できます。動画を開くと、プレイヤーの下に音声が波形として表示されます。1行入力して、見えている音声の波形に合わせて開始位置と終了位置を決め、次の行へ進みます。SubRip形式で保存すれば、番号が振られ、コンマ区切りの正しい.srtが書き出されるので、上で説明した形式のルールを自分で気にする必要はなくなります。
タイミングを手作業で付けることに変わりはありませんが、プレイヤーの時刻表示を見て読み取るよりずっと速く進みます。Subtitle Editには、音声認識メニューからWhisperでテキストを生成する機能もあります。その面については、オフライン字幕生成ツールの比較で取り上げています。
方法3: 動画または音声から生成する
音声認識はテキストとタイミングを一度にまとめて書き出してくれるので、手を動かすのは入力ではなく修正になります。Whisperは自分のパソコン上で動作するため何もアップロードされず、動画ファイルも音声ファイルも同じように扱えます。オンラインの字幕生成サービスも同じことができますが、ファイルをアップロードする必要があります。
Whisperのコマンドラインツールを使う場合(無料、PythonとFFmpegが必要):
whisper interview.mp4 --model turbo --output_format srt
これでカレントフォルダにinterview.srtが書き出されます。言語の自動判定が外れる場合は、--language esか、実際に話されている言語のコードを追加してください。
デスクトップアプリを使う場合: Sablateで、動画または音声ファイルをドロップして文字起こしし、読み上げが速すぎる行に警告が出るエディタでテキストを修正してから、「Export → Subtitle file (.srt)」を選びます。無料プランで扱えるのは10分までのファイルで、月3本までです。使えるWhisperモデルはFastとBalancedで、書き出した.srtの末尾には「Made with Sablate」という短い1行が加わります。Proは$29の買い切りで、長さの制限がなく、すべてのモデルが使え、クレジット表記もありません。
どの方法でも、ファイルを配布する前に中身を読んでください。自動の文字起こしで間違いが出る場所は、名前、数字、句読点とだいたい決まっています。さらにWhisperには、もっと奇妙な癖が2つあります。無音の部分に「Thank you for watching」のようなフレーズを書くことと、1つの行を何度も繰り返すことです。その両方を防ぐ方法は、Whisperが行を繰り返し、存在しない文章を書く理由で解説しています。
方法4: 動画編集ソフトから書き出す
キャプションがすでに編集ソフトの中にあるなら、入力し直すのではなく、書き出してください:
- Premiere Pro: タイムラインにキャプショントラックがある状態で、「File → Export → Captions」を選び、SRTを指定します。キャプションパネルのメニューにも、「Export to SRT file」があります。
- DaVinci Resolve: 「File → Export Subtitle」を選んで
.srtまたは.vttを指定するか、字幕トラックのヘッダーを右クリックして「Export Subtitle」を選びます。
編集ソフトの中でキャプションを作ること自体は、別の問題です。Premiere Proの音声テキスト変換はサブスクリプションに含まれ、ResolveのものはStudio版限定で、無料版ではほかで作った.srtを読み込むことになります。その方法は、無料版のResolveで自動字幕を使う方法で説明しています。
SRTファイルが読み込めないのはなぜですか?
原因はたいてい次の5つのどれかで、5つとも、プレーンテキストエディタで開けば確認できます:
- 実は
subtitles.srt.txtになっている。 WindowsもmacOSも、既定では登録されている拡張子を表示しません。拡張子を表示する設定にしてから、ファイル名を変更してください。 - リッチテキストで保存されている。 リッチテキストのファイルをプレーンなエディタで開くと、先頭が数字の1ではなく、RTFの制御コードで始まっています。プレーンテキストの書類から作り直してください。
- UTF-8ではない。 アクセント付きの文字が文字化けしたり、アップロードが拒否されたりします。YouTubeはプレーンなUTF-8を必須としています。UTF-8を選んで保存し直してください。
- タイムスタンプにピリオドが使われている。
00:00:04.400はWebVTTの書き方です。許容するプレイヤーもあれば、そのブロックを飛ばしたり、ファイルを受け付けなかったりするプレイヤーもあります。 - 空行が抜けている。 次のブロックの番号とタイムコードが字幕のテキストとして読み取られ、そのブロックは消えてしまいます。
macOSとLinuxでは、目に見えない問題を、2つのコマンドで見つけられます:
file subtitles.srt
grep -nE "[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}" subtitles.srt
fileは文字コードを表示します。UTF-8かプレーンなASCIIなら問題なく、ISO-8859やextended-ASCIIと表示された場合は、保存し直す必要があります。grepの行は、ピリオドで書かれたタイムスタンプをすべて表示します。Windowsでは、メモ帳がステータスバーに文字コードを表示します。翻訳したファイルについては、元のファイルとブロック数も比べてください。その一行コマンドは、SRTファイルの翻訳ガイドにあります。
複数の言語でSRTファイルを作る
言語ごとに、同じタイミングの別々のファイルを作ります。複数の言語を1つにまとめたSRTというものはありません。YouTubeは言語ごとに1回ずつアップロードを受け付け、メディアサーバーはファイル名から言語を読み取ります。たとえばPlexは、そのルールをドキュメントに明記しています:
Interview (2026).mp4
Interview (2026).en.srt
Interview (2026).es.srt
Interview (2026).de.srt
.srtの前に付けるコードは、2文字のISO 639-1コード、または3文字のISO 639-2/Bコードです。
すべての言語で、同じタイミングを1セットだけ使います。最初の文字起こしを修正してから、言語ごとに音声から別々に生成するのではなく、そのテキストを同じタイミングの上で翻訳してください。別々に生成すると、キューの区切りが言語ごとに少しずつずれていき、同期の修正を言語ごとに1回ずつ行うことになります。その手順は、多言語ワークフローで説明しています。Sablateでは、翻訳は元のタイミングの上に重なるレイヤーで、Proの「All languages · Subtitles」の書き出しでは、各言語が別々の.srtとして1つのフォルダに書き出されます。
どの方法を使うべきですか?
| 手入力 | Subtitle Edit | Whisper CLI | Sablate | 編集ソフトからの書き出し | |
|---|---|---|---|---|---|
| 価格 | 無料 | 無料、オープンソース | 無料、オープンソース | 無料プランあり、Proは$29買い切り | 編集ソフトに含まれる |
| タイミングを自動で付けてくれるか | いいえ | Whisperエンジンを使えば可能 | はい | はい | 編集ソフトが文字起こしした場合のみ |
| 動画がパソコンに残るか | はい | はい | はい | はい | 編集ソフトによる |
| 修正用のエディタ | お使いのテキストエディタ | ある | ない | ある | ある |
| ほかの言語 | 自分で入力する | 機械翻訳を内蔵 | 英語への翻訳のみ | 同じタイミング上の翻訳レイヤー | 編集ソフトによる |
| 対応OS | どのOSでも | Windows、Mac、Linux | Windows、Mac、Linux | WindowsとMac | 編集ソフトによる |
「20秒のクリップ」 手入力で作ります。メモ帳かテキストエディットで5分もあれば足り、必要になるのは上の4つのルールだけです。
「すべてのキューを手作業で正確に合わせたい」 Subtitle Editの波形表示です。
「1時間分のインタビューがある」 生成します。コマンドラインの操作に慣れているならWhisper、エディタと書き出し前の読み上げ速度チェックが欲しいならSablateです。そのあとで修正します。
「キャプションがすでに編集ソフトの中にある」 書き出します。プログラムがすでにタイミングを付けたものを、入力し直してはいけません。
「5つの言語版が必要」 1つを生成して修正し、同じタイミングの上で翻訳して、言語ごとに1つのファイルにします。
SRTファイルは、数ある字幕形式の中で最もシンプルな形式です。だからこそ、隠れた拡張子、リッチテキスト、誤った文字コード、コンマであるべき場所のピリオドといった、単純な原因で壊れます。そこさえ押さえれば、4つのどの方法でも、あらゆるプラットフォームで読み込めるファイルが作れます。入力するより文字起こしを修正するほうがよいという方は、WindowsまたはMac版のSablateをダウンロードして、音声からファイルを作ってください。