1.概述
AniTalker是一款先進的AI驅動的動畫生成工具,它超越了簡單的嘴唇同步技術,能夠精準捕捉并再現人物的面部表情、頭部動作以及其他非言語的微妙動態。這不僅意味著AniTalker能夠生成嘴型精準同步的視頻,更重要的是,它還能夠呈現自然流暢的表情變化和動作,使得最終的動畫效果更加逼真,更具吸引力。
通過AniTalker,動畫制作不再局限于專業的動畫師或高昂的制作成本。現在,任何擁有一張人物照片和相應的音頻文件的用戶,都能夠輕松制作出高質量的說話動畫視頻,這極大地拓寬了個人表達和創意創作的邊界。無論是用于社交媒體內容的創作,還是教育、培訓、娛樂等多個領域,AniTalker都提供了無限的可能性。
項目及演示::https://x-lance.github.io/AniTalker/
論文地址:https://arxiv.org/abs/2405.03121
代碼下載:https://github.com/X-LANCE/AniTalker
視頻演示:
數字人解決方案——AniTalker聲音驅動肖像生成生動多樣
2. AniTalker
AniTalker代表了一項技術革新,它打破了傳統界限,將靜態肖像照片轉化為動態的數字化身。以下是對您描述的AniTalker功能的潤色和補充:
技術革新:AniTalker通過先進的人工智能技術,使得靜態圖像能夠根據語音指令進行自然流暢的交談和表情變化。
動態化身:該技術能夠將普通的照片轉變為具有豐富表情和動作的數字化身,為用戶帶來前所未有的互動體驗。
自監督學習:AniTalker采用了自監督學習這一前沿機器學習策略,使模型能夠自主學習并理解人臉動態的復雜性,而無需依賴于繁瑣的標注數據。
自然表情:與早期的數字人相比,AniTalker生成的動畫不再受限于預設的動作模板,能夠展現出更加自然和逼真的面部表情。
靈活性:AniTalker的自監督學習方法賦予了模型強大的泛化能力,使其能夠適應各種不同的語音和表情,從而創造出更加多樣化和個性化的動畫效果。
創新應用:這項技術的應用前景廣闊,不僅可以用于娛樂和社交媒體,還可以應用于教育、培訓、客戶服務等多個領域,為數字內容創作和人機交互提供新的可能性。
易于使用:AniTalker的設計哲學是簡化動畫制作過程,使其更加易于訪問和使用,讓沒有專業動畫制作背景的用戶也能夠輕松創建高質量的動畫視頻。
2.1AniTalker 實現的效果
面部動畫生成: AniTalker能夠將靜態人像照片和音頻信號轉化為生動的說話面部動畫。這不僅涵蓋了精確的口型同步,還包括與語音內容完美匹配的面部表情和頭部動作,為觀眾提供了一種全新的交流體驗。
多樣化和可控性: 用戶可以根據不同的需求調整輸入和參數設置,從而生成一系列表情豐富、動作各異的面部動畫。這種高度的定制性使得AniTalker能夠滿足從娛樂到專業應用的各種需求。
真實感和動態表現: AniTalker擅長捕捉面部的微妙動態,包括眨眼、微笑等復雜非言語信息,這些細節的精確再現極大地增強了動畫的真實感和表現力。
長視頻生成能力: 該技術不僅限于短片段的生成,還能制作超過3分鐘的長篇面部動畫視頻。這使得AniTalker非常適合用于虛擬助理、數字人物表演以及其他需要長篇動畫內容的應用場景。
AniTalker 像一位細致入微的觀察者,從大量肖像和視頻片段中提煉出每個微笑、眨眼、點頭的微妙之處,并將其轉化為一種精細的“表情運動編碼”。
身份和運動編碼器的細節,以及層次聚合層(HAL)的工作方式如下圖:
更重要的是,AniTalker 精妙地實現了“人物身份”與“動作表現”的分離。它不僅利用“身份識別技術”來區分不同人物的獨特性,還通過“身份與動作分離技術”,確保在捕捉動作的同時,不混入任何身份特征,保證了動作的通用性,并維持肖像原貌。
為了使數字人的動作表現更加多樣且自然,AniTalker 引進了“動作控制功能”。這項技術巧妙地在基礎動作框架上加入微調,讓最終的動畫效果既自然流暢又富含個性。同時,AniTalker 還能根據指令精細調控數字人的每個動作與表情,如同一位導演精確控制演員的表演。
這些豐富的實驗成果證實了 AniTalker 的強大效果,所創造出的數字人不僅表情自然、動作連貫,而且適應性強,無論是真實人物還是卡通、雕塑等風格都能完美適應,展示了其卓越的通用性。
連續運動空間的運動流形:
3.項目部署
環境創建:
git clone https://github.com/X-LANCE/AniTalker.git
cd AniTalker
conda create -n anitalker python==3.9.0
conda activate anitalker
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
pip install -r requirements.txt
演示1:
Keep pose_yaw, pose_pitch, pose_roll to zero.
python ./code/demo_audio_generation.py \--infer_type 'mfcc_pose_only' \--stage1_checkpoint_path 'ckpts/stage1.ckpt' \--stage2_checkpoint_path 'ckpts/stage2_pose_only.ckpt' \--test_image_path 'test_demos/portraits/monalisa.jpg' \--test_audio_path 'test_demos/audios/english_female.wav' \--result_path 'results/monalisa_case1/' \--control_flag True \--seed 0 \--pose_yaw 0 \--pose_pitch 0 \--pose_roll 0
演示2:
Changing pose_yaw from 0 to 0.25
python ./code/demo.py \--infer_type 'mfcc_pose_only' \--stage1_checkpoint_path 'ckpts/stage1.ckpt' \--stage2_checkpoint_path 'ckpts/stage2_pose_only.ckpt' \--test_image_path 'test_demos/portraits/monalisa.jpg' \--test_audio_path 'test_demos/audios/english_female.wav' \--result_path 'results/monalisa_case2/' \--control_flag True \--seed 0 \--pose_yaw 0.25 \--pose_pitch 0 \--pose_roll 0
演示3:
Talking in Free-style
python ./code/demo.py \--infer_type 'mfcc_pose_only' \--stage1_checkpoint_path 'ckpts/stage1.ckpt' \--stage2_checkpoint_path 'ckpts/stage2_pose_only.ckpt' \--test_image_path 'test_demos/portraits/monalisa.jpg' \--test_audio_path 'test_demos/audios/english_female.wav' \--result_path 'results/monalisa_case3/'