跳至主要內容
SubtitleMatrix

LRC 轉 ASS

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

選項

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

這次轉換會改變什麼

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

  • 時間

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

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

LRC 轉 ASS 會把每一行歌詞寫成 `[Events]` 區段裡的一條 `Dialogue:`,時間從 `[mm:ss.xx]` 換成 `0:00:12.00` 這種寫法,同一個時間戳的多行則用 `\N` 接成一條。產物可以直接交給播放器或字幕軟體。

關鍵在結束時間:LRC 只記開始,ASS 每條字幕都需要終點。這裡拿下一行的開始當這一行的結束,和歌詞播放器推進高亮的規則一致;最後一行後面沒有下一行,就用頁面上設定的時長補出來,並在報告裡註明這個終點是推斷的,有損說明因此記為 timing。

`[ti:]` 標題會寫進 `[Script Info]` 的 Title,`[ar:]` 藝人在 ASS 裡沒有對應欄位;`[offset:]` 讀取後原樣保留、不會替你套用。轉換全程在瀏覽器裡完成,檔案不上傳、不需要註冊,整批拖曳進來會依序處理,最後打包成一個 ZIP。

範例

一份典型的 LRC 檔轉成 ASS

輸入

[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, 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: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, 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: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 轉成 ASS 時,一行歌詞的結束時間從哪裡來?

從下一行的開始。歌詞播放器也是這樣推進高亮;最後一行沒有下一行可借,改用頁面設定的時長(預設 2000 毫秒)補足,報告會註明這個終點是生成的。

LRC 轉 ASS 後,同一時間戳的兩行歌詞會變成兩條 Dialogue 嗎?

不會。它們屬於同一組,會合成一條 Dialogue,兩半用 `\N` 連接,播放器一次顯示兩行,而不是兩條搶同一個時刻的字幕。

LRC 的 `[ti:]` 標題在 ASS 產物裡寫到哪個欄位?

寫進 `[Script Info]` 的 Title;`[ar:]` 藝人在 ASS 沒有對應欄位,會列進有損說明,不會憑空出現。

LRC 轉 ASS 時,`[offset:]` 標籤會被套用到時間軸嗎?

不會。偏移會被讀取並原樣保留,時間按檔案字面轉換;如果你的播放器先前因為這個偏移顯示得偏早或偏晚,請在本頁的平移參數自己補上同樣的位移。

LRC 的百分秒時間進到 ASS 後會多一層捨入嗎?

不會。ASS 同樣寫到百分秒,`[00:12.00]` 原樣成為 `0:00:12.00`;兩邊的精細度相同,差異只在 LRC 沒有寫出終點這件事。

LRC 轉 ASS 時,一行沒有文字的空歌詞會留下什麼?

留下一條沒有文字的 Dialogue,起點是那個時間戳、終點是下一行的開始;如果它正好是最後一行,終點就用頁面設定的時長補。

相關工具