はじめに
映像制作や字幕編集、ローカライズの現場では、単なるテキストの書き起こし(TXT)を、完全に仕様準拠したSubRip形式(SRT)に変換する作業は、単純なフォーマット変換以上の意味を持ちます。正確なタイミングの保持、文字コードの適切な設定、そして字幕のアクセシビリティや公開可能性を確保することが重要です。
YouTube、OTT配信、eラーニング、放送向けローカライズなど、あらゆる用途においてSRTフォーマットの細部を理解することは必須となっています。TXTからSRTへの変換には、時間区切りの誤り、番号順のずれ、文字コードの不一致など、ファイルを使えなくしてしまう落とし穴が少なくありません。
この記事では、SRTの仕様、ありがちなフォーマットエラー、TXT→SRT変換の診断チェックリスト、安全な文字コード設定方法、そしてすぐ試せる修正ワークフローを紹介します。さらに、SkyScribeのように、音声や動画から直接仕様準拠の字幕を出力できる最新の文字起こしプラットフォームが、手作業の変換に伴うトラブルをどのように解消できるかも解説します。
SRTタイムコード構文の基本
SRTは構造がシンプルで広く使われている字幕形式ですが、守るべきルールは厳格です。
SRTのタイムコードは次の形式で書かれます。
```
HH:MM:SS,mmm --> HH:MM:SS,mmm
```
ポイントは以下の通りです:
- ミリ秒の前は必ずカンマ:秒とミリ秒の間はピリオドではなくカンマ(
,)を使用 - ゼロ埋めは必須:
00:01:05,000は正しいが、0:1:5,0は多くのプレイヤーでエラー - 字幕ブロックの間は必ず空行:テキストの後に1行空ける
- インデックス番号は1から順に増加:重複や飛び番号は不可
- 時間の重複は禁止:開始時間は終了時間より前で、ほかの字幕と重ならないこと
よくある勘違いの一つに、WebVTTとの混同があります。WebVTTは00:00:02.000のようにミリ秒部分にピリオドを使うため、そのままSRTに貼り付けるとエラーになります。
TXTからSRTへの変換でよくある不一致
文字起こしツールやAIスクリプト、会議記録などからのTXT出力は、そのままではSRTの形式要件を満たさない場合が多くあります。代表的な問題例は以下の通りです。
- 区切り記号の誤り
ミリ秒部分がピリオドになっている:00:05:10.345→ 正しくは00:05:10,345 - フレーム単位のタイムコード
動画編集用SMPTE形式HH:MM:SS:FFはミリ秒に変換する必要があります - ゼロ埋めや時間フィールドの欠落
1:05,000のように先頭の00:がないと厳密なパーサーでエラー - 字幕構造の崩れ
矢印のスペース欠如(-->と ` --> `の違い)や空行不足 - 複数ソース混在による形式のばらつき
異なるフォーマットが一つのファイル内で混ざってしまうケース
LocalITのSRTガイドでも、仕様通りの形式でないとアップロードに失敗することが強調されています。
診断チェックリスト:変換前に確認すること
変換に着手する前に、まずTXTの構造を分析して必要な修正を把握しましょう。
ステップ1:現在のタイムコード形式を確認
SRT型(HH:MM:SS,mmm)、WebVTT型(HH:MM:SS.mmm)、SMPTE(HH:MM:SS:FF)、秒小数型(SS.mmm)かを判断します。形式により変換方法が異なります。
ステップ2:フレームベースか時刻ベースかを区別
FFは動画のフレーム数を意味し、SRTでは理解できないためフレームレートに基づきミリ秒へ変換します。
ステップ3:ミリ秒区切りを統一
タイムコード部分のみを対象に、ピリオドをカンマへ置換します。字幕本文にあるピリオドを誤変換しないよう注意します。
ステップ4:字幕構造の検証
各字幕は以下を必ず含むこと:
- 1から始まる連番インデックス
- 正しい時間範囲
- 1〜2行の字幕テキスト
- テキスト後の空行
ステップ5:時間の重複や大きな空きの有無をチェック
字幕同士の時間が重ならないようにし、可読性と互換性を高めます。
パターン修正は手作業でも可能ですが、スクリプトや高度なツール内での自動処理の方が安全です。多くのプロはSkyScribeなど、全体構造を自動で整える「字幕再分割」機能付きの環境で部分的な修正を行います。
文字コードの落とし穴:UTF-8とANSI
文字コードの不一致は、公開後まで気付かれないこともあります。
特に多言語字幕では、SRTはUTF-8で保存することが推奨されます。ANSIで保存すると、アクセント付き文字や日本語、アラビア語などが � や文字化けとして表示されます。
文字化けが起きる原因
- OS標準のテキストエディタがデフォルトでANSI保存になる
- Wordなどリッチテキスト編集でスマート引用符や特殊空白が入る
- 異なる初期設定を持つプラットフォーム間でファイルをやり取りする
防止策
- 保存・書き出し時に必ずUTF-8を指定
- SRTをWordなどリッチテキストエディタで編集しない
- 全工程をプレーンテキストで保持
AI文字起こしで直接UTF-8準拠のSRTを出力できる機能があれば、こうしたトラブルはほぼ防げます。SkyScribeでは、アップロードやYouTubeリンクの文字起こしから正しいタイムスタンプ付きのUTF-8 SRTをワンクリックで取得できます。
すぐ試せる修正パターンと最小限の再分割
区切り記号の検索・置換
ミリ秒にピリオドを使っている場合、正規表現で一括置換:
パターン:(\d{2}:\d{2}:\d{2})\.(\d{3}) → 置換:\1,\2
時間フィールドのゼロ埋め
1時間未満の動画で時間欄がない場合、00:を先頭に追加します。
最小限の再分割
元のタイムコードは「真価」として保持し、可読性向上のための分割や結合のみを行うのが理想です。タイミングを変えずに構造だけ整えるワンボタンクリーニング機能は有用で、SkyScribeでは不要語の削除や句読点修正、タイムコード統一を自動で行い、タイミングを維持します。
TXT→SRTを効率化する理由
手作業でのTXT→SRT変換は可能ですが、時間がかかりミスも発生しやすく、多言語翻訳や厳格な検証のある配信環境ではリスクが増します。
効率化のポイント:
- 最初からUTF-8準拠のSRTを正しい仕様で書き出せるツールを使う
- タイムコードはカンマ区切り・ゼロ埋めで記録する
- 再分割や整形は自動処理を活用し、全字幕を手作業で直さない
- TXT→DOCX→CSV→SRTのような複数形式経由は避ける
SkyScribeのようなリンク・アップロード型文字起こしを使えば、ダウンロードから手直しまでの手順をスキップし、タイムコードのずれや文字コードの損失、字幕構造の崩れを避けられます。結果、即公開可能なSRTがすぐ手に入ります。
まとめ
映像制作者、字幕編集者、ローカライズ担当者にとって、TXTからSRTへの変換を正しく行うことは、仕様遵守、タイムコードの微妙なずれの修正、そして文字コードの安全性を維持することに直結します。
仕様準拠のSRTとアップロード拒否されるSRTの差は、カンマかピリオドか、ゼロの有無、文字コード指定の違いといったほんの小さな違いから生まれます。診断チェックリストを活用し、最初から完成形のSRTを生成できるワークフロー—例えばSkyScribeのような方法—を選べば、プラットフォーム準拠で世界中で読める、正確な字幕を安定して提供できます。
よくある質問(FAQ)
Q1:SRTのタイムコードでカンマが重要なのはなぜ?
SRTではミリ秒の前にカンマ(00:01:23,456)を使う仕様になっています。WebVTTなど他形式ではピリオドを使うため、そのまま流用するとエラーになります。
Q2:タイムコードがフレーム単位かミリ秒単位かを見分ける方法は?
フレーム単位は末尾が:FFで、値は通常30未満です。SRTにするには動画のフレームレートからミリ秒に換算します。
Q3:大量の字幕ファイルで区切り記号を素早く直す方法は?
正規表現による検索・置換を使い、タイムコード部分のみのピリオドをカンマに変更します。本文中のピリオドは変えないようにします。
Q4:アップロード後にSRTが文字化けするのはなぜ?
ANSIで保存されている可能性が高いです。UTF-8で保存すれば、アクセント付き文字や非ラテン文字、特殊記号も正しく表示されます。
Q5:文字起こしツールは仕様準拠SRTを直接出力できますか?
最近のツールは可能なものもありますが、特にタイムコード精度が高く、UTF-8形式で完全準拠のSRTを生成できるツール—例えばSkyScribe—を選べば、手作業変換のミスを避けられます。
