cv.cm

AI · AI 短影音創作

AI 自動上字幕教學:怎麼幫影片加字幕

閱讀約 9 分鐘

簡答

要自動上字幕,先用 Whisper 之類的語音辨識模型轉出逐字稿,修正人名和數字,再把文字拆成每行最多約 42 個字元(中文約 16 字)的短句,閱讀速度控制在每秒 20 個字元以內,最後匯出 SRT 或 WebVTT 檔。上傳時可以當作外掛字幕,也可以燒錄進畫面。

開啟語音轉文字

AI 字幕產生器到底做了什麼

自動字幕來自自動語音辨識(ASR)。模型聽取音軌,寫出每一句話,並標上開始和結束時間。Whisper 是知名的開源例子:論文提到它用了 68 萬小時的多語言音訊訓練,所以同一個模型能辨識多種語言,也能翻譯成英文。想了解模型內部如何運作,請看我們的語音轉文字原理指南。

ASR 的輸出只是草稿,不是完成的字幕。YouTube 自己的自動字幕說明頁就提到,品質可能不一,並請創作者務必檢查,修正沒有正確辨識的地方。想要好字幕,還要補上逐字稿沒有的三個步驟:修正錯誤、把文字拆成好讀的行數、替每一行安排恰當的時間,讓觀眾讀得完。

從影片產生字幕,常見的做法有三種:直接用平台內建功能(YouTube、TikTok 和 Instagram 都有某種形式的自動字幕)、用剪輯軟體(CapCut 或剪映、Premiere Pro、DaVinci Resolve、Descript),或是用獨立的轉錄工具匯出字幕檔。獨立的字幕檔可控性最高,也能在每個平台重複使用。例如 cv.cm 的語音轉文字工具會在瀏覽器裡執行 Whisper,可匯出 TXT、SRT 或 VTT,音訊不會上傳。

完整流程,一步一步來

  1. 從最終剪輯輸出乾淨的音軌。字幕必須和你要發布的版本一致,所以要最後再轉錄,等畫面定剪之後。
  2. 用 Whisper 等級的模型轉錄。如果知道語言,請手動指定;短片或開頭有音樂的影片,自動偵測可能會猜錯。
  3. 邊聽邊讀逐字稿,修正人名、品牌名、數字、專有名詞和同音字。
  4. 把文字拆成字幕卡:每張一到兩行短句,在自然的語意停頓處換行。
  5. 檢查時間軸:每張字幕卡要在話開始時出現,並停留到足夠讀完。
  6. 針對螢幕調整樣式:字體大小、描邊或底框,以及安全區內的位置。
  7. 交付:把 SRT 或 VTT 當作字幕軌上傳,或把字幕燒錄進影片,也可以兩者都做。

每行字數與閱讀速度的規則

專業的字幕規範有明確的上限,讓觀眾讀字幕時不會錯過畫面。Netflix 公開各語言的定時文字(timed text)風格指南,這些數字可供查證,適合當作起點:

語言(Netflix 指南)每行字元數每張字幕卡行數閱讀速度(成人)閱讀速度(兒童)
英文(美國)42最多 2 行每秒最多 20 個字元每秒最多 17 個字元
中文(簡體)16最多 2 行每秒最多 9 個字每秒最多 7 個字

英文指南也說明了斷行的位置:在標點之後、連接詞之前、介系詞之前斷行。冠詞要和名詞放在同一行,形容詞和名詞放一起,名和姓也不要拆開。

閱讀速度的規則實際上是這樣用的。一張寫著 Three things nobody tells you about captions 的字幕卡,含空格共 44 個字元。以每秒 20 個字元計算,至少要在畫面上停留 2.2 秒。如果說話的人只花了 1.5 秒,就要不是讓字幕停留更久,就是縮短文字,例如改成 Three things nobody tells you(29 個字元,約 1.5 秒)。

直式短影音的限制要比電視螢幕更嚴格。1080 像素寬的手機畫面配上大而粗的字體,每行能放的字元遠少於 42 個。實務上,一行約 20 到 30 個拉丁字元,或 8 到 12 個中文字,在手機上讀起來最舒服。許多創作者每張字幕卡只放一小句,而且常常換卡。

SRT 與 WebVTT:兩種字幕檔格式

幾乎所有平台和剪輯軟體都支援 SRT。WebVTT(VTT)是 W3C 制定的網頁字幕格式,用於 HTML 的 video 元素。兩者看起來幾乎一樣:

SRT (file: captions.srt)

1
00:00:00,000 --> 00:00:01,600
Three things nobody tells you

2
00:00:01,600 --> 00:00:03,400
about auto captions.

WebVTT (file: captions.vtt)

WEBVTT

00:00:00.000 --> 00:00:01.600
Three things nobody tells you

00:00:01.600 --> 00:00:03.400 line:70%
about auto captions.
  • SRT 會替每張字幕卡編號,毫秒前面用逗號:00:00:01,600。
  • WebVTT 的第一行是 WEBVTT,毫秒前面用句點:00:00:01.600,而且不需要卡片編號。
  • WebVTT 可以在時間碼後面加上提示設定,例如 line、position 和 align,用來決定字幕卡在畫面上的位置。不過並非每個播放器都會遵守。
  • 兩種檔案都請存成 UTF-8 文字檔,重音符號和中日韓文字才不會亂碼。

