如何檢查和修改 SRT 字幕
機器生成的字幕不會 100% 正確,發布前要校對。SRT 是純文字,知道格式和常見錯誤類型,校一個 10 分鐘的影片用不了多久。想要的是不帶時間碼的純文字稿(影片轉文字),文末也有做法。
SRT 的格式只有四行
每條字幕由序號、時間碼、文字和一個空行組成:
1 00:00:00,020 --> 00:00:01,240 今天我想給你看 Today I want to show you 2 00:00:01,240 --> 00:00:03,470 一個小團隊如何構建一個有用的產品 how a small team can build a useful product
- 時間碼寫成
時:分:秒,毫秒 --> 時:分:秒,毫秒,注意毫秒前是逗號。 - 雙語字幕就是文字部分有兩行或更多行。
- 條與條之間必須留一個空行。
用什麼工具改
- 文字編輯器:改幾個錯字,系統內建的「文字編輯」(存為純文字)或任何程式碼編輯器就夠。
- 剪輯軟體:匯入 SRT 後對著畫面改,改完再匯出,適合同時要調樣式的人。
- 專門的字幕編輯器:條數多、要大量調時間軸時用,比如開源的 Aegisub。
Twinsubs 目前只負責產生檔案,沒有內建編輯器;這是有意控制範圍,校對交給你熟悉的工具。
改完存回時保持兩點:編碼仍是 UTF-8,副檔名仍是 .srt。「文字編輯」預設存成多重文字時,要先改成純文字格式,否則檔案裡會混進格式資訊。
機器字幕常見的五類錯誤
- 專有名詞人名、公司名、產品名、術語。辨識可能寫成發音相近的詞,翻譯又可能直譯。這類錯誤最該先查。
- 數字和單位年份、金額、百分比。聽錯一位數字意思就變了,務必對著影片核。
- 同音字和漏句背景音樂蓋過人聲的地方,容易漏掉半句或寫成同音字。
- 斷句位置一條字幕在句子中間斷開,讀起來彆扭。合併或拆分條目即可。
- 時間重疊或過短兩條字幕的時間段交叉,或某條顯示不到 1 秒,觀眾來不及讀。部分剪輯軟體遇到重疊會拒絕匯入。
一個省時間的校對順序
- 先搜專有名詞在編輯器裡全域尋找取代,一次改完同一個詞的所有錯誤寫法。
- 再掃數字只看帶數字的條目,對著影片核。
- 最後順著播放看一遍用 IINA 等播放器載入字幕從頭播放,只在讀起來彆扭處暫停。
長影片不需要逐字聽完。按這個順序,大部分錯誤集中在前兩步就能解決。
雙語字幕裡怎麼分清錯在哪一行
雙語 SRT 每條有兩行:目標語言一行,來源語言一行。讀到不通順的地方,先看來源語言那一行對不對:
- 來源語言那行就錯了:是辨識聽錯,改來源語言那行,再順手改對應的目標語言那行。
- 來源語言對、目標語言彆扭:是翻譯問題,只改目標語言那行。
- 兩行都對但意思不順:多半是斷句把一個完整的意思切開了,把相鄰兩條合併,或調整分界。
把 SRT 轉成純文字(影片轉文字稿)
要的不是字幕,是一份沒有序號和時間碼的文字稿,比如整理訪談、課程筆記。Twinsubs 對影片只輸出 SRT,所以做法是先出 SRT,再去掉序號行和時間碼行。兩種做法任選:
做法一:終端機一條指令(macOS 內建工具)
先按需要選檔案:只要一種語言,用單語檔案(如 Interview.zh-Hant.srt);用雙語檔案會把兩種語言都留下。然後在終端機裡執行(把檔名換成你的,含空格要加引號):
tr -d '\r' < Interview.zh-Hant.srt | grep -vE '^[0-9]+$|-->' | sed '/^$/d' > Interview.txt
它做三件事:去掉 Windows 換行符,刪掉只含數字的序號行和帶 --> 的時間碼行,再刪掉空行。結果存成 Interview.txt,原 SRT 不動。
注意:整行只有數字的字幕文字(比如單獨一行「2024」)也會被當成序號刪掉。轉完掃一眼數字出現的地方。
做法二:文字編輯器的正規表達式取代
- 備份:先複製一份 SRT,在副本上操作。
- 刪時間碼行:用支援正規表達式的編輯器(VS Code、Sublime Text 等),尋找
^\d\d:\d\d:\d\d,\d\d\d --> .*\n,取代為空。 - 刪序號行:尋找
^\d+\n,取代為空。 - 刪多餘空行:尋找
\n{2,},取代為\n。
轉出的文字每行是一條字幕,不是自然段。需要連成段落,可以再把相鄰的行合併。需要帶時間位置的稿子,就保留 SRT,不要轉。
即時翻譯另有一條路:可以在會後主動把一場即時翻譯存成文字檔,見開會看雙語字幕。
字幕僅供參考,正式發布前請自行校對,見使用條款第 3 條。
常見問題
SRT 能轉成純文字稿嗎?
能。SRT 是純文字,去掉序號行和時間碼行就是逐字稿。上面「把 SRT 轉成純文字」一節給了一條終端機指令和一個文字編輯器裡的做法。
雙語 SRT 能只留一種語言嗎?
最省事的辦法是直接用 Twinsubs 同時輸出的單語檔案(如 .zh-Hant.srt),裡面只有目標語言。手上只有雙語檔案時,用編輯器的尋找取代,按行刪掉其中一種語言。
SRT 開啟是亂碼,怎麼辦?
多半是編碼問題。用文字編輯器按 UTF-8 重新開啟或另存。Twinsubs 輸出的就是 UTF-8。
整份字幕都比聲音早或晚,怎麼辦?
先確認字幕和影片是同一個檔案的結果。確實整體偏移的話,用專門的字幕編輯器(如 Aegisub 的整體平移時間功能)一次性平移,不要逐條改時間碼。
什麼叫時間重疊?
下一條的開始時間早於上一條的結束時間。部分剪輯軟體遇到重疊會拒絕匯入,把前一條的結束時間改到後一條開始之前即可。
更新於 2026-10-12。 回到雙語幕首頁