跳至主要內容
SubtitleMatrix

LRC 轉 SSA

格式轉換歌詞(LRC)
或者貼上字幕文字

選項

當來源檔案沒有結束時間時使用(純文字、LRC)。輸出裡的時間軸是在這裡產生的,不是轉換來的,所以填多少就是多少。

這次轉換會改變什麼

有 1 項會被捨棄或需要你決定

  • 時間

    字幕的結束時間——來源檔案不記錄這些時間,因此輸出中的結束時間是產生出來的,而非轉換而來

這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。

LRC 轉 SSA 會把每一行歌詞變成 `[Events]` 區段裡的一條 `Dialogue:`,時間寫成 `0:00:12.00`,同一時間戳的多行用 `\N` 連接。SSA 用 `Marked` 欄位取代 SRT 的字幕編號。

LRC 沒有結束時間,SSA 每條字幕卻都需要一個。終點取下一行的開始,最後一行用頁面設定的時長補,報告會註明那一條是生成的;這一步在有損說明裡記為 timing,因為檔案本身從未寫過終點。

`[ti:]` 寫進 `[Script Info]` 的 Title;`[ar:]`、`[al:]` 與 `[offset:]` 在 SSA 沒有對應欄位,偏移只讀取不套用。輸出是 UTF-8、LF、無 BOM,依開始時間升序排列。轉換全程在瀏覽器裡完成,檔案不上傳、不需要註冊。

範例

一份典型的 LRC 檔轉成 SSA

輸入

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

輸出

[Script Info]
Title: Sample Song
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:12.00,0:00:15.30,Default,,0,0,0,,First line of the song.
Dialogue: 0,0:00:15.30,0:00:18.00,Default,,0,0,0,,Second line.\NSecond line, translated.
Dialogue: 0,0:00:18.00,0:00:21.50,Default,,0,0,0,,
Dialogue: 0,0:00:21.50,0:00:23.50,Default,,0,0,0,,Final line.

這個方向丟掉的是結束時間;開始時間與文字逐行對應。

同一轉換遇到一份格式凌亂的檔案

輸入

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

輸出

[Script Info]
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:03.00,0:00:05.50,Default,,0,0,0,,Out of order.
Dialogue: 0,0:00:05.50,0:00:07.00,Default,,0,0,0,,Leading zero omitted, one decimal.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Second with no centiseconds.\NRepeated chorus line.
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Repeated chorus line.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,

真實檔案常見的狀況:BOM、混合換行、缺前導零的時間戳、重複的副歌行。解析器不會中斷,讀不出的部分會進有損說明。

常見問題

LRC 轉 SSA 時,每條字幕的結束時間是怎麼補出來的?

用下一行的開始當終點;最後一行沒有下一行,改用頁面設定的時長補,報告會註明這一條的終點是生成的,有損說明記為 timing。

LRC 的 `[ti:]` 標題在 SSA 產物裡寫到哪?

寫進 `[Script Info]` 的 Title 欄位;`[ar:]` 藝人、`[al:]` 專輯與 `[offset:]` 都沒有對應欄位,會列進有損說明,偏移也不會被套用。

LRC 轉 SSA 時,同一時間戳的多行歌詞會變成兩條字幕嗎?

不會。它們合成一條 Dialogue,兩半用 `\N` 連接,播放器一起顯示;拆成兩條反而會在同一個時刻互相蓋掉。

LRC 的百分秒時間進到 SSA 後會改變嗎?

不會。SSA 同樣寫到百分秒,`[00:04.12]` 原樣寫成 `0:00:04.12`,兩邊的精細度一致。

LRC 轉 SSA 後,`Marked` 欄位裡填的是什麼?

它取代 SRT 的字幕編號,標示這條字幕在輸出裡的順序;轉換時依開始時間升序填入,不是原檔案的行號。

SSA 轉回 LRC 會丟掉哪些東西?

會丟掉時間軸、樣式、定位、卡拉 OK 與格式私有內容;LRC 只留開始時間與文字,與本頁方向的清單不同。

相關工具