書譯
書譯

如何翻譯 YouTube 字幕:下載、翻譯、重新上傳而不破壞時間軸

給創作者的 YouTube Studio 工作流程:修正原始字幕、下載檔案、在保留時間戳記的情況下翻譯、檢查字幕時間軸,並依時間軸上傳各語言字幕。

BookTranslator

BookTranslator Team

16 min read

快速解答:翻譯檔案,而非影片

如果你擁有該頻道,新增翻譯字幕最可靠的方式是透過 YouTube Studio 進行檔案來回處理:

  1. 先修正原始語言的字幕。
  2. 從 YouTube Studio 的 字幕 頁面下載該字幕軌。
  3. 翻譯這個帶有時間軸的檔案,讓每個字幕片段都保留原本的開始與結束時間。
  4. 上傳前,先將翻譯後的檔案與原始檔案進行比對檢查。
  5. 在 Studio 中新增目標語言,並以 包含時間軸 的方式上傳檔案。

大多數指南把步驟 3 當成全部工作。實際上,前後兩個步驟才決定新語言的觀眾能否獲得可用的字幕:雜亂的原始字幕軌會被複製到每種語言,而未經檢查的翻譯可能因為一個合併的字幕片段而失去同步。

本指南僅涵蓋你管理之頻道上的影片,不涉及從他人頻道下載字幕或影片。

YouTube 接受哪些格式,以及這對翻譯的意義

YouTube 的支援檔案格式頁面列出了 SubRip(.srt)和 SubViewer(.sbv/.sub)等基本格式、WebVTT(.vtt)和 TTML 等進階格式,以及幾種廣播格式。對翻譯字幕軌而言,關鍵細節如下:

格式YouTube 表示會保留的內容適用時機
SRT(.srt)「無法辨識樣式資訊(標記)。」檔案必須是純 UTF-8。你想要最通用、可攜性最高的檔案,供翻譯工具和字幕編輯器使用。
SBV(.sbv)與 SRT 相同:不支援樣式,需要純 UTF-8。你已經從 Studio 取得一個 SBV 檔案。在使用不支援 SBV 的工具前,先將其轉換為 SRT。
WebVTT(.vtt)支援定位;樣式僅限於粗體、斜體和底線標籤。你的來源字幕軌使用了定位功能,例如將字幕移離畫面文字。
TTML / DFXP支援樣式與定位。你有一份帶有樣式的專業字幕檔,且這些樣式必須保留。

實用原則:除非工具強制轉換格式,否則請使用你將上傳的相同格式進行翻譯。如果你的字幕沒有定位或樣式,SRT 是最安全的選擇。如果有,請保留 VTT,以便定位資訊持續附著在每個字幕 cue 上。

步驟 1:在任何人翻譯之前,先修正來源字幕軌

YouTube 可以透過語音辨識建立自動字幕,但僅限於影片的預設語言。自動字幕只是草稿。人名、產品術語、數字和同音字是常見的錯誤,而每一個錯誤都會被複製到從該字幕軌產生的每一份翻譯中。

在翻譯之前,先以來源語言修正這些錯誤一次:

  • 在 Studio 中,開啟自動字幕軌並選擇 複製並編輯。YouTube 的編輯指南說明,編輯自動字幕會建立一個包含你修訂內容的新字幕軌。
  • 修正專有名詞、技術術語和數字。這些是翻譯工具無法從上下文可靠推斷的詞彙。
  • 拆分包含兩個獨立概念的字幕 cue。在子句中間結束的 cue 在某些語言中較難翻譯,因為動詞或否定詞可能屬於句子的另一端。
  • 發布修正後的字幕軌,然後下載該版本。

如果你計劃翻譯三種目標語言,在來源語言進行一次修正,可以省去翻譯中三次分別的修正。

步驟 2:從 YouTube Studio 下載字幕檔

在 YouTube Studio 中,開啟 字幕,選擇影片,然後找到修正後的語言字幕軌。YouTube 的編輯指南說明點擊 選項 並選擇 下載字幕。

