視訊與字幕·字幕工具包
「清理」字幕檔案意味著什麼:標籤、程式碼和雜訊格式
· 工作原理
字幕 文字處理 檔案格式
字幕檔會收集垃圾:類似 HTML 的標籤、其他格式的樣式程式碼、雜訊 BOM 和混合行結尾。這篇文章解釋了每種混亂是什麼,它從哪裡來,以及如何在不觸及文字的情況下以乾淨的步驟將其刪除。
字幕顯示在螢幕上「{\an8}」和「<i>」-不乾淨字幕檔的明顯症狀
當標題顯示標籤的字元而不是遵循它時,播放器告訴您它沒有實現該標記。 SRT 沒有格式規範,因此支援是傳統的:許多玩家尊重一小組類似 HTML 的標籤,並該組之外的任何內容都被繪製為文字文字。在一個播放器中正確渲染並在另一個播放器中顯示大括號的檔案沒有改變;只有被尊重的標籤集有。
這就是為什麼清理是一項真正的操作而不是裝飾性的整理。雜亂並不是剛好醜陋的裝飾。它是為一種格式編寫的指令,不同的玩家將其作為對話讀取,解決方法是刪除指令,同時保留每個單字完整。
混亂的來源 — 從樣式繁重的格式匯出、OCR 輸出、新增自己標記的編輯器
大多數混亂都是透過轉換產生的。以 ASS 或 SSA 等樣式密集型格式編寫的檔案內嵌定位和外觀指令,而忠實映射時序的轉換器通常會將這些指令作為文字傳遞。字幕編輯器添加自己的標記以識別說話者和強調重點,而內建字幕的光學字元識別則引入了無作者鍵入的雜散標點符號和雙倍空格。
這些來源在他們自己的世界中都沒有畸形。 ASS 覆蓋區塊在 ASS 中是有意義的。問題在於 SRT 沒有等效項,因此無損轉換會產生一個檔案,其中指令作為字元而不是行為存在。
格式化標籤 - 斜體、粗體和字體標籤,玩家尊重它們並按字面顯示它們
尖括號標籤,使用正規表示式刪除小於和下一個大於之間的所有內容。其中包括斜體和粗體標籤、WebVTT 類標籤(例如提示類註釋)以及命名發言者的語音標籤。重要的屬性是,這是一個文字替換,而不是 HTML 解析器,而且它不會嘗試將開始標記與結束標記相匹配。
這種簡單性的代價是值得了解的。真正包含小於和大於的對話行,例如口頭不平等,將把它們之間的文字連同括號一起刪除。它在對話中很少見,在技術字幕中很常見,因此值得掃描討論代碼或數學的材料的清理傳遞的輸出。
定位和樣式代碼 - 像 {\an8} 這樣的程式碼在 ASS/SSA 中意味著什麼以及為什麼它們在 SRT 中是噪音
大括號代碼透過覆蓋左大括號和右大括號之間的所有內容的第二次替換來刪除。在 SubStation 格式中,這些是覆蓋區塊,最常見的是將一條線移動到框架頂部的區塊,這樣它就不會與燒入的文字發生衝突。其他人則設定字體、顏色、旋轉或卡拉 OK 時間。
在 SRT 檔案中,它們都沒有任何意義,這就是它們被刪除而不是翻譯的原因。位置指令沒有 SRT 等效項可以翻譯為:該格式完全不包含放置。刪除程式碼會失去作者的意圖,即該行應位於框架頂部,並這種損失是真實的,但最好是將程式碼列印到檢視器。
看不見的混亂-位元組順序標記、混合的 CRLF 和 LF 行結尾以及尾隨空格
不可見的雜亂在解析過程中會被更早地處理,並值得將其分離,因為它根本不是文字的一部分。檔案開頭的位元組順序標記會在其他任何內容之前被剝離,因為否則它會附加到第一個索引號並花費第一個提示。回車符是標準化的,無論是 Windows 回車對還是單獨的回車符,因此在兩個平台上編輯的檔案會正確分割成區塊。
提示內的空白由標籤處理。兩個或多個空格或製表符的執行會折疊為單個空格,每行都會單獨修剪,並在重新連接行後,整個提示都會被修剪。字元實體被故意保留:&符號實體是查看者應該看到的內容,而不是標記,而解碼它的清理器將編輯對話而不是刪除指令。
工作範例:清理 200-cue 匯出 — 哪些變更、哪些保留以及如何檢查結果
清理大型匯出的變化比看起來小。採取一個 200 個提示檔案,其中轉換器已將幀頂部代碼添加到 60 個提示,並在另外 40 個提示周圍包裹了強調標籤。兩次替換刪除了程式碼和標籤,空白傳遞折疊了刪除留下的雙倍空格,並 200 個提示變成了 200 個具有相同單字和相同時間的提示。
還有兩個步驟很重要。一旦程式碼消失,整個內容都是雜散程式碼的提示就會變成空,並空提示會在單獨的通道中刪除,而不是作為空白區塊發出,因為帶有時間戳且沒有文字的提示是一些玩家渲染為閃光的間隙。寫回檔案會對來自一個的提示重新編號並保持它們連續,因此刪除不會在序列中留下漏洞。透過比較提示計數並抽查任何最初包含實體的行來檢查結果。
這不包括什麼-重寫文字本身、拼字或翻譯;這些話是你的
清理會刪除標記並不會觸及語言。它不糾正拼字、擴展縮寫、修復轉錄錯誤或翻譯。如果標題說錯了詞,那麼它會在格式正確的情況下說錯詞。這個界線是經過深思熟慮的:一個默默重寫對話的工具不可能信任它不理解的材料。
它也不修復結構。區塊缺少時間戳記的檔案有解析問題,而不是格式化問題,從中刪除標籤不會產生提示。編碼錯誤同樣超出了範圍。使用錯誤的字元集解碼的檔案會產生格式完美的提示,其文字是錯誤的,並沒有任何標記刪除可以檢測到這一點,因為結構沒有被破壞。
重點:刪除標記,保留含義 - 字幕工具包的簡潔步驟如何處理常見的混亂並記錄它留下的內容
規則是刪除標記,保留意義。尖括號標籤和大括號程式碼之所以消失,是因為它們是玩家忽略或列印的指令。雙倍空格和每行填充消失是因為它們是刪除或原始匯出的產物。實體、標點符號和每個單字都保留下來,因為這些是觀眾應該閱讀的內容。
透過字幕工具包轉換器執行包含大量標籤的匯出,並將其與原始檔案進行比較,而不是一目了然地相信輸出。確認提示計數未更改,除非提示確實為空,檢查包含實體的任何行是否仍包含該實體,並掃描討論程式碼或數學的行以查找因雜散尖括號而遺失的文字。