AI 生圖與影片
AI 口播數字人四步管線:怎麼搭、會踩什麼坑、為什麼眼神功能被砍了
數字人口播不是一個模型端到端搞定,而是四個獨立步驟接力。加新功能前先問:這條管線裡我最不能妥協的是什麼?效果好不代表該用。
一個核心觀念
做 AI 數字人口播,本質是四個獨立步驟接力,不是一個模型端到端搞定。每一步只做一件事,做完把結果交給下一步:
- 對嘴:一張照片加一段音訊,產出嘴巴會跟著音訊動的影片
- 換身分:把上一步的動作移植到你真正想要的人臉或角色上
- 臉部精修:AI 逐幀生成的臉部細節通常偏糊,逐幀修一次
- 高清化:放大解析度,讓成品不廉價
理解這是接力賽、不是黑盒子,你才知道哪一步出問題該去哪查,也才懂為什麼「加一個新功能」可能在意想不到的地方破壞前面的成果。
按步驟做
Step 1:對嘴(音訊驅動嘴型)
用開源專案 InfiniteTalk(MeiGen-AI,Apache-2.0,可商用)。丟一張照片加一段音訊,產出嘴型對得上音訊的影片。它是純粹靠聲音生成嘴巴、表情、頭部動作,不需要另外準備示範影片。
Step 2:換身分(角色置換)
Step 1 的嘴型動作是對的,但長相可能不是你要的角色。用動作遷移或角色替換模型(我們用 Z.ai 的 SCAIL-2,Apache-2.0),把 Step 1 的影片當動作範本、目標角色照片當身分來源,產出換了臉、動作不變的影片。
影片較長時,這類模型通常要「分段生成再串接」,每小段要把上一小段的結尾幾幀當銜接參考。這需要一點腳本自動化,純手動點介面會很痛苦。
Step 3:臉部精修
換完身分的影片,皮膚紋理、鬍鬚、皺紋通常偏糊。用 GFPGAN(專門修復人臉的開源模型)逐幀跑一次,能明顯補回細節。
Step 4:高清化
最後用 Real-ESRGAN(開源放大模型)把整體解析度放大。我們的成品規格是 1024×1792 直式,適合當短影音的口播素材。
你一定會踩的坑
-
老倉庫在新版 Python 上會連環壞。某個套件的安裝腳本用
exec()動態讀變數的寫法抓版本號,在 Python 3.13 底層最佳化下失效,安裝直接報錯。修法:下載原始碼包,把寫死版本號的那行改成固定字串再裝(前提是你信任作者)。判斷原則:看到「這個套件兩年沒更新」,就要有撞到不相容問題的心理準備,而且通常不只一個。 -
ComfyUI 跑著的時候,重裝 Python 套件可能失敗。常見的是 opencv-python 這類它正在用的套件,會因為「檔案正被佔用」失敗。修法:先確認舊版能不能用,大多數情況能,那就跳過,只裝真正缺的依賴。
-
效果好的新功能,可能在你沒注意的地方傷到更重要的東西(本篇主線)。我們想再加一步「補眼神/微表情」,用了 LivePortrait。眼神確實更生動,但認真肉眼比對原始照片才發現:臉型和眉毛跟著變了,不是同一個人的微表情,是換了張臉。
根因:表情遷移的原理是拿「示範影片裡的臉」和「你的角色臉」比較差異、算出一組變形參數再套上去。這個差異裡天生夾帶示範臉的長相特徵,表情幅度要求越大,洩漏越多,而且同一個參數同時控制兩者,沒辦法只調表情不影響臉型。
怎麼判斷該不該用新功能:先問「這條管線裡我最不能妥協的東西是什麼」(我們是身分一致性),裝上後別只看單一指標變好就收工,肉眼比對輸入輸出,專門找「那個東西有沒有被犧牲掉」。指標會騙人,眼睛比較難騙。
一句話總結
口播數字人管線是四步接力(對嘴、換身分、修臉、放大),每步用對應的開源工具串起來就能跑。但加新功能前先想清楚你最不能妥協的是什麼:我們親手刪掉一個做成功的功能,就是因為它動到了不該動的東西。
萬用救援:卡住怎麼問 AI
我在 [你的作業系統,例如 Windows 11] 上,用 [你在用的工具,例如 ComfyUI] 做 [你想達成的目標]。目前的狀況是:[具體描述現象,或貼上完整錯誤訊息原文]。我已經試過:[列出試過的方法,沒試過就寫「還沒試過任何修法」]。請假設我是新手,一步一步告訴我可能的原因,並給我可以直接照做的具體步驟。
版本號、路徑這類容易過時的細節,直接讓 AI 幫你查當下最新的做法,不要照抄超過半年的教學文字。
這是踩坑實錄與 AI 工具實測系列的一部分。想收到後續完整 SOP,訂閱電子報。
支持這裡的內容:前往 Ko-fi 斗內