人物說話 + 動畫效果 是做什麼的?
創作者自己錄製了講話影片。他的錄影就是旁白:不需要產生語音(不要執行 tools/tts.py 或 standin_words.py)。其他所有流程都遵循 reel-studio 技能和影片的風格技能:風格決定動畫的外觀;這個格式決定他的影片素材如何剪輯以及動畫放在何處。formats/persona-hablando/format.json 列出了他在「格式」頁面上看到的規則——請遵循這些規則。
檔案
footage/— 他的影片片段,按播放順序排列(檔案名稱以01-、02-… 開頭)。他在工作室中上傳這些片段(「新 Reel」或影片頁面 →「錄製」)。沒有版本控制;切勿編輯或刪除它們。audio/takes.json— 每個片段的單字及其對應時間(來自footage.py transcribe)。audio/edit.json— 剪輯結果:保留的部分及其順序。你可以編輯,但需經過他同意。public/footage.mp4、public/vo.wav— 剪輯完成的影片及其音訊(來自footage.py cut)。vo.wav就是旁白:audio/mix.py會像處理產生的語音一樣將其混音。src/words.json、src/vo_env.json、src/footage.json、audio/vo.txt— 由剪輯過程自動產生:基於剪輯時間軸的單字(因此cue()、ACTS和字幕能正常運作),以及每個片段開始的位置(JUMPS)。src/talk/Footage.tsx—<Footage />,將剪輯結果作為靜音影片圖層;cutZoom(t)會根據片段切換縮放。
工具需要使用虛擬環境執行(它依賴 faster-whisper:請前往「設定」→「需求」→「語音辨識」;如果缺少,請他安裝):從影片的資料夾執行 ../../../../.venv/bin/python ../../../../tools/footage.py …。
步驟
- 轉錄 — 執行
footage.py transcribe --lang <設定檔的語言代碼,例如 es>。它會輸出初步剪輯建議的片段(語音在停頓超過 0.4 秒處分割),並編號,附帶文字。稍後新增的片段會轉錄並附加在結尾,不會影響已有的片段。 - 提出剪輯建議 — 像剪輯師一樣閱讀這些片段:過早開始、口誤、拖沓的填充詞(如「呃」、「這個」)、重複的句子(保留最後一個好的版本,除非第一個明顯更好)、與影片主題無關的離題內容、以及開場較弱但有更強鉤子被後續表達的情況。向他展示一個簡短的編號列表 — 片段編號、內容、你的建議及原因 — 以及剪輯後的長度與目標長度的對比。用一則訊息連同你的建議一起發送,這樣他只需回「好」即可確認。未經他同意切勿剪輯。當剪輯點落在某個片段內部時,使用
footage.py show N來顯示片段 N 的單字及其時間:在edit.json中圍繞失誤部分將其拆分為兩個(在單字開始前約 0.05 秒、結束後約 0.15 秒處切割,切勿在單字中間切割)。 - 剪輯 — 編輯
audio/edit.json(刪除、修剪、拆分或重新排序片段),然後執行footage.py cut。檢查輸出中的長度,查看幾個畫面(一旦<Footage />出現在影片中,使用./snap.sh out/cut <秒數> …),並請他在開始製作動畫前先在工作室的播放器中觀看剪輯結果:「腳本」和「剪輯」都從這裡開始計算。如果他要求修改,請編輯edit.json並重新剪輯:單字、字幕文字和時間都會隨之更新。每次剪輯都會重寫audio/vo.txt:它記錄他所說的內容,因此不要為了更改腳本而編輯它 — 應該更改剪輯。像往常一樣根據audio/vo.txt的行數標記audio/beats.json。 - 腳本檢查 —
video-script的檢查清單仍然適用於他所說的內容:前幾秒內要有鉤子、只包含一個核心想法、不要過早洩漏答案、要有回報、要有行動呼籲。如果鉤子不夠強烈,建議重新排序(從後面的片段調動)或請他重新錄製一行,而不是繞過它去製作動畫。 - 動畫 — 根據風格的視覺語言,為每個想法構思一張圖片(請參考 reel-studio → 圖片)。有三種放置動畫的方式,根據節奏選擇:
- 放在他旁邊(最常見):他保持滿版畫面;動畫位於畫面中的空白區域(通常是畫面的上三分之一或下三分之一,遠離他的臉)或作為卡片。適合數字、列表、術語、對比。
- 全螢幕(持續幾秒):動畫覆蓋整個畫面,他的聲音繼續播放。適合「用看的比用說的更好理解」的內容(流程、地圖、圖表)。在他開始下一個要點之前,必須回到他的臉上。
- 不加動畫:當他在表達情感或個人觀點時,他的臉就是最好的畫面。 首先找到他臉部在畫面中的位置(使用剪輯結果的靜止畫面),並保持該區域清晰:切勿遮擋他的眼睛或嘴巴。
- 建置 —
src/film/Film.tsx:使用<Footage zoom={cutZoom(t)} />作為底層圖層(取代風格的背景),上層疊加場景,字幕覆蓋在兩者之上,並像往常一樣使用<Audio src={staticFile('mix.wav')} />。風格的背景和紙質紋理僅用於全螢幕的節奏。像往常一樣使用cue()在src/lib.ts中設定 Acts;模板中的TOTAL保存最後一幀,用於結尾一秒鐘。 每次片段之間的跳轉(JUMPS)都需要遮蓋:cutZoom交替縮放構圖,或是在該剪輯點加入一個進入動畫。 - 分鏡板、音效、靜音測試、渲染 — 與
reel-studio相同。在靜音測試中,畫面必須在沒有聲音的情況下仍然合理:如果長時間只有他的臉,請說明原因並建議在何處加入動畫來承載想法。
交付
報告剪輯後的長度、刪除了多少片段及原因(一行內說明)、動畫放在何處以及任何合成內容。在 LESSONS.md(通用部分)中記錄導致剪輯修改的因素。