跳至主要內容
SubtitleMatrix

VTT 轉 ASS

格式轉換WebVTT(VTT)
或者貼上字幕文字

這次轉換會改變什麼

有 2 項會被捨棄或需要你決定

  • 精確度

    時間精確度——輸出的時間刻度較粗,因此每個時間戳記都會四捨五入到最接近的 10 毫秒

  • 格式專屬內容

    來源格式保留在字幕之外的內容(非字幕區塊、檔案標頭文字、單條字幕的設定、被註解掉的事件)——目標格式沒有地方存放它們

這份清單來自這兩種格式的能力矩陣,而不是你載入的這份具體檔案。如果具體檔案用到了格式允許、但矩陣沒有建模的特性,可能會遺失更多。

這一頁把 WebVTT 轉成 ASS。拖入檔案或貼上文字,就會拿回帶有腳本標頭、樣式表與對話事件的 ASS;轉換全程在瀏覽器裡完成,不上傳、不需要帳號,頁面載入後即使斷網也能繼續使用。

兩種格式在文字、換行與字幕順序上一致,所以產物是同一批字幕換成更豐富的語法。動手前有兩處差異值得知道:ASS 以百分秒存時間,00:00:01.234 必須變成 0:00:01.23,每個時間碼取整到最近的 10 毫秒,上方報告會先說清楚;而 ASS 需要樣式表,WebVTT 沒有對應概念,轉換器會替你寫一份 Default 樣式(Arial、20、黑色描邊),之後可以在任何字幕工具裡修改。

帶不過來的是 WebVTT 放在字幕之外的所有東西:標頭列與它的註解、NOTE/STYLE/REGION 區塊,以及時間碼後面可能跟著的設定,例如 align:start 或 position:10%。ASS 會在對話文字裡用自己的覆寫碼表達位置,這次轉換不會替你憑空發明一組,所以這些設定如實列為遺失;檔案載入後,報告還會說明這份檔案實際有多少處。

不規則的輸入也能讀:缺少標頭、Windows 換行、時間碼前一列雜訊或 BOM 都不會報錯。一次拖入一個檔案或整季影集,佇列依序處理、可中途停止,結果打包成單一 ZIP。

範例

一份典型的 VTT 檔案轉成 ASS

輸入

WEBVTT

intro
00:00:01.000 --> 00:00:04.000
Hello there.

00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.

輸出

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:04.50,0:00:08.00,Default,,0,0,0,,Second line with {\i1}italics{\i0}.

這份產物遺失了精度與格式私有內容;其餘部分逐列一致。

同一轉換遇到一份格式不規則但可讀的輸入

輸入

a stray comment line
cue-id-1
00:00:01.000 --> 00:00:02.000
No header, two lines before the timecode.

輸出

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:02.00,Default,,0,0,0,,No header, two lines before the timecode.

真實檔案常見的損壞:混合換行、散落空白、留空欄位。對照上面的乾淨範例,可以看出解析器容忍到什麼程度。

常見問題

VTT 轉 ASS 時時間碼為什麼被取整?

ASS 以百分秒記錄時間,WebVTT 以毫秒記錄。00:00:01.234 會變成 0:00:01.23,每個時間碼最多移動 5 毫秒;看影片時察覺不到,但拿檔案和另一份逐格比對時就有差。

VTT 轉 ASS 後的樣式表是從哪來的?

是替你寫的,因為沒有樣式表的 ASS 檔案無法播放。產物只有一條名為 Default 的樣式——Arial、字級 20、白字黑描邊——每一列對話都指向它;事後可在字幕編輯器裡修改,但重跑轉換會覆蓋你的改動。

VTT 時間碼後的 align:start 或 position:10% 到 ASS 裡去哪了?

被丟棄。ASS 能在螢幕上精確定位,但用的是文字裡的覆寫碼——左上角是 \an7,精確座標是 \pos(320,240)——而 WebVTT 的設定是另一套更受限的詞彙,沒有逐一對應的關係。轉換寧可不猜位置,把文字原樣留下並回報設定遺失。

VTT 的 NOTE、STYLE 與 REGION 區塊轉成 ASS 後還在嗎?

不在。它們是 WebVTT 獨有的構造,ASS 沒有對應;其中 STYLE 最需要留意,因為它可能裝著整份檔案的版式規則,而不只是一句註解,這部分樣式得在 ASS 裡重建。

受保密的 WebVTT 能在這頁轉成 ASS 嗎?

可以。檔案在瀏覽器分頁裡讀寫,受保密協議約束的 VTT 不會離開所在機器——沒有上傳步驟,也沒有伺服器端解析;輸出寫在本機,頁面斷網後仍能繼續轉換。

相關工具