SRT 轉 ASS
或者貼上字幕文字
這次轉換會改變什麼
有 1 項會被捨棄或需要你決定
- 精確度
時間精確度——輸出的時間刻度較粗,因此每個時間戳記都會四捨五入到最接近的 10 毫秒
這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。
這一頁把 SRT 改寫成 Advanced SubStation Alpha 腳本。兩種格式對「一條字幕」的定義不同:SRT 只是帶時間碼的字幕清單,ASS 則是一份有標頭、樣式表與 Dialogue 事件列的腳本;因此每條字幕會變成一條 Dialogue,指向同一個樣式,時間也改寫成 ASS 的寫法。
ASS 只數到百分秒,SRT 的 00:00:01,000 會寫成 0:00:01.00,這是這個方向唯一遺失的東西——精度。行內格式會被翻譯而不是原樣貼上:斜體與粗體在區間兩端寫成開啟、關閉的覆寫碼,一條字幕裡的硬換行寫成 ASS 的換行碼 \N,兩行仍留在同一個事件裡。SRT 無法表達的字型、位置與邊框不會被憑空補上;產物是一份乾淨的腳本,附一個可用的 Default 樣式,之後可以在任何 ASS 編輯器裡重新設計。
兩種格式都存時鐘時間,所以不需要換算影格率。單一檔案或整季影集都行,佇列依序處理、可中途停止,結果打包成一個 ZIP;全程在瀏覽器裡完成,檔案不會離開你的電腦。
範例
一份典型的 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.
這份產物遺失了精度:毫秒被捨入到百分秒;文字、換行與時間軸位置都一致,其餘逐列相同。
同一轉換遇到一份格式不規則的輸入
輸入
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 沒有「無樣式」的字幕:每一條 Dialogue 都必須指向一個樣式。轉換器會建立一個名為 Default 的樣式(Arial、字級 20、白字加深色描邊),並讓每一列都指向它;只要改標頭裡的這一列,整份檔案就跟著變。
SRT 轉 ASS 後小數點後面的數字代表什麼?
百分秒。ASS 以 centisecond 儲存時間,所以 SRT 的 00:00:01,250 會寫成 0:00:01.25;這是格式最細的刻度,原本的檔案也沒有更細的資訊。
SRT 轉 ASS 時斜體與粗體標籤會變成什麼?
變成真正的 ASS 樣式:一段斜體在區間兩端寫成 {\i1}…{\i0},粗體同理是 {\b1}…{\b0}。ASS 編輯器會把它們顯示為樣式,而不是殘留的標記。
SRT 轉 ASS 會保留一條字幕裡的硬換行嗎?
會,寫成 ASS 的換行碼 \N。一條 SRT 字幕裡的兩行,仍會留在同一個 Dialogue 事件裡,第二行的時間就是這條字幕的時間。
SRT 轉 ASS 後時間軸會整體移動嗎?
不會。這裡不平移也不縮放時間:第一條字幕的起點與最後一條的終點都相同,改變的只有文字周圍的結構,以及不足 10 毫秒的精度捨入。