跳至主要內容
SubtitleMatrix

去除字幕內時間碼

文字樣式正規表達式取代
或者貼上字幕文字

選項

一條正規表達式,對每條字幕的文字進行比對。所有符合項目都會被取代。這一節的兩個頁面共用這個欄位:一個預設留空,供你填入既有的表達式;另一個預填一條可自由修改的表達式。

每個符合項目被取代成的內容。留空則刪除所有符合項目。與字面尋找取代頁不同,這裡的美元符號有特殊意義:$1 表示符合項目中的第一個括號分組,$& 表示整個符合項目,$$ 表示一個字面的美元符號。

編譯表達式時使用的字母。預設開啟 g 和 u:u 讓表達式按字元而不是按碼元讀取文字,\p{L} 這類寫法才名副其實。加上 i 忽略大小寫,加上 m 讓 ^ 和 $ 符合每行首尾,加上 s 讓點號也能符合換行。清空這個欄位則以無旗標編譯。任何其他字母都會被拒絕而不是忽略,因為在你不曾要求的旗標下執行,表達式會悄悄地變成另一個意思。

時間以哪個影格率計算。在格式頁面上,這是 MicroDVD 需要的值,因為它把時間存成影格編號。在影格率頁面上,它是檔案當初對應的速率 —— 字幕是照這個版本製作的 —— 而頁面的第二個欄位填你要搭配的影片速率。常見的有 23.976、24、25、29.97、30、50、59.94 和 60。填錯會讓整條時間軸位移;在影格率頁面上,位移是按比例發生,而不是固定的量。

這一頁移除印在字幕文字裡的時間戳記——轉錄稿、自動字幕匯出或粗剪版本常常在每一行開頭帶著的 `[00:00:01]`。那些戳記是詞的一部分,不是字幕的一部分:它們在畫面上、是讀者看到的東西,而這一頁把它們連同括號與後面那個空格一起拿掉。播放器用的那些字幕時間本身,一個都沒動。

它刻意不是「刪掉括號裡任何東西」的一頁。音效提示留著——`[door slams]`、`[phone rings]`、`(music)` 是聽障軌道有義務攜帶的資訊,而一份滿是時間戳記的轉錄稿,正是同時會有這些東西的檔案。只是看起來像時間的數字也留著:`10:30` 是一天中的時刻、沒有秒,而 `12:34:56:07` 是四段的影格時碼,不是時鐘。只有帶時、分、秒的戳記會走。

框裡的樣式決定這件事,而你可以改它。它的兩端都會檢查候選字旁邊的字元——前一個或後一個是數字或冒號,就表示這是更長的東西的一部分,一點都不屬於我們。這個檢查不是裝飾:沒有它,引擎會很高興地從 `12:34:56:07` 中間開始,那一行回來變成 `SMPTE 12:` 加上後面剩下的東西,而頁面回報移除了一處。如果你的檔案用不同的形狀——沒有小時的 `MM:SS`,或大括號裡的戳記——改樣式,而不是繞過去。

不上傳,每份檔案按自己的格式寫回,一個資料夾的轉錄稿可以一次進佇列。如果一條字幕的整段文字就是一個戳記,字幕會留著而文字是空的:時間軸上的洞是另一個問題,跟一行不該存在的文字不同,而品質工具是找它的地方。

範例

每行都帶著當下時刻的轉錄稿

輸入

[00:00:01] We should go.
[00:00:05] The train leaves at 10:30.

輸出

We should go.
The train leaves at 10:30.

兩個戳記都走了,連括號與後面的空格。第二行才是要看的:10:30 是只有兩段的時刻、沒有秒,所以原樣留在那裡。這個區別就是這一頁為什麼跑樣式、而不是刪掉括號裡任何東西的全部理由。

真正的字幕檔裡的戳記

輸入

1
00:00:01,000 --> 00:00:04,000
[00:00:12] (phone rings)