燒錄字幕還是外掛字幕

類型是什麼適合缺點
外掛字幕(字幕軌)獨立的 SRT 或 VTT 檔,由播放器疊在畫面上YouTube 上傳、多語言、無障礙、可搜尋的文字不是所有短影音 App 都能上傳字幕檔;樣式由播放器決定
燒錄字幕(開放式字幕)文字直接畫進影片的像素裡TikTok、Reels 和 Shorts,因為很多人靜音觀看;樣式完全自己掌控無法關閉或翻譯;有錯字就得重新輸出

許多創作者兩種都做:短影音 App 用燒錄的設計感字幕,YouTube 則用乾淨的 SRT。以下的 ffmpeg 指令示範兩種做法。subtitles 濾鏡需要包含 libass 的 ffmpeg 版本。

# Burn captions into a 1080x1920 video (white text, black outline, raised above the bottom UI)
ffmpeg -i final.mp4 \
  -vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=12,Bold=1,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=100'" \
  -c:v libx264 -crf 18 -pix_fmt yuv420p -c:a copy captioned.mp4

# Add a soft caption track to an MP4 without re-encoding the video
ffmpeg -i final.mp4 -i captions.srt -map 0 -map 1 -c copy -c:s mov_text \
  -metadata:s:s:0 language=eng soft_captions.mp4

在燒錄指令中,SRT 檔是畫在高 288 單位的虛擬畫布上,所以 FontSize=12 在 1920 像素高的畫面上約等於 80 像素,而 MarginV=100 會把文字從底部往上抬約三分之一。請先用一小段影片測試,再調整。

直式影片的字幕樣式

  • 位置:字幕不要放在畫面下方三分之一,那裡是 App 顯示帳號名稱、說明文字和按鈕的地方。安全區的像素數值請看我們的短影音尺寸指南。
  • 大小:在手機上,剪輯軟體裡看起來偏大的字通常剛剛好。請拿真的手機,用平常的握持距離確認。
  • 對比:白色或黃色文字加上深色描邊或半透明底框,放在任何背景上都清楚。
  • 不要擋住臉。如果說話者的臉在畫面中央,字幕請放在下巴下方,不要蓋住嘴巴。
  • 一支影片只用一種樣式。卡與卡之間換字體和顏色,會讓觀眾去讀樣式而不是內容。

逐字或卡拉 OK 式字幕一次只顯示一到三個字,並標亮正在說的那個字。它需要逐字的時間戳記,Whisper 等級的工具可以產生。在節奏快的口播影片中,它能把視線留在螢幕上,但長篇解說會讓人疲累。建議用在開頭鉤子和金句,其他部分用一般的兩行字幕卡。

字幕翻譯

請翻譯修正後的原文字幕,不要翻譯原始逐字稿。保留相同的字幕卡時間,逐卡翻譯,這樣每一行譯文仍然對得上說話的時刻。

翻譯後長度會改變。表達同樣的意思,西班牙文和德文通常比英文需要更多字元;中文和日文用的字數較少,但閱讀速度上限低得多。翻譯完之後,請對照目標語言的每行字數和閱讀速度限制逐卡檢查,必要時縮短。機器翻譯的字幕檔是快速的初稿,發布前最好請母語者讀過一遍。

自動字幕的常見錯誤與限制

  • 人名和新詞:模型會寫成最接近的常見詞。請準備一份人名和品牌拼法的清單,到逐字稿中搜尋核對。
  • 數字:每個價格、日期和度量值都要對照實際說的內容。字幕裡的數字寫錯,比沒有字幕更糟。
  • 音樂和雜音:背景音樂、人群雜音和多人同時說話都會降低準確度。如果可以,請轉錄把音樂調小的版本。
  • 靜默中冒出文字:實務上,ASR 模型有時會在長時間靜默或純音樂的段落寫出字來。請刪掉出現在沒人說話處的字幕卡。
  • 混合語言:中途切換語言的影片,可能只有其中一種語言被轉錄。請分段,並手動指定每段的語言再轉錄。
  • 無障礙:給聽障與重聽觀眾的字幕還應標示重要的聲音,例如[關門聲],這是 ASR 不會自動加上的。

常見問題

怎麼免費替影片產生字幕?

使用以 Whisper 為基礎的轉錄工具,或剪輯軟體內建的自動字幕,再匯出 SRT 檔。發布前請檢查並修正文字。

YouTube 自動字幕準確嗎?

通常堪用,但遇到人名、數字或雜音多的音訊就不可靠。YouTube 自己也說品質可能不一,並請創作者檢查和編輯。

SRT 和 VTT 有什麼差別?

兩者都是列出字幕文字和起訖時間。SRT 的毫秒前用逗號,並替每張字幕卡編號;WebVTT 以 WEBVTT 開頭,毫秒前用句點,還可以帶位置設定。

字幕每行該有幾個字?

Netflix 的英文指南允許每行最多 42 個字元、最多兩行;簡體中文指南則是每行 16 個字。直式短影音的行數更短會更好讀。

該燒錄字幕還是上傳 SRT?

TikTok、Reels 和 Shorts 建議燒錄,因為想固定樣式,而且很多人靜音觀看。YouTube 和其他語言則上傳 SRT,讓觀眾自己開關字幕。

全部 AI 教學