跳至主要內容
SubtitleMatrix

LRC 轉 SMI

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

選項

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

這次轉換會改變什麼

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

  • 時間

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

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

LRC 轉 SMI 會把歌詞寫成 SAMI 的 `<SYNC Start=毫秒>` 加 `<P>` 正文,每一條字幕後面再緊接一個 `<P>&nbsp;` 清屏區塊,讓畫面在終點回到空白。

結束時間由下一行的開始推得,最後一行用頁面設定的時長補;清屏區塊就寫在那個終點上。SAMI 靠 SYNC 替換畫面上既有的內容,少了這個空段落,上一條字幕會一直留在畫面上。

同一時間戳的多行用 `<br>` 連接,仍留在同一個 SYNC 區塊裡。SAMI 有樣式能力,但 LRC 本來就沒有樣式,所以產物只有純文字加上一段預設的 `<STYLE>` 規則;`[ti:]`、`[ar:]`、`[al:]`、`[offset:]` 都沒有落點。轉換在本機完成,批次可取消。

範例

一份典型的 LRC 檔轉成 SMI

輸入

[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.

輸出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=12000>
<P>First line of the song.
<SYNC Start=15300>
<P>&nbsp;
<SYNC Start=15300>
<P>Second line.<br>Second line, translated.
<SYNC Start=18000>
<P>&nbsp;
<SYNC Start=18000>
<P>
<SYNC Start=21500>
<P>&nbsp;
<SYNC Start=21500>
<P>Final line.
<SYNC Start=23500>
<P>&nbsp;
</BODY>
</SAMI>

這個方向丟掉的是結束時間;每條字幕後面多一個清屏區塊,文字逐行對應。

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

輸入

[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]

輸出

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=3000>
<P>Out of order.
<SYNC Start=5500>
<P>&nbsp;
<SYNC Start=5500>
<P>Leading zero omitted, one decimal.
<SYNC Start=7000>
<P>&nbsp;
<SYNC Start=7000>
<P>Second with no centiseconds.<br>Repeated chorus line.
<SYNC Start=9000>
<P>&nbsp;
<SYNC Start=9000>
<P>Repeated chorus line.
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=12000>
<P>
<SYNC Start=14000>
<P>&nbsp;
</BODY>
</SAMI>

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

常見問題

LRC 轉 SMI 時,`<P>&nbsp;` 清屏區塊是怎麼來的?

每一條字幕的終點都會生成一個空段落,讓畫面在那一刻回到空白;SAMI 用 SYNC 取代畫面內容,不寫清屏區塊的話上一條會一直留著。

LRC 轉 SMI 後,雙語歌詞會顯示成兩條字幕嗎?

不會。兩行放在同一個 `<SYNC>` 區塊裡,中間用 `<br>` 換行,仍然是一組,播放器一次顯示。

LRC 的 `[ti:]`、`[ar:]`、`[offset:]` 在 SMI 裡留得住嗎?

留不住。SAMI 的字幕模型沒有這些欄位;`[offset:]` 也不會被套用,時間按檔案字面轉換。

LRC 的百分秒在 SMI 產物裡會變成什麼?

變成毫秒的 `Start=` 數值:`[00:12.00]` 成為 `Start=12000`,`[00:15.30]` 成為 `Start=15300`,中間沒有捨入。

LRC 轉 SMI 時,最後一行歌詞在哪裡結束?

在頁面設定的時長補出來的終點;那個位置同樣會生成清屏區塊,報告也會說明這個結束時間是推斷的。

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

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

相關工具