📃帶你了解 NVIDIA Audio2Face 技術原理 — Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion

MetAI 宇見智能科技
9 min readMay 10, 2022

--

NVIDIA Audio2Face

在 2022 年 GTC 上,黃仁勳執行長將數位孿生視為今年 NVIDIA 的重點開發項目,其中一項主力產品就是 Audio2Face,其作用簡單來說就是輸入一段音訊給 Audio2Face,Audio2Face 可以依照音訊來控制虛擬頭像 (Avatar) 的面部表情,還可以動態控制情緒表達,例如一段話可以選擇喜怒哀樂等等情緒來表達,而且還是即時控制 (Real-time),這就必須要求模型夠輕量。

Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion

圖一. Audio2Face 模型

Audio2Face 的架構如圖一,輸入為一段 Audio window 以及 Emotional state,兩者都是一個向量, Audio window 為一段 520ms 的訊號, Emotional state 是用來控制情感的向量,輸出是 5022 個 3D 座標點,所以共有 15066 個回歸預測值,而 Avatar 的臉就是由這 5022 個點來控制的。那為何我們需要 Emotional state 呢 ? 原因在於一段聲音可以用不同情緒的臉來表達,例如生氣的臉、開心的臉等等,如果沒有 Emotional state 的話,那模型的輸入與輸出就是一段 Audio window 與多種表情,但是這對於神經網路來說是不可能的,因為同一個輸入只會有同一個輸出,這時候就需要另外一個輸入 Emotional state 來組合成一組輸入搭配一個輸出。

整個網路由三個模組組成,Formant analysis network、Articulation network 以及 Output network。

圖二. Audio2Face 模型架構

Input preprocessing

Audio window 輸入給 Audio2Face 之前會先經過 chunking 前處理,假設 Audio window 長度為 520ms,會以 sliding window 的方式取出多個 frame,每個 frame 為 16ms 且移動過程中彼此重疊 (overlap) 8ms,經過處理後,共可取出 64 個 frame,每個 frame 為 16ms,在這邊將此矩陣稱作 X。 64 視為時間序列,16ms 則是特徵維度,搭配採樣率 16 kHz 的話就是 256。

Formant analysis network

如圖二,輸入為矩陣 X,首先第一層為 Autocorrelation,又稱為自相關,是統計學中用來計算時間序列內相關性的方法,例如上週與上上週每天天氣之間的相關性、一段音訊中不同片段之間的相關性等等。在 Autocorrelation 中有一個參數 K 稱為相位差,例如一段訊號為 [1,2,3,4,5],若 K=1 就是 [1,2,3,4] 與 [2,3,4,5] 計算相關性。在論文中 K=32,所以 X 經過 Autocorrelation 後得到1x64x32 的輸出。當然這邊也能夠使用其他種頻譜分析方法。接著再通過多層卷積層,每一層都是一維卷積 (1x3),卷積的維度主要是後方的特徵維度 32,作者稱為 Formant axis,最後得到輸出 X1 256x64x1。

Articulation network

Articulation network 的目的在於同時處理 Audio 特徵以及 Emotional state,運作方式為將 X1 通過卷積然後與 Emotional state 做 concatenate,圖二中 256+E 就是 concatenate,重複此步驟 5 次就得到輸出結果。觀察這模組的卷積核大小為 3x1,卷積的維度主要是時間維度 (64),作者稱為 Time axis,最後得到輸出 X2 (256+E)x1x1。

Output network

最後來到輸出層,輸出層主要的目的就是預測 5022 個 3D 座標。中間有一層全連接層神經元數量為 150,這個數字是有道理的,論文中先對資料進行 PCA,分析幾個主成分可以達到理想的可解釋變異 (explained-variance),並以該主成分的數量當成神經元個數,論文中使用 150 個主成分可以解釋 99% 的變異。這種使用 PCA 主成分數量當成神經元個數的方法還蠻常見的,其想法在於 PCA 是一種線性降維,與全連接層一樣都是一種線性降維方式,使用此方式可以在決定神經元個數時不需要一開始就用 512, 1024 等等這麼多的神經元。

Emotional state

