SRT を ASS に変換
字幕テキストを貼り付けることもできます
この変換で変わること
1 項目が失われるか、判断が必要です
- 精度
タイミングの精度(変換先の時計はより粗いため、すべてのタイムスタンプは 10 ms 単位に丸められます)
この一覧は、読み込んだファイルではなく、この2つの形式の機能対応表から作られています。形式としては許されているが対応表が扱っていない機能を使っている場合、そのファイルではさらに多くが失われることがあります。
このページは SRT ファイルを Advanced SubStation Alpha のスクリプトに書き直します。2 つの形式は字幕の捉え方が違い、SRT はタイムスタンプ付きの字幕の一覧、ASS はヘッダーとスタイル表と Dialogue 行を持つ台本です。各字幕は 1 本の Dialogue 行になり、1 つのスタイルを指し、時刻は ASS 表記の 0:00:01.00 に書き換わります。SRT がミリ秒で数えるのに対し、ASS は 100 分の 1 秒で数えるためです。
書式は貼り付けるのではなく翻訳します。斜体の区間は開始位置で有効にし終了位置で戻す ASS の上書きコードになり、太字も同様です。字幕内の改行は ASS の改行コードになるので、2 行は 2 つの字幕に分かれず 1 つのイベント内の 2 行として残ります。SRT が言えないフォント、位置、枠線は勝手に作らず、実用的なスタイルを 1 つ備えたきれいな台本を渡します。
1 ファイルでも 1 シーズン分でも、フレームレートの計算も不要です。どちらの形式も時計の時刻を保存し、処理は端末の外に出ません。
例
典型的な SRT ファイルを ASS に変換した例
入力
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
出力
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.
この出力で失われるもの:精度。それ以外は行単位で一致します。
崩れた SRT 入力を ASS に変換した例
入力
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
出力
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.
実ファイルの傷み方の例です。改行の混在、余分な空白、空のフィールドが含まれます。上の整った例と比べると、パーサーがどこまで許容するかが分かります。
よくある質問
SRT を ASS に変換するとスタイル表はどこから来ますか?
ASS にスタイルのない字幕ブロックは存在しないため、変換器が Default という 1 つのスタイルを作ります。Arial、サイズ 20、白文字に黒い縁取りで、各行がそこを指します。ヘッダーのその 1 行を変えれば、ファイル全体の見た目が変わります。
SRT の斜体・太字は ASS でどう表現されますか?
本物の ASS スタイルになります。斜体の区間はその前後を囲む斜体の上書きコードになり、太字も同様です。ASS の編集ソフトでは残骸のマークアップではなくスタイルとして表示されます。
SRT の改行は ASS でどうなりますか?
ASS の改行コードとして残ります。1 つの SRT 字幕内の 2 行は 1 つの Dialogue イベント内の 2 行のままなので、2 行目のタイミングは字幕全体のタイミングのままです。
SRT から ASS で時刻の精度は変わりますか?
変わります。SRT の 00:00:01,250 は ASS の 0:00:01.25 になり、100 分の 1 秒に丸められます。ずれは最大 5 ミリ秒で、これがこの方向で唯一正確でなくなる点です。
SRT を ASS に変換しても同じ動画と同期しますか?
同期します。時刻をずらしたり伸縮したりせず、最初の字幕は同じ瞬間に始まり、最後の字幕は同じ瞬間に終わります。変わるのは言葉を囲む構造だけです。