定時歌詞編輯器
歌詞
空行會被捨棄。已經以 [mm:ss.xx] 開頭的行會保留那個時間。
拖入音訊檔案、貼上歌詞,然後按下播放,在每句開始時按下打點鍵。一切都不會離開這個分頁。
整體平移所有已打點的行
匯出的 .lrc
一行有了時間之後才會出現在這裡。
沒有時間的行不會出現在兩種匯出裡:一行必須先打點,才能在時間軸上有位置。
鍵盤快速鍵
- K 或空白鍵 —— 播放 / 暫停
- 左 / 右方向鍵 —— 後退 / 前進 5 秒
- R —— 為這一行打點並移到下一行
- T —— 在這一行之後插入一行
- Delete —— 清除這一行的時間
- 上 / 下方向鍵 —— 移到上一行 / 下一行
這一頁把一首歌和一串歌詞變成帶時間軸的 .lrc。載入音訊、貼上歌詞——純文字、一行一句都行,也可以是已有時間戳、只想調整的 .lrc——按下播放,在每一句開始的那一刻敲一下鍵。時間點取自音訊元素目前的播放位置,所以它跟隨你正在聽的檔案,而不是頁面裡的某個時鐘。最後一行打點完成後,把結果匯出成 .lrc,或者在你需要餵給字幕編輯器時匯出成 .srt。
歌詞清單就是全部的模型。一行有文字和一個可選的開始時間;沒有開始時間的行,就是你還沒走到的那一行。未打點的行留在編輯器裡,方便回頭補,但它們不會出現在匯出產物裡:沒有開始時間的行在時間軸上沒有位置,替它編一個時間等於把一行放在沒有人選過的時刻。這就是為什麼一首歌只打了一半時,匯出的檔案比眼前的清單短——那不是錯。
四個操作涵蓋了給歌詞對時真正會出問題的地方。打點把一行設為目前播放時間,並自動移到下一行,於是一串歌詞每行只要按一次鍵。清除用來撤掉早敲了半拍的時間點。插入用來補上貼上時漏掉的一行。整體平移把所有已打點的行移動同樣的毫秒數,這正是發現整份檔案比人聲晚了一秒之後要做的事——行與行之間的相對間隔維持不變;負向平移會在零處停住,而不會寫出播放器讀不了的時間碼。
時間模型就是 LRC 自己的模型。一行持續到下一行開始;最後一行沒有下一行,所以給它兩秒,這與本站遇到任何格式本身沒有結束時間時的做法相同。匯出 .srt 時,結束時間就來自這裡——與轉換頁從 .lrc 檔案推導出的時間軸是同一套,所以兩條路會產出一致的時間軸。厘秒是 .lrc 能記錄的精度;12.346 秒會寫成 12.34,所以匯出的檔案讀回來可能與編輯器相差幾毫秒。
音訊由瀏覽器自帶的音訊元素開啟,這一頁從不讀取、解析或上傳它。沒有任何攜帶它的請求;唯一的網路流量就是頁面本身。歌詞清單的草稿保存在本瀏覽器的本機儲存空間裡,誤重新整理不會讓你丟掉一次工作;清除網站資料會一併刪掉。關掉分頁後,歌與歌詞不存在於任何伺服器上。
範例
把純文字歌詞一次打點完成
歌詞
First line of the song
Second line of the song
Third line of the song匯出的 .lrc
[00:12.00]First line of the song
[00:15.30]Second line of the song
[00:18.75]Third line of the song每一條已打點的行就是一條字幕條。.lrc 匯出寫厘秒,所以 18.75 秒正是按鍵那一刻記錄的值;18.754 秒會被寫成 18.75。
替既有的 .lrc 重新對時
歌詞
[00:12.00]First line of the song
[00:14.00]Second line of the song
Third line of the song匯出的 .lrc
[00:12.00]First line of the song
[00:14.00]Second line of the song
[00:17.75]Third line of the song貼上 .lrc 會保留它已有的時間戳。第三行進來時沒有時間戳,在播放到它之前一直是未打點狀態,後來在 17.75 秒被打上點。
常見問題
還沒打點的歌詞行會進入匯出的 .lrc 嗎?
不會。未打點的行沒有開始時間,而 .lrc 只靠時間戳定位一行,沒有東西可寫。它留在編輯器清單裡、旁邊沒有時間;當你播放到它並按下打點鍵,它才加入匯出。這是刻意的設計,不是限制:另一種做法是給這一行編一個時間,把它放在你從未選擇過的時刻——那正是本站盡量避免的無聲發明。
定時歌詞編輯器匯出的 .srt 裡,最後一行歌詞會顯示多久?
從它的開始時間起兩秒。.lrc 本身沒有結束時間——一行持續到下一行開始——所以最後一行沒有可繼承的終點。兩秒是本站對任何格式本身沒有結束時間時的統一寬度,因此這個編輯器的 .srt 匯出與 .lrc 轉 SRT 頁面用同一批時間點會得到同一條時間軸。如果歌裡最後一句真的拖了八秒,事後平移或改時長是誠實的做法,把猜測藏進匯出器則不是。
把歌詞時間軸整體往前移過頭會怎樣?
那些行會停在零,編輯器會說明有多少行被截到邊界。負時間碼在 .lrc 和 .srt 裡都不存在——播放器拿到它,不是拒絕檔案,就是把這一行當成從最開頭開始。平移的用途是修正整份檔案晚了一秒這類偏移;當請求的位移會把第一行推到音軌起點之前,物理上說得通的結果就是零,其餘行維持相對間隔,除非它們也被截住。
可以貼上一份既有 .lrc,只改其中錯的行嗎?
可以,這正是編輯器在貼上時讀取 LRC 時間戳的原因。已經帶 [mm:ss.xx] 標籤的行保留時間;標籤之後的文字才是你編輯的內容;沒有標籤的行從未打點狀態開始。匯入時 [ti:]、[ar:]、[offset:] 這類中繼資料行會被忽略,而不會當成歌詞,因為它們不是任何人會唱的行。一行有多個標籤時取第一個,因為編輯器的模型是一行一個開始時間。
音訊會被上傳,讓定時歌詞編輯器讀取長度或波形嗎?
不會,而且這裡也沒有波形。音訊由瀏覽器內建的音訊元素從本機檔案把手播放;這一頁從不讀取它的位元組、不解碼、也不送出任何攜帶它的請求。時間點來自按下按鍵那一刻音訊元素的目前播放位置,那與波形能給出的數字是同一個。為一整首歌解碼波形只會花掉記憶體和時間,卻不會讓打點更準。
為什麼匯出的 .lrc 與編輯器裡的時間差幾毫秒?
因為 .lrc 記錄厘秒,而編輯器保存整數毫秒。12.346 秒會寫成 [00:12.34]——四捨五入到百分之一秒,不是截斷。讀回檔案得到 12.340 秒,所以每行最多差五毫秒,遠低於播放器能顯示的程度。需要精確時間點時改匯 .srt:它帶毫秒,而且兩份檔案來自同一個字幕條模型。