建立同步歌詞的意思是產生一個純文字檔案,其中每一行歌詞前面都有一個時間戳記,音樂播放器會依照歌曲進度朗讀出來。事實上的簡單 LRC 格式會把那個時間戳記寫成 [mm:ss.xx] ── 分鐘、秒數,以及兩位數的百分秒 ── 直接放在歌詞文字同一行的前面,例如 [01:23.45]範例行,而那一行就是基本播放器在正確時機顯示下一行所需的全部資訊。您可以在不上傳音訊、不錄製人聲,也不執行對齊模型的情況下建立這種檔案:每行顯示文字只輸入一次,選擇一個起始時間戳記,挑選一個固定的行間隔,工具就會依序為每行加上時間戳記。由於時間是規律的,輸出可以當作草稿,之後在您選擇的播放器中重新調整時間,而這個協定的其他部分就只是嚴謹的文字 ── 受限的行數、經過驗證的時間戳記格式、UTF-8 下載,以及選擇性的標題、演出者和專輯中繼資料標籤。

一個簡單的同步歌詞檔案實際上包含什麼
同步歌詞檔案是一個副檔名為 .lrc 的小型 UTF-8 文字檔案。在檔案內,每個有時間標記的行都遵循 [mm:ss.xx]歌詞文字 的格式,其中方括號內的部分是顯示時間,後面的文字則是播放器在該時刻顯示在螢幕上的內容。根據 QuickLRC 的格式說明文件,這個事實上的格式是最廣泛支援的變體,也是大多數桌面和行動裝置播放器在宣稱支援 LRC 時所預期的格式。
每個時間戳記背後的算術規則也是固定的。根據 Subforge 的時間實作,分鐘貢獻六萬毫秒,秒數貢獻一千毫秒,而小數點後兩位數代表百分秒。因此 01:23.45 表示一分鐘、二十三秒,以及零點四五秒。產生器不會輸出小時欄位、冒號分隔的影格、三位數的毫秒,或是任何字詞層級的增強 LRC 語法;它只採用這個保守的子集合,以確保檔案在最多樣化的播放器中都能有可預期的行為。
可選擇性的中繼資料行可以使用三個已定義的標籤放在檔案頂端:[ti:標題] 表示標題,[ar:演出者] 表示演出者,以及 [al:專輯] 表示專輯。一個空白行會把那個標頭區塊與下方的時間標記行分開,但時間標記行本身仍是普通的純文字,因此播放器可以直接跳到 [mm:ss.xx] 條目,而不需要先解析標籤。
設定產生器的輸入
在按下產生按鈕之前,請先準備三項資訊:歌詞文字、起始時間戳記,以及固定間隔。
- 歌詞文字:每行一個顯示事件,在 1 到 500 行非空行之間,總字元數不超過 50,000 字,且任何單一行最多 500 字元。空白行會自動移除。在產生之前,Windows、傳統 Mac 和 Unix 的行尾會先統一處理,因此您可以從任何來源貼上。
- 起始時間戳記:一個 MM:SS.xx 數值,有 2 或 3 位數的分鐘、剛好兩位數的秒數(從 00 到 59)、一個小數點,以及剛好兩位數的百分秒。分鐘欄位最高可達 999,因此即使是長度很長的錄音也能涵蓋。
- 間隔:介於 0.01 到 600.00 秒之間的正小數,最多兩位小數。在產生任何行之前,該數值會先轉換為整數的百分秒數,因此重複相加不會累積二進位浮點數的誤差。
如果您希望加入標頭標籤,也可以填寫可選擇性的標題、演出者和專輯欄位。這些值都會經過去除空白處理,長度限制為 120 字元,若包含方括號或控制字元則會被拒絕,以防止單一欄位在檔案內插入額外的 LRC 標籤。
使用 LRC 檔案產生器建立時間標記草稿
在瀏覽器分頁中開啟 LRC 檔案產生器,並依照下列步驟操作。所有處理都在您的分機內本機執行;不會上傳歌詞文字,也不會綁定帳號儲存或傳送到遠端服務。
- 在歌詞方塊中貼上或輸入每行歌詞,每行一個顯示事件。目標是歌手實際結束一個想法的時刻,而不是他們吸氣的時刻。
- 輸入第一行應該出現的第一個 MM:SS.xx 時間戳記,然後輸入下一行應該相隔的秒數間隔。
- 如果您希望檔案頂端有 [ti:]、[ar:] 和 [al:] 標籤,請填寫可選擇性的標題、演出者和專輯欄位;若要完全省略這些標頭行,則留空即可。
- 點擊產生控制項來產生完整的簡單 LRC 文字。預覽會顯示完整的檔案內容,包括所有標頭標籤,以及第一個和最後一個 [mm:ss.xx] 時間戳記;編輯任何輸入會清除先前的預覽,確保您永遠讀到的是最新的輸出。
- 檢查預覽中的第一個和最後一個時間戳記,確認計算結果能延伸到歌曲結尾,而不會超過 999:59.99 的上限。
- 點擊下載將同樣的字串儲存為不含位元組順序記號的 UTF-8 .lrc 檔案。檔名會在有標題時取自標題,並把不安全的標點符號替換為連字號;若沒有標題,則使用 synced-lyrics.lrc。
- 在目標播放器或專用的 LRC 編輯器中,將下載的檔案與實際錄音並排開啟,並手動調整各行的時間戳記。固定間隔只是一個草稿;真實的人聲幾乎從不會以完全等距的間隔開始。
讀取起始值和間隔值
起始時間戳記和間隔會組合成一個單一的算術規則。間隔會先轉換為整數的百分秒,然後依照每個行的索引各加一次,因此每一個接續的時間戳記都是前一個時間戳記的固定增量。以 00:12.34 為起始、間隔 2.50 秒為例,三行會分別得到 00:12.34、00:14.84 和 00:17.34。
那個序列的計算過程如下。起始時間是 12.34 秒,也就是 1,234 百分秒。2.50 秒的間隔是 250 百分秒。把 250 加到 1,234 得到 1,484 百分秒,格式化回來就是 00:14.84。再加一次 250 得到 1,734 百分秒,格式化回來就是 00:17.34。整個序列都是整數運算,因此相同的輸入永遠會產生相同的輸出,而且結果不會像重複的浮點數加法那樣產生誤差漂移。
如果您的歌曲長度使得最後計算出來的時間戳記會超過 999:59.99,產生程序會失敗,而不是默默地截斷。起始時間與間隔計算指南會逐步說明這個臨界情況,以及當單次執行無法涵蓋完整長度時該如何分割檔案。
加入選擇性的 ti、ar 和 al 中繼資料
可辨識的標頭標籤有三個:[ti:值] 表示標題,[ar:值] 表示演出者,[al:值] 表示專輯。每個值都會經過去除空白處理,上限 120 字元,並驗證不得包含方括號或控制字元,因此演出者名稱中若有遺漏的方括號,也不會被解析器誤認為新標籤。
如果您把三個欄位全部留空,標頭區塊會完全省略,檔案會從第一個 [mm:ss.xx] 行開始。如果您只填寫其中一個或兩個,則只有那些標籤會出現,後面接著一個空白行,再接著時間標記行。時間標記行本身不會被以任何方式修改 ── 產生器不會重寫一般歌詞文字內的拼字、標點、大小寫、語言或版權聲明。
若要更深入地了解如何從純文字轉換成時間標記的輸出,純文字到時間標記輸出指南以更多範例介紹了相同的流程。
會影響產生是否成功的限制
有幾項界線會決定產生會產生可用的檔案,還是會完全中斷,因此預先了解會很有幫助。
| 輸入 | 限制 | 超出時的行為 |
|---|---|---|
| 非空白的歌詞行 | 1 到 500 | 產生程序至少需要一個有效的行 |
| 輸入字元總數 | 最多 50,000 | 產生程序會拒絕更大的內容 |
| 單一行的字元數 | 最多 500 | 產生程序會拒絕更長的行 |
| 起始時間戳記格式 | 2 或 3 位數的分鐘、2 位數的秒數(00–59)、2 位數的百分秒 | 格式不符時產生會失敗 |
| 間隔數值 | 0.01 到 600.00 秒,最多兩位小數 | 產生程序會拒絕超出範圍或小數位數過多的數值 |
| 最後計算出的時間戳記 | 不得超過 999:59.99 | 產生會失敗;不會默默地截斷 |
| ti、ar、al 的值 | 去除空白、120 字元以內、不得含方括號或控制字元 | 產生程序會拒絕違反這些規則的值 |
輸入中任何位置出現的控制字元都會被拒絕,而不是被插入到一個播放器可能以不一致方式解析的文字檔案中。這個協定刻意保持精簡:只驗證事實上的百分秒時間戳記子集合,因此該子集合以外的內容仍由播放器和您後續選擇的工作流程負責。
有幾種時間戳記格式在建構上就是有效的,值得隨時參考:
| 起始值範例 | 意義 |
|---|---|
| 00:00.00 | 歌曲開頭,零百分秒的偏移 |
| 09:59.99 | 略低於十分鐘,最高的有效秒數值 |
| 10:00.00 | 剛好十分鐘,三位數的分鐘欄位 |
| 123:45.67 | 長錄音,接受三位數的分鐘欄位 |
在目標播放器中測試檔案
LRC 格式並非正式的通用標準;它是一個由相關格式組成的事實標準家族,各播放器可自行決定支援哪些子集。有些播放器會辨識 [ti:]、[ar:] 和 [al:] 標籤並將其顯示為曲目資訊;有些則完全忽略這些行。有些能乾淨地處理超過 99 的分鐘值,有些則會溢位或拒絕接受。少數接受 UTF-8 文字;少數仍預期特定的舊式編碼。
正因為有這些差異,最安全的做法是將下載的檔案放進你實際打算使用的播放器中,載入對應的錄音,觀察前幾行是否落在你預期的位置,並調整任何飄移的行。一旦確認播放器以你希望的方式讀取該檔案,你可以保留這個單一檔案,或將其視為草稿,再使用專門的編輯器產生重新精準對時的版本。
所有運算、驗證與檔案產生都在你目前的瀏覽器分頁中完成。你輸入的歌詞不會上傳至 Lizely、不會儲存於帳號中,也不會送往人工智慧服務;臨時的下載物件網址在直接使用後以及元件卸載時會被撤銷,因此較舊的檔案不會繼續被當作新文字的結果呈現。你仍須自行負責取得所輸入歌詞文字之重製與散布的授權;本工具不提供受版權保護的歌詞、不搜尋目錄、不識別歌曲、不確認所有權,也不授予同步授權。它只是格式化你所提供的文字。