2
00:00:05,000 --> 00:00:08,000
(00:01:02.500) So I said yes.

輸出

1
00:00:01,000 --> 00:00:04,000
(phone rings)

2
00:00:05,000 --> 00:00:08,000
So I said yes.

方括號、圓括號與毫秒——全都是一條規則。音效提示與句子都從最左邊開始,每個區塊上方的字幕時間沒被碰,因為那是檔案的時間軸而不是文字。

所有看起來像時間戳記、其實不是的東西

輸入

1
00:00:01,000 --> 00:00:04,000
SMPTE 12:34:56:07 and a ratio of 1:2:3 here.

2
00:00:05,000 --> 00:00:08,000
Call me at 10:30.

輸出

1
00:00:01,000 --> 00:00:04,000
SMPTE 12:34:56:07 and a ratio of 1:2:3 here.

2
00:00:05,000 --> 00:00:08,000
Call me at 10:30.

檔案逐位元組回來,這就是重點。影格時碼、比例與沒有秒的時刻都留著——影格時碼是最尖銳的情況,因為前面沒有那個檢查的樣式會從第三個字元開始,吃掉 `34:56:07`,留下一行寫著 `SMPTE 12:`、看起來幾乎合理。

常見問題

移除戳記之後,字幕時間會改變嗎?

不會。這一頁改的是畫面上的文字;播放器讀的起止時間在檔案的結構裡,原樣回來,連字幕編號與順序也一樣。如果一份檔案需要移動時間軸,那是時間軸工具的範圍。

為什麼像 10:30 這樣的時間還留著?

因為它只有兩段、沒有秒,而樣式要求的是依序出現的時、分、秒。這一頁移除的戳記是錄音裡的位置;10:30 是有人說出口的一天中的時刻,刪掉它會改變角色說的話。如果你的檔案確實帶兩段的戳記,把小時從樣式裡拿掉,再把它前面的防護加回去。

會移除像 12:34:56:07 的影格時碼嗎?

不會,而那正是這個樣式繞著它寫的情況。它的兩端都檢查鄰接字元:候選字前面或後面是數字或冒號,就表示它是更長的東西的一部分,不動它。沒有那個檢查,引擎會從第三個字元開始、移除 `34:56:07`,把那一行變成 `SMPTE 12:`——一行看起來合理、卻已經丟掉資訊的文字。

為什麼我檔案裡的音效提示活了下來?

因為它們不是時間戳記。移除 `[00:01:23]` 的樣式沒有理由碰 `[door slams]`,而這是刻意的:非語音資訊正是聽障軌道存在的目的,而帶著印刷戳記的檔案往往正是帶著它的人。如果你要的是一整類的括號文字消失,另有頁面會移除任何成對的括號並把後面的空隙補起來。

我可以改樣式嗎?

可以——框是可編輯的,而且它是一個完整的正規表達式框,所以一般樣式那頁能用的這裡都能用。值得保留的兩件事是跟著戳記的括號組與它後面的空格,以及兩端的防護,因為沒有它們,一個更長的數字會被切一半。如果你的戳記是沒有小時的 `MM:SS`,拿掉小時那一組就是你要的修改。

一條字幕只有時間戳記時會怎樣?

戳記走了,字幕的文字變成空的,所以那條字幕在那幾秒什麼都不顯示。字幕本身不會被刪除:時間軸上的洞跟一行不該印出來的文字是兩個不同的問題,而移除文字是這一頁的全部工作。空字幕之後用品質工具很容易找,那才是決定它們該變成什麼的地方。

LRC 檔自己的時間戳記也會被移除嗎?

不會。在 LRC 檔裡,行首的 `[mm:ss.xx]` 是檔案的時間,而這一頁只改一行的文字,從不改它的時間。SRT 的字幕編號與時碼、WebVTT 的 cue 設定也一樣。只有印在文字裡面的戳記才會被移除。

相關工具