一句話結論:「每幾秒畫面崩壞一次」不是模型退化,而是 MultiTalk 的滑動視窗拼接縫(預設每 81 禎=3.24 秒換一個生成視窗,邊界處畫面突變)。把
frame_window_size 開到 ≥ 總禎數,讓短片單一視窗一次算完,接縫完全消失。
前後對照(8 秒雙人樣片)
舊版 · 切窗 每 3.24 秒視窗邊界畫面跳/崩一下,第 6 秒最明顯(frame_window_size=81)。
新版 · 單視窗 200 禎一次算完,全程零接縫、6 秒畫面乾淨(frame_window_size=201)。
診斷與驗證
用 ffmpeg -vf "select='gt(scene,0.02)',showinfo" 掃描相鄰禎突變,突變禎正好落在視窗邊界=確診接縫(臉部單禎本身都乾淨)。
| 項目 | 舊版(切窗 81 禎) | 新版(單視窗 201) |
|---|---|---|
| 畫面突變禎(scene>0.02) | 3.24s、6.1–6.3s | 僅 0.04s(開頭,正常) |
| 第 6 秒畫面 | 崩壞 | 乾淨自然 |
| 對比 std(細節) | 跨窗會掉(細節流失) | 全程平穩 |
| 色彩漂移 | 偏藍變暗 | colormatch=mkl 鎖定參考圖 |
| 生成耗時(8s/200 禎) | ~20–25 分 | ~16 分(241s/步 ×4) |
成功配方
- frame_window_size = 201(≥ 總禎數 → 單一視窗、零接縫)。上限其實是 10000,並非被鎖在 81;GB10 的 121GB 統一記憶體吃得下 200 禎單窗。關鍵
- colormatch = mkl:每視窗色彩錨定參考圖,根治偏藍/變暗,取代後製補色。
- motion_frame = 25、模型用
WanVideo_2_1_Multitalk_14B(單窗不需 InfiniteTalk 續接)。 - 短片單窗 不需 InfiniteTalk:它的跨視窗續接優勢在單窗下用不到,且其
motion_frame=9重疊更小、接縫反而更硬。 - 雙人:LoadAudio×2 → MultiTalkWav2VecEmbeds(男 audio_1/女 audio_2、左右遮罩 ref_target_masks、
multi_audio_type=para)→ WanVideoSampler。 - 保存工作流:
apps/worker/workflows/multitalk-dual-singlewindow-8s-WORKING.api.json;buildermt-build-dual.py加MT_WIN環境變數(MT_WIN=201重現)。
踩坑歷程
LTX-2.3 v11雙人對嘴會亂序、出現奇怪方格,句子被打斷後崩壞 → 判定不穩、棄用。
→ MultiTalk 遷移改用 MeiGen-AI MultiTalk(Wan2.1-I2V-14B,專為「音軌→指定臉」多人對話設計),跑通雙人+左右遮罩+雙音軌。
跨視窗退化硬拉長片+分段鏈接 → 輪廓越來越深、細節消失、色彩偏藍:滑動視窗累積過度銳化。
試 InfiniteTalk長片專用兄弟模型:細節不流失(對比平穩),但 8 秒仍有接縫、重疊更小接縫更硬。
試 Uni3C身分/構圖穩定器 → 與本版 wrapper 不相容(RoPE/multitalk_audio_input 未綁定),死路。
✅ 單視窗找出真因是視窗接縫,
frame_window_size≥ 總禎數 讓短片一次算完 → 接縫消失、畫面全乾淨。定案。
後續策略
- 真人開場一律走「單視窗短片(≤ 8–10 秒)」,不再硬拉長片跨窗拼接——那是一路所有崩壞/退化的根源。
- 需要更長時,切成多段各自單窗生成,再於後製剪接(每段換手處落在句間靜音)。
- 真人開場 → 白板課程的音訊切點以
silencedetect實測句界對齊,whisper 轉錄確認接縫不跳、不重複。