廣告品牌更換 (Ad Rebrand) 是做什麼的?
將一批現有廣告轉換為新品牌:每個口頭提及皆以原始說話者的複製語音重新配音,每個字幕皆以影片自身的字幕字體重新排印,每個畫面內的標誌/標籤/標記皆重新繪製或乾淨去除 — 同時保持廣告的其餘部分不變(相同的畫面、時間軸、音樂)。
使用子代理進行平行處理(Agent 工具,run_in_background: true,一個訊息啟動所有獨立代理)。提示模板位於:references/agent-prompts.md。開始前請先閱讀 references/lessons.md — 其中記錄了上一次執行時出錯的狀況。
首先需要確定的輸入
- 舊名稱(產品與品牌)與新名稱 — 以及 Whisper 可能聽錯舊名稱的方式(例如 "physio rest"、"artivate")。
- 檔案(影片、圖片)。在一個使用者可以保留的專案資料夾中工作(例如 ~/Downloads/ Video Edits);絕不編輯原始檔案。
工作流程
-
設定。
scripts/setup_jobs.sh PROJECT START_N video1 video2 …→job-NN/{assets/source.mp4,analysis,project,renders}。將圖片複製到PROJECT/images/source/。環境:透過 Homebrew 安裝的 ffmpeg/whisper-cli,Python venv~/.cache/video-studio-venv(包含 numpy、opencv-contrib、pillow、soundfile、demucs、torch;pyworld 用於歌唱詞語),whisper 模型~/.cache/whisper/ggml-small.en.bin。如果缺少,則進行安裝(Homebrew 需要在終端機分頁中使用使用者的密碼)。 -
分類(平行處理,每個影片一個代理)。 模板 §1。每個代理寫入
analysis/triage.json|md,內容包含精煉的語音時間範圍、說話者 + 乾淨的複製參考範圍、每個視覺/字幕出現的幀範圍以及異常情況。自行檢查圖片(以全解析度放大查看標籤/標記)— 許多圖片無需處理。 -
整合並詢問一次(AskUserQuestion):
- 語音使用權:列出每一個必須複製的獨特聲音(將共用旁白的影片分組 — 比較人聲主幹的包絡線;比較中位數 F0 以區分說話者)。複製語音需要使用者明確同意每個聲音。
- 任何非舊品牌但看起來有問題的內容:產品上的其他品牌標記、零售/代言場景(店員、商店標誌)、不一致的主張、因更名而產生的腳本冗餘。第三方浮水印:標記出來,絕不刪除。
- 歌唱提及:說明需要重新調整音高,且需要人工聆聽。
-
立即啟動視覺團隊(模板 §2)— 它不依賴語音。將相同剪輯的影片分組給一個代理處理。圖片代理:模板 §5。
-
語音。 從每個工作的歌聲主幹中匯出複製參考(25–35 秒,不含品牌名稱)到
PROJECT/voice_refs/。優先使用 Fish API(examples/voice-splice/fish_tts_api.py,金鑰在~/.config/video-studio/.env中),如果 API 額度足夠;否則在使用者 Chrome 的 Fish 網頁應用程式中建立私人複製 —references/fish-audio-web.md。在一個腳本中生成每個聲音的所有台詞,包含兩種版本,儲存到voice_refs/takes/。 -
音訊團隊(平行處理,每個語音/工作群組一個代理)。 模板 §3 用於語音,§4 用於歌唱詞語。輸出:每個工作的
analysis/stems/vocals_nookwave.wav,並透過轉錄驗證。 -
一旦圖像與語音都準備就緒,立即組合每個工作:
scripts/mux_final.py JOB OUT_NAME.mp4(更換品牌後的圖像 + 新歌聲 + 原始音樂主幹)。如果視覺代理回傳未完成的結果,請自行執行其project/rebrand_job.py。 -
自行 QC 每個最終版本 — 代理的報告只是聲明,並非證明:
scripts/check_final.py source.mp4 final.mp4 --old "physio|fisio|artuvate|artivate" --new "nook" --frames <每個已修正項目的其中一個影格>→ 幀數匹配、解碼乾淨、與來源相比的音量、零個口頭舊名稱,以及你必須查看的來源|最終比對表。如果總數看起來有問題,則在每個提及處周圍進行 5 秒視窗的逐點轉錄(全檔案 Whisper 會合併句子)。對於歌唱台詞,預期 Whisper 在原始版本上也會有困難。 -
交付。 最終檔案放在專案根目錄,使用描述性名稱,如果需要則建立一個 zip 檔(
zip -0,影片已壓縮),並提供摘要:每個檔案變更的內容、需要人工聆聽的部分(歌唱詞語、較短名稱後的停頓長度)、已知不完美的影格,以及已標記的非品牌問題。
選用:更吸引人的剪輯
對於在品牌更換之上提出的 "讓它更吸引人" 的要求,examples/engagement-edit/ 包含計畫建構器(基於句子的保留清單,對齊安靜點、標註、拉近鏡頭)和渲染器(在跳接剪輯上交替縮放、品牌化標註、進度條、合成音效、在剪輯點修正字幕保持、loudnorm −14 LUFS)。重複使用而非重寫。
捆綁檔案
scripts/setup_jobs.sh、scripts/mux_final.py、scripts/check_final.py— 通用。examples/— 可運作的、來自首次執行的特定工作程式碼(路徑和幀編號是硬編碼的;請調整,不要盲目執行):caption-and-tag-library/— 字幕重繪、旋轉皮革標籤、弧形面板、袋子擦除、多尺度追蹤(rebrand_job01.py);字形裁剪字幕、雕刻/壓印標籤、追蹤袋子重新印刷(caption_lib.py、text_lib.py、track_lib.py、rebrand_job05.py)。web-and-sign-library/— 自訂字形字幕(captions.py)、建築招牌面板、網頁文字重新設定、標籤按壓、手動關鍵幀翻轉袋子(rbk.py、rebrand_job02.py)、筆記型電腦螢幕頁面(rebrand_job06_laptop.py)、評論頁面滾動、片尾卡標誌、第三方浮雕移除(rebrand_job07.py)、QC 對照表(visual_qc.py)。voice-splice/— 測量時間範圍的單詞替換,支援替換選項;Fish API 客戶端。sung-word/— 基於 WORLD 的重新演唱,疊加在原始旋律上。still-image/— 對包裝進行單應性文字替換。