如何做到在手機上實時跑3D真人數字人?MNN-TaoAvatar開源了!
TaoAvatar 是由阿里巴巴淘寶 Meta 技術團隊研發的 3D 真人數字人技術,這一技術能在手機或 XR 設備上實現 3D 數字人的實時渲染以及 AI 對話的強大功能,為用戶帶來逼真的虛擬交互體驗。
它是如何實現的呢?本文將為您揭秘 TaoAvatar 背后的黑科技!同時在今天,我們正式宣布開源了 3D 真人數字人應用:MNN-TaoAvatar!目前應用源碼已同步發布在 MNN 的 GitHub 倉庫,開發者可自行下載安裝和體驗,歡迎大家和我們一起交流討論,共同探索 AI 數字人技術的無限可能。
什么是 TaoAvatar?
TaoAvatar 是淘寶在數字人技術領域取得的最新突破,更多詳細的研究成果已經發表在相關論文。
- 論文標題:TaoAvatar: Real-Time Lifelike Full-Body Talking Avatars for Augmented Reality via 3D Gaussian Splatting
- 論文地址:https://arxiv.org/abs/2503.17032v1
- 開源地址:https://github.com/alibaba/MNN/blob/master/apps/Android/MnnTaoAvatar/README_CN.md
TaoAvatar 基于先進的 3D 高斯潑濺技術,提供了一套全身互動式的真人數字人解決方案。它通過多視角視頻的輸入,可以迅速生成具有高逼真度的數字人形象,這些形象不僅能夠精準地捕捉到細膩的面部表情和手勢動作,甚至連衣物細微的褶皺以及頭發的自然擺動都能清晰呈現,帶來一種自然而真實的視覺體驗。
值得一提的是,TaoAvatar 還同時顯著降低了數字人建模的成本,大幅提高了建模效率,從而為數字人的規模化應用提供了基礎。在中國三維視覺大會上,TaoAvatar 憑借其卓越的性能和廣泛的適用性,成功入選「最佳演示 Demo 候選」,吸引了業界的廣泛關注,成為數字人技術研究領域的一個亮點。
什么是 MNN-TaoAvatar?
MNN-TaoAvatar 是我們推出的一款開源的 3D 數字人應用,它集成了多項領先的 AI 技術,支持實時 3D 數字人語音交互,使用戶能夠在手機上實現與數字人的自然交流,仿佛真的在與一個「活生生」的人交談。MNN-TaoAvatar 不僅能夠在手機端流暢運行,還完美兼容了 XR 設備。如下是在 Android 手機及 Apple Vision Pro 設備上的體驗效果:
MNN-TaoAvatar 集成了多項關鍵技術,包括精準的語音識別能力,能夠準確理解你的每一句話;先進的大語言模型,可以深入理解你的意圖和情感;以及自然流暢的語音合成技術,能夠以自然流暢的方式進行回應。更令人驚艷的是,它能夠根據語音實時驅動面部表情的變化,從而帶來更加生動真實的對話體驗。
這一切的背后,是最新算法模型提供的強大支持。基于端側 AI 推理引擎 MNN,我們研發了一系列的核心模塊,包括運行大語言模型的 MNN-LLM、語音識別模型的 MNN-ASR、語音合成模型的 MNN-TTS,以及數字人渲染的 MNN-NNR。
現階段市面上的數字人方案很多,但基于 MNN 運行的 TaoAvatar 有哪些獨特優勢呢?
目前大多數主流的數字人方案主要基于云端 AI 算法,這些方案需要依賴強大的服務器和高性能顯卡資源,才能完成 ASR(Audio-Speech-Recognize,語音識別)、TTS(Text-To-Speech,語音生成)以及 A2BS(Audio-To-BlendShape,音頻驅動面部表情)等復雜處理任務。即便一些開源方案支持本地運行,往往也需要配備較為高端的硬件。
例如需搭載 RTX 3090 或更高規格顯卡的設備,才能確保流暢地執行推理和渲染任務。相比之下,MNN-TaoAvatar 則能夠在僅一部手機上即可運行上述所有算法模型以及 3D 模型,展現出極高的效率和便捷性。
MNN-TaoAvatar 具有兩個核心優勢:端側實時對話和端側實時渲染。
端側實時對話
首先,為了實現端側的實時對話,需要將 ASR(自動語音識別)、TTS(文本轉換語音)和 A2BS(口型驅動)的綜合 RTF(Real Time Factor,實時因素)控制在 1 以內,即能在 1 秒內生成 1 秒長度的語音,RTF 值越小生成速度越快。通過持續優化,我們取得了以下突破:
- 將 281 MB 的端側 ASR 模型的 RTF 優化到了 0.18,實現了用戶語音在端側的實時轉文本;
- 端側大語言模型預填充速度最快可達 165 token/s,解碼速度可達 41 token/s,確保了流暢的文本內容生成;
- 將 1.34 GB 的端側 TTS 模型 RTF 優化至 0.58,實現了文本到語音的實時合成與播放。
端側實時渲染
為了讓數字人的面部動作更為自然,渲染過程主要分為兩個關鍵步驟:首先,根據語音輸入,通過算法模型精準提取面部表情動作的系數,然后將表情系數和數字人 3D 模型的預錄數據進行融合,最終借助 NNR 渲染器完成高質量渲染。這兩部分我們做到的性能如下:
- 成功將 368 MB 的端側 A2BS 模型的 RTF 優化至 0.34,實現了實時語音到面部表情系數的轉換。
- 通過自主研發的高性能 NNR 渲染器,達到了對 25 萬點云模型以每秒 60 幀(FPS)的流暢渲染速度,確保了動畫的順滑自然。
上文提及的具體端側模型的功能及我們做到的技術指標如下(基于搭載高通驍龍 Snapdragon 8 Elite芯片的智能手機測試結果):
MNN-TaoAvatar 整體流程
在用戶尚未輸入語音的情況下,MNN-TaoAvatar 會利用 MNN-NNR 來渲染默認的數字人模型姿態,生成閉唇、靜態表情或者預設動作的畫面。一旦用戶開始語音輸入,系統將按以下流程運行:
MNN-TaoAvatar 運行關鍵流程
基于這一流程,用戶便能夠與一個自然流暢、表情生動的數字人進行實時對話了。在該流程的背后,MNN 框架在技術實現和性能優化上做出了大量的努力。接下來,我們將深入探討 MNN-TaoAvatar 的技術架構及其關鍵優化點。
MNN-TaoAvatar 關鍵技術
MNN-TaoAvatar 是基于 MNN 引擎構建而成的,它集成了 MNN-LLM、MNN-NNR 以及 Sherpa-MNN(包括 MNN-ASR 和 MNN-TTS)等多種算法模塊。下圖展示了這些模塊在應用中的架構示意:
MNN-TaoAvatar 架構示意圖
MNN:輕量級 AI 推理引擎
MNN(Mobile Neural Network)是一款功能強大的開源、跨平臺 AI 模型推理引擎。
MNN 架構示意圖
它的核心優勢如下:
- 高性能推理:支持 CPU/GPU/NPU 等多種異構計算方式,能夠輕松滿足增強現實/虛擬現實(AR/VR)、語音識別以及大型語言模型(LLM)等需要快速響應的實時應用;
- 跨平臺兼容:支持 C++、Python、Java 和 JavaScript 等多種語言接口,并與主流系統平臺無縫集成;
- 模型輕量化:內置了量化與剪枝工具,有效壓縮了模型大小,大幅節省內存空間并縮短加載時間。
MNN-LLM:移動端部署大模型
MNN-LLM 是基于 MNN 之上開發的 MNN-Transformer 模塊的一個子功能模塊,用于支持大語言模型與文生圖等 AIGC 任務。它包含以下關鍵技術:
- 模型導出工具:能一鍵將主流 LLM/Diffusion 模型轉換為 MNN 格式,大大簡化了模型的部署和使用過程;
- 模型量化機制:將大型模型如 Qwen2.5-1.5B 從原來的 5.58 GB 壓縮至 1.2 GB,同時保持較快的解碼速度,達到每秒 45 個 token;
- KV 緩存/LoRA 支持:利用 KV 緩存技術,MNN-LLM 顯著提升了對話響應的速度;LoRA 技術的應用也使得模型能夠靈活適配不同的任務場景,而無需重新訓練整個模型,從而降低了計算資源的消耗。
MNN-Transformer 架構示意圖
MNN-Transformer 由三個核心部分構成:導出工具、量化工具以及插件與引擎。
- 導出工具負責將各類大型模型轉化為 MNN 格式,并創建必要的資源包;
- 量化工具能有效減少 MNN 模型的體積,從而降低運行時的內存,加快執行速度;
- 插件與引擎模塊則提供了 LLM/Diffusion 運行時所需的關鍵功能,如分詞、KV 緩存管理以及 LoRA 等。
在小米 14 手機(搭載高通驍龍 8 Gen 3 芯片)上進行的測試中,MNN-LLM 展現了卓越的 CPU 性能。其預填充速度相較于 llama.cpp 提高了 8.6 倍,較 fastllm 更是提升了 20.5 倍。在解碼速度方面,MNN-LLM 同樣表現優異,分別達到了 llama.cpp 的 2.3 倍和 fastllm 的 8.9 倍。
MNN-LLM Benchmark
Sherpa-MNN:離線語音智能新方案
為提升語音識別在端側上的表現,MNN 團隊對原始 sherpa-onnx 框架進行了深度優化,推出 Sherpa-MNN,它支持 ASR(自動語音識別)和 TTS(文本轉語音)算法,并具備如下優勢:
- 性能翻倍:在 MacBook Pro M1 上(基于 arm64 架構),單線程運行經過量化處理的流式 ASR 模型(具體模型為 sherpa-onnx-streaming-zipformer-bilingual-zh-en-2023-02-20)。在這一測試中,onnxruntime 的 RTF(實時因子)為 0.078,而 MNN 的 RTF 僅為 0.035,相比于 onnxruntime 快出一倍。
- 包體積更小:在功能相同、性能更優的情況下,MNN 的體積僅為 onnxruntime 的五分之一(對于 Android arm64 架構,MNN 的體積為 3.3 MB,而 onnxruntime 則需 15 MB)。
MNN-NNR:高效神經網絡渲染引擎
MNN-NNR 是 TaoAvatar 的核心 3D 渲染引擎,專為在移動設備上實時渲染高質量數字人模型而設計。其核心的技術優勢如下:
- 開發簡便:通過將算法與渲染過程解耦,開發者可以更專注于算法的創新與優化。使用 PyTorch 訓練的模型可以輕松導出為 NNR 模型并部署,無需深厚的圖形編程經驗。
- 極致輕量:通過將計算邏輯離線「編譯」為深度學習模型和渲染圖,運行時只需要執行深度學習模型和渲染圖,因此整個包體大小極小(以 Android 為例,僅需 200k)。并且首次集成后,幾乎無需變更。業務功能的擴展由離線編譯器處理,算法的迭代只需更新 NNR 文件即可,實現了算法迭代與引擎集成的解耦。
- 高性能:結合 MNN 的高效執行能力,MNN-NNR 通過引入「Dirty 機制」和免拷貝技術,確保了渲染過程的高效執行,從而實現流暢的渲染效果。
MNN-NNR 架構示意圖
為了讓數字人模型能夠實現高效的渲染,我們進行了以下幾項深度優化:
- 數據同步優化
為了消除數據同步所需的時間,我們讓所有模型都在 MNN GPU 后端上運行,并在 NNR Runtime 中配置 MNN 所使用的 GPU 后端與渲染共享同一個上下文。這樣,MNN Tensor 的數據就直接存儲在 GPU 內存中。NNR Runtime 實現了直接讀取 MNN Tensor GPU 內存的方案,無需進行數據拷貝即可直接用于渲染,從而免除了數據同步的時間。
- 調度優化
在 NNR Runtime 中,我們實現了「Dirty 機制」,每一幀只運行輸入數據發生變化的 MNN 模型。在 TaoAvatar 場景中,深度模型包括 Base Deformer、Aligner、Deformer、Color Compute 和 Sort 等。由于動態高斯數字人重建所需的圖像是以 20 幀/秒的速度采集的,為了保持高斯數字人動作的平滑性和一致性,驅動高斯數字人動作的參數只需以 20 fps 的頻率設置即可。
因此,Base Deformer、Aligner 和 Deformer 只需以 20 fps 的頻率運行。在視角變化不大的情況下,也不需要每幀都對高斯點進行排序,所以 Sort 模型通過另一個開關來控制運行。這樣,每幀實際運行的模型就只剩下 Color Compute,從而大幅降低了整體的運行時間。
- 模型運行時間優化
對于使用 MNN 編譯器的模型,將輸入數據進行 fp16 壓縮,可以提升 50% 的性能。
對于高斯排序,MNN 實現了基于 GPU 的基數排序算法,并且利用 autotuning 技術,確保在各類 GPU 上都能達到最佳性能。
在這些優化的加持下,MNN-NNR 成功實現了在動畫模型僅以較低頻率(如 20 fps)更新的情況下,畫面依然能夠以 60 fps 的流暢度進行輸出。
3D 高斯數字人:小模型也能高質量
傳統高斯點云重建成本高、存儲體積大,而 TaoAvatar 采用了全新的多重優化方案:
- StyleUnet+MLP 混合建模:通過一個功能強大的 StyleUnet 教師網絡,學習復雜的姿勢變化,并將這些信息高效地「烘焙」到輕量級的 MLP 學生網絡中,極大降低了計算成本。
- 動態高斯點云技術:將單幀重建的靜態高斯點云,升級成為可復用多幀數據的動態高斯點云技術。這不僅顯著提升了渲染效果的穩定性與清晰度,還顯著減少了渲染過程中的閃爍現象。
- 高壓縮率資產壓縮算法:在 25 萬點云的量級下,模型文件大小僅約 160 MB,非常適合在端側設備上部署。
通過相同素材重建得到的數字人模型,在不同高斯點云數量下,會呈現出不同的清晰度、模型體積和渲染性能。為了找到最佳的平衡點,我們進行了多種不同點云數量模型的測試:
經過綜合對比,25 萬高斯點云的數字人是終端側部署的最佳配置方案,它不僅確保了渲染時的高清晰度,還將單個 ID 的存儲空間精妙地控制在 100 到 200 MB 之間。
使用說明
硬件要求
雖然我們已經進行了大量的優化工作,但由于需要將多個模型集成到手機中,所以對手機性能還是有一定要求的。以下是 MNN-TaoAvatar 的推薦配置:
- 需要高通驍龍 8 Gen 3 或同等性能 CPU。
- 需要至少 8 GB 內存用于模型運行。
- 需要至少 5 GB 空間用于存放模型文件。
?? 性能不足的設備可能會遇到卡頓、聲音斷續或功能受限哦。
快速體驗
想要親自體驗一下嗎?只需按照以下簡單的步驟操作即可。
首先克隆項目代碼:
git clone https://github.com/alibaba/MNN.git
cd apps/Android/Mnn3dAvatar
然后構建并部署:
連接你的安卓手機,打開 Android Studio 點擊「Run」,或執行:
/gradlew installDebug
通過這兩個步驟,你就可以在自己的手機上體驗 MNN-TaoAvatar 數字人應用了!趕快來試一試吧。
相關資源以及參考鏈接:
TaoAvatar Github 下載:https://github.com/alibaba/MNN/blob/master/apps/Android/MnnTaoAvatar/README_CN.md
TaoAvatar 論文:https://arxiv.org/html/2503.17032v1
MNN LLM論文:https://arxiv.org/abs/2506.10443
TaoAvatar模型合集:https://modelscope.cn/collections/TaoAvatar-68d8a46f2e554a
LLM模型:Qwen2.5-1.5B MNN:https://github.com/alibaba/MNN/tree/master/3rd_party/NNR
TTS模型:bert-vits2-MNN:https://modelscope.cn/models/MNN/bert-vits2-MNN
基礎TTS模型:Bert-VITS2:https://github.com/fishaudio/Bert-VITS2
聲音動作模型:UniTalker-MNN:https://modelscope.cn/models/MNN/UniTalker-MNN
基礎聲音動作模型:UniTalker:https://github.com/X-niper/UniTalker
神經渲染模型:TaoAvatar-NNR-MNN:https://modelscope.cn/models/MNN/TaoAvatar-NNR-MNN
ASR模型:Sherpa 雙語流式識別模型:https://modelscope.cn/models/MNN/sherpa-mnn-streaming-zipformer-bilingual-zh-en-2023-02-20
china3dv live demo滑動可以看到 TaoAvatar:http://china3dv.csig.org.cn/LiveDemo.html