Emotional state 主要決定臉部表情的情緒,而人類的情緒是千變萬化的,論文作者認為不可能在一開始歸納出所有情緒,所以 Emotional state 是由網路學習出來的,其作法是將前處理後的輸出 X 再通過卷積得到 Emotional state,隨著 Articulation network 的卷積層數的增加,就會多做一個卷積,例如 Articulation network 的第一層所接的 Emotional state 維度就是 Ex32;第二層所接的 Emotional state 是 Ex32 再做一次卷積得到 Ex16,後面以此類推,其中 E 是 Emotion 數量。

有趣的是,一開始我們並不知道到底有幾種情緒,所以 E 視為一個超參數,在論文中一開始 E 設為 100。另外,每個 E 所代表的情緒一開始也不知道,所以論文中設計了三個過濾步驟來統整所有的 E。

Emotional state 過濾步驟一:

圖三. Visualization of the opening of the mouth during the course of an audio clip (x-axis) under different constant emotion vector inputs.

圖三是使用一段音訊搭配所有的 Emotional state 產生的熱圖,並觀察講話過程中嘴巴的閉合過程,顏色越趨近紅色表示嘴巴打開,反之藍色表示嘴巴閉合,x 軸是時間維度,y 軸是所有的 Emotional state。正常來說,講話過程中嘴巴是一閉一合的,不可能從頭到尾都是開 (always open) 或是關 (not opening),透過這方式將異常的 Emotional state 過濾掉。

Emotional state 過濾步驟二:

圖四. Human-understandable semantic meanings for different emotion vectors are assigned manually by examining the animation they produce.

第二種過濾方式如圖四,這個步驟在於決定每個 Emotional state 代表什麼情緒,圖四中表示多個 Emotional state 所產生的 3D 人臉,人臉產生後手動主觀決定其情緒。

Emotional state 過濾步驟三:

此步驟使用現實中的 Audio,搭配所有的 Emotional state 進行生成,並過濾出人臉變化異常的 Emotional state,例如人臉不正常的抽動、扭曲等等。

圖五. NVIDIA Audio2Face

通過以上步驟,最後剩下的 Emotional state 就是真正可用的情緒表達向量。以 NVIDIA Audio2Face 軟體上的介面來說,最後採用了 12 種 Emotional state,如圖五右下方 12 種情緒,而且還能夠控制 12 種情緒的高低起伏。

Ensemble

圖六. Ensemble Predictions

論文中還使用了 Ensemble 來防止嘴唇運動時可能產生不正常的抖動,如圖六,嘴唇紅點是測量位置,橘線是使用單一個預測值的效果,綠線是 Ensemble 的結果,可以看到橘線相較於綠線抖動程度更加厲害。其中 Ensemble 的方法就是將時間上的預測結果進行平均,每次間隔 4ms,例如第一次預測是使用 1~520 ms,第二次則是 5~524 ms,藉此嘴唇消除不正常的抖動。

最後,我們 MetAI 也會在接下來推出一系列的數位孿生 Avatar 教學,其中就包含了 Audio2Face,歡迎對數位孿生有興趣的朋友關注我們!

References:

📃 Audio-Driven Facial Animation by Joint End-to-End Learning of Pose and Emotion: https://users.aalto.fi/~laines9/publications/karras2017siggraph_paper.pdf

NVIDIA Audio2Face: https://www.nvidia.com/zh-tw/omniverse/apps/audio2face/

關於我們

「MetAI」是由 Metaverse 與 AI 融合而成的單字,同時意味著 Met (遇見) AI (人工智慧),是以人工智慧以及元宇宙為主要研究主題的社群,立意在於推動創新科技應用以及產業數位轉型。

關注我們

若我們的內容對您有幫助,請不吝幫我們分享、按讚。您的反饋會讓我們知道自己的內容方向是否有價值、能否做得更好,也讓更多需要的朋友也能獲得有用的知識。

--

--

MetAI 宇見智能科技

MetAI 宇見智能科技有限公司,成立於 2022 年,NVIDIA Inception Program 的一員。我們結合 Metaverse 與 AI 兩大核心技術的產品及服務,致力於為製造產業提供能輕鬆導入的解決方案,讓製造業夥伴在享有高品質的合成資料、精準且實際的應用之下,可以輕鬆地達成好落地、好導入、好轉型。