Communitygithub.com

iamaanahmad/captions-subtitles

建立、編輯、翻譯並嵌入字幕與隱藏式字幕 — 使用 Whisper 進行語音轉寫,撰寫 SRT/VTT/ASS 檔案,設定樣式,並為 Shorts、Reels 和 TikTok 製作硬嵌入的單字高亮字幕。適用於任何字幕、轉寫或無障礙需求。

captions-subtitles 是什麼?

這項技能專為 AI Agent(如 Claude Code、Cursor 等)設計,提供完整且專業的字幕與隱藏式字幕處理流程,包括語音轉寫、文字修正、字幕檔撰寫、樣式設定與嵌入。它支援 **openai-whisper** 與 **faster-whisper** 兩種轉寫引擎,後者速度更快、記憶體占用更低,且能產生單字時間戳記。使用者可產生 SRT、VTT 或 ASS 字幕格式,並透過 FFmpeg 進行軟性或硬性嵌入。針對短影音平台,技能內建基於 ASS 的單字高亮(卡拉 OK 風格)範本,能讓當前播放的單字變色,提升觀看體驗。此外,技能也涵蓋影片音訊萃取、格式轉換與跨語言翻譯等實用子任務,是任何涉及社群媒體影片、課程內容或無障礙字幕專案的最佳幫手。

相容平台~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/iamaanahmad/agents-video-editing-skills/tree/HEAD/skills/captions-subtitles

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

字幕與隱藏式字幕

大多數社群影片在靜音狀態下觀看。字幕是編輯的一部分,而非額外添加。

1. 語音轉寫

# openai-whisper (pip install openai-whisper)
whisper audio.mp3 --model small --language en --output_format srt --output_dir captions/

# faster-whisper (pip install faster-whisper):更快、記憶體更低、具單字時間戳
python - <<'PY'
from faster_whisper import WhisperModel
model = WhisperModel("small", compute_type="int8")
segments, info = model.transcribe("audio.mp3", word_timestamps=True, vad_filter=True)
for s in segments:
    for w in s.words:
        print(f"{w.start:.2f}\t{w.end:.2f}\t{w.word}")
PY

先萃取乾淨的音訊,可獲得更好的轉寫結果:

ffmpeg -i video.mp4 -vn -ac 1 -ar 16000 audio.wav

模型大小取決於準確度與速度的權衡:base < small < medium < large。英文建議使用 small 或 medium,口音重或非英語則用 large。

如果已有腳本(您是根據它生成旁白的),請不要信任轉寫的文字。請使用腳本內容,並只透過 Whisper 取得時間對齊(強制對齊)。這樣能確保人名和數字完全正確。

2. 修正文字

校對專有名詞、產品名稱和數字。Whisper 常常聽錯這些。當主題涉及專業領域時,請向使用者索取術語表。

3. 撰寫字幕檔

SRT:

1
00:00:00,000 --> 00:00:02,400
大部分建置在星期五失敗。

2
00:00:02,400 --> 00:00:05,100
以下是原因。

可讀性規則:

  • 最多 2 行,每行約 42 個字元(直向影片約 20 個)。
  • 閱讀速度低於每秒 17 個字元;最短提示長度為 1 秒。
  • 在短語處斷句,不要斷在短語中間。切勿將人名跨提示分割。
  • 提示不可重疊。保留 2 幀間隙或無間隙。

4. 嵌入字幕

# 透過 force_style 軟設定樣式(SRT)
ffmpeg -i in.mp4 -vf "subtitles=captions.srt:force_style='FontName=Arial,FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Alignment=2,MarginV=60'" -c:a copy out/captioned.mp4

# ASS 提供完全控制(卡拉 OK 單字高亮、位置、動畫)
ffmpeg -i in.mp4 -vf "ass=captions.ass" -c:a copy out/captioned.mp4

Windows 路徑陷阱:在濾鏡中,請跳脫磁碟機代號的冒號並使用正斜線(subtitles='C\:/work/captions.srt'),或者從包含檔案的資料夾執行 FFmpeg 並使用相對路徑。

5. 短影音的單字高亮樣式

產生一個 ASS 檔案,每個詞組(2 到 4 個單字)一個事件,並使用 \k 卡拉 OK 標籤或逐字顏色覆蓋,使正在播放的單字變色。典型外觀:粗體無襯線字體、白色文字、3 到 4 像素黑色邊框、品牌強調色用於正在播放的單字,放置在下中三分之一處,不要放在最底部(平台 UI 會遮蓋)。

可作為起點的簡短 ASS 標頭:

[Script Info]
ScriptType: v4.00+
PlayResX: 1080
PlayResY: 1920

[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,72,&H00FFFFFF,&H0000D7FF,&H00000000,&H64000000,-1,0,0,0,100,100,0,0,1,4,0,2,60,60,520,1

[Events]
Format: Layer,Start,End,Style,Name,MarginL,MarginR,MarginV,Effect,Text
Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,{\k30}Most {\k40}builds {\k30}fail

ASS 中的顏色格式為 &HAABBGGRR(藍-綠-紅順序,alpha 在前)。

6. 交付

  • 為社群平台提供已嵌入的版本。
  • 提供獨立的 .srt 或 .vtt 檔案用於 YouTube、LinkedIn 和網頁播放器(觀眾可切換及翻譯)。
  • MP4 中的軟字幕軌:-i captions.srt -c copy -c:s mov_text。

翻譯

翻譯提示文字,而非時間。根據語言調整行數限制(德語和芬蘭語較長,因此需重新換行)。影片公開後,請讓母語人士檢查。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能