字幕
字幕是從 work/transcript.json 計算而來,透過編輯的對話段落進行映射(移除的詞語會消失,環境音填補段落永遠不會被字幕化),根據 config/captions.styles.yaml 中的規則進行分段,以純文字檔案形式寫入,並由 ffmpeg 燒錄。Resolve 不參與此過程。
命令
ave captions <ep> --stage rough --style podcast # -> captions/rough.srt + .ass,新的 edits/rough.vN.json 帶有字幕設定
ave captions <ep> --stage rough --name s2 # 工作階段的編輯(與 --stage rough:s2 相同)-> captions/rough.s2.srt,新的 rough.s2.vN.json
ave captions <ep> --stage select:<name> --style short # 垂直短片:卡拉 OK ASS(每個字 ),區塊位於 65% 高度
ave captions <ep> --stage final --burn [--video exports/final.mp4] # 同時燒錄到渲染影片 -> <video>.captions.mp4
ave captions check <ep> captions/rough.srt # 若有任何規則違反(SRT 或 ASS),則退出碼為 1 並輸出 JSON 問題
ave captions retranscribe <ep> exports/final.mp4 [--srt-out f.srt] [--asr whisper] [--diarize]
樣式:podcast(底部居中,白色,細輪廓)、short(粗體,單字高亮,安全區域避開底部 25% 及右側 120 像素(以 1080 寬度為基準))、minimal(小型,低調)。尺寸為畫布的分數,因此相同樣式在 1920x1080 和 1080x1920 都正確。在 YAML 中調整數值,或在每集的 <ep>/policy/captions.styles.yaml 中覆蓋(深度合併)。
判斷輸出
- 閱讀 JSON 中的
problems。類型:line_too_long、too_many_lines、orphan_line、too_short、too_long、reading_speed、overlap、empty。reading_speed出現在被下一個提示框限制住的提示框時是真實的(說話快):告知人類,不要隱藏它。 - 閱讀 SRT。檢查斷句是否落在標點符號/子句處,而非短語中間(「大部分 / 的」)。如果許多斷句不當,請在 YAML 中調整
avoid_ending_with/clause_starters,而非手動編輯檔案。 - 查看帶有燒錄字幕的影格(在燒錄影片上使用
ave frame):文字在複雜背景上可讀,在安全區域內,不遮蓋下方三分之一處。 - 專有名詞:將其加入
episode.json的glossary並重新執行。可以是{"glossary": {"open ai": "OpenAI"}}(錯誤 -> 正確,支援多詞)或正確大寫的名稱列表["Maren", "Cloudflare"](不區分大小寫比對)。避免列出也是常見詞語的名稱。 drop_fillers(嗯、啊...)預設會被聽到但不被字幕化;設定drop_fillers: []可保留逐字內容。
最終渲染流程
字幕時間取決於最終剪輯。剪輯批准後:先渲染,然後對渲染影片執行 ave captions retranscribe,並將該 SRT 用作側邊檔案(完全匹配聽到的文字和時間)。ASR 引擎是 FluidAudio Parakeet;如果未建置,命令會回退到 whisper.cpp 並在 warnings 中告知。發布前請檢查重新轉錄的 SRT 中是否有誤聽的名稱。
失敗模式
-
重新轉錄的 SRT 看起來全部小寫、無標點、提示框長達 5 秒且時間偏移數秒:這是 whisper.cpp 回退(未找到 FluidAudio;若在工作目錄中,請設定
AVE_FLUIDAUDIO)。重新執行ave captions retranscribe ... --asr fluidaudio --srt-out <新檔案>。在真實集數上測量:whisper 中位數提前 0.55 秒(第 10 百分位 1.4 秒),Parakeet 在 0.13 秒內。 -
JSON 中的字型警告:樣式偏好的字型未安裝;它會回退到系統字型(永遠不會失敗)。將 OFL 字型放入
motion-kit/brand/fonts中,以確保跨機器輸出一致。 -
No speech falls inside this edit's dialogue:編輯中只有填補段落或缺少轉錄;請先執行ave transcribe。 -
燒錄影片尺寸與文件畫布不同(例如代理檔案):ASS 會自動根據影片實際尺寸重新生成。
-
永遠不要覆蓋現有編輯:每次執行都會建立下一個
vN。captions/中的字幕檔案是衍生檔案,會被取代。
檢查點
在燒錄整個最終影片或發布短片之前,暫停並向人類顯示樣式選擇和一個已燒錄字幕的影格。