說明頁面並未列出下載提供哪些格式,且 Studio 的選單可能會變動。請使用你的翻譯工具所接受的格式。如果你只取得 .sbv,請在翻譯前將其轉換為 SRT。這兩種格式以不同的版面配置儲存相同的時間碼和文字:

SBV
0:00:07.600,0:00:11.800
If the glue is old, a little heat
softens it in about thirty seconds.

SRT
3
00:00:07,600 --> 00:00:11,800
If the glue is old, a little heat
softens it in about thirty seconds.

SBV 沒有 cue 編號,並以逗號分隔開始和結束時間。SRT 為每個 cue 編號,使用 -->,並在逗號後寫入毫秒。轉換器只需重寫這些部分,因此文字和時間碼應保持不變。

步驟 3:翻譯時不要更動時間戳記

翻譯後的檔案必須保持相同數量的 cue,且每個 cue 的開始和結束時間必須相同。YouTube 根據時間戳記放置每一行文字。如果某個 cue 被移除或合併,其後的 cue 將不再與講者所說的内容相符。

有兩件事會促使翻譯人員更改時間碼,兩者都應謹慎處理:

  • 文字擴展。 西班牙文、德文或法文的句子通常比它所取代的英文句子更長,但時間窗口相同。在加寬 cue 之前,先精簡用詞。
  • 詞序。 如果一個句子被拆分到兩個 cue 中,翻譯人員可能會想合併它們以使語法讀起來自然。請改寫措辭,使每個 cue 單獨來看仍然合理。

BookTranslator 的字幕翻譯工具 接受 SRT、VTT、ASS 和 SSA 檔案,並將每個 cue 的時間戳記附著在翻譯文字上,因此你不需要將文字行複製到聊天視窗中再複製出來。它不讀取 SBV,因此請先轉換。為每個目標語言建立一個翻譯任務。如需了解 AI 字幕翻譯一般會出錯的地方,請參閱 AI 字幕翻譯工作流程。

無論你使用什麼工具,請將來源檔案與翻譯檔案放在一起。下一步你需要兩者。

步驟 4:對照來源檢查譯文

上傳前,請逐條比對譯文檔案與來源檔案。我們為此寫了一支小腳本:check_youtube_subtitles.py。它只使用 Python 標準函式庫,可讀取 SRT、VTT 和 SBV,並執行兩項工作:

python3 check_youtube_subtitles.py convert captions.sbv captions.srt
python3 check_youtube_subtitles.py check captions.srt captions.es.srt

check 指令會回報:

  • 字幕條數有變動;
  • 任何開始或結束時間與來源不同的字幕;
  • 空白字幕、結束時間早於開始時間的字幕,以及重疊的字幕;
  • 超過 42 個字元的行,以及每秒超過 20 個字元的字幕;
  • 不是有效 UTF-8 的檔案,因為 YouTube 要求 SRT 和 SBV 必須是 UTF-8。

行長與閱讀速度的預設值來自 Netflix English (USA) Timed Text Style Guide 中的成人節目限制。YouTube 並未公布對應的限制,因此請將這些值視為起點,並用 --max-line 和 --max-cps 依你的語言調整。Netflix 也為其他語言發布了樣式指南。

實例示範

為了展示檢查器能抓到什麼,我們建立了一段六條字幕的英文範例,內容關於重新裝訂平裝書,然後手寫了兩個西班牙文版本。這些檔案是公開的,你可以自行執行檢查:

乾淨的譯文通過檢查,顯示「No problems found.」。第二個版本則產生這份輸出:

Source cues: 6  Translated cues: 5
Cue count changed: source 6, translation 5
Cue 3: timing changed 00:00:07,600-00:00:11,800 -> 00:00:07,600-00:00:13,400
Cue 4: timing changed 00:00:12,000-00:00:13,400 -> 00:00:13,600-00:00:17,000
Cue 5: timing changed 00:00:13,600-00:00:17,000 -> 00:00:17,200-00:00:20,600
Cue 1: 20.2 characters/second (limit 20)
Cue 1: line has 46 characters (limit 42)
Cue 3: line has 45 characters (limit 42)

以下是各案例發生的情況:

  1. 合併。 譯者將「If the glue is old...」與簡短的「Don't rush this part.」合併。合併後的字幕現在結束於 13.4 秒,之後的每條字幕都位移了一個位置。請閱讀第一個時間錯誤:它指向合併處。其後的錯誤都是該合併造成的結果,因此請先修正第一個錯誤,再重新執行檢查。

  2. 遭修改的結束時間。 這個問題在第一次執行時被隱藏了,因為合併後檢查器比對了錯誤的字幕配對。請將合併的字幕拆回兩條,再重新執行檢查。第一次執行時的行長與閱讀速度警告仍然存在,並出現一個新的時間錯誤:

    Source cues: 6  Translated cues: 6
    Cue 6: timing changed 00:00:17,200-00:00:20,000 -> 00:00:17,200-00:00:20,600
    

    最後一條字幕從 20.0 秒延長到 20.6 秒。這是個小變動,你在檔案中不會注意到,但字幕現在會在講者停止後繼續留在畫面上。

  3. 擴充。「Hoy vamos a reencuadernar un libro de bolsillo」是忠實的譯文,但 46 個字元對一行來說太長,而且字幕速度太快,難以閱讀。乾淨版本使用「Hoy reencuadernamos un libro de bolsillo」,以 40 個字元保留每個細節。

這支腳本不評判翻譯品質。一條軌可能通過所有檢查,卻仍誤譯某個術語。它能抓出只閱讀文字時容易忽略的結構性問題。

步驟 5:上傳各語言並保留時間軸

YouTube 的上傳指南說明了路徑:在 YouTube Studio 中開啟 Subtitles,選擇影片,新增語言,然後在 Subtitles 底下點選 Add,選擇上傳檔案,並在選取檔案前選擇 With timing 或 Without timing。

若是翻譯後的 SRT 或 VTT,請選擇 With timing。檔案中已經有你剛才檢查過的時間戳記。

請勿在翻譯時使用 Without timing 或 Auto-sync。Auto-sync 會將純文字轉錄稿與音訊進行時間對齊,而 YouTube 表示轉錄稿「也必須與影片中使用的語言相同」。為英文影片提供西班牙文轉錄稿並不符合此要求。Auto-sync 適用於來源語言,而非翻譯軌道。

發布前請再檢查兩件事:

  • 語言標籤。 請在正確的目標語言下新增軌道。若將西班牙文檔案上傳為葡萄牙文,選擇葡萄牙文的觀眾就會看到該檔案。
  • 標題與說明。 翻譯字幕不會翻譯你的標題或說明。YouTube 會在 Studio 的同一「字幕」區段中,以標題和說明翻譯的方式另行處理;請參閱翻譯你自己的影片標題與說明。

步驟 6:觀看已發布的軌道

在播放器中選取新語言,觀看影片開頭、對話快速的段落以及最後一分鐘。這些檢查能找出檔案檢查無法發現的問題:

  • 螢幕上的文字或下三分之一圖示被字幕遮蓋;
  • 某個提示在時間上正確,卻切斷了笑點或關鍵詞;
  • 字元顯示為方框,因為來源未以 UTF-8 儲存(請參閱如何修正字幕編碼);
  • 目標語言的行文讀起來正確,但過於密集,無法以正常速度讀完。

如果你需要字幕編輯器、審閱平台或其他翻譯工具,字幕翻譯軟體比較說明了各類工具在何時值得額外設定。

上傳前檢查清單

每個目標語言都請使用這份清單:

  • 來源軌道已在翻譯前修正並發布
  • 下載的檔案為 UTF-8,且為你的翻譯工具接受的格式(必要時將 SBV 轉換為 SRT)
  • 翻譯檔案的提示數量與來源相同
  • 每個開始與結束時間都與來源相符
  • 沒有行超過你的長度限制,也沒有提示快於你的閱讀速度限制
  • 軌道已在正確語言下以 With timing 上傳
  • 如有需要,標題與說明已另行翻譯
  • 已在播放器中觀看軌道的開頭、快速段落與結尾

順序就是重點。每一步在下一步之前都更容易修正:在來源中修正一個名稱只需一次編輯,而在發布後發現同樣的錯誤,則每種語言都需各編輯一次。

相關文章