張凈波 楊元維 徐 杰 蔣夢月 李 鵬 杜李慧
(1.長江大學地球科學學院 武漢 430100)(2.中國石油管道科技研究中心 廊坊 065000)(3.中國石油天然氣集團公司油氣儲運重點實驗室 廊坊 065000)
迄今,國內外的許多學者一直致力于研究出一種實時、自然、逼真的嘴唇動畫。Terry基于新型貝葉斯網絡模型法確定視素和音素信息[1],實現語音驅動模型生成嘴唇動畫。文獻[2]基于Bernstein-Bézier曲線與唇部運動規律通過構造函數的方法描述動態視位,通過該方法合成的動畫相對真實、自然,但當語速較快時易發生跳變。肖葉清等采用肌肉控制模型模擬口型動畫,但未考慮到漢語協同發音的特點[3]。Moro等基于神經網絡法將聲學的特征參數和人臉動畫匹配,提出了一種自動克隆的會說話的虛擬人的方法[4]。范鑫鑫等依據輸入的語音信號提出了一種嘴唇同步算法,該算法具有較高的準確率和重用性[5]。文獻[6]基于HMM(Hidden Markov Model)建立了用于語音音素分類與用于情感分類的層次結構,并實現了語音驅動表情。文獻[7]通過改進的最小轉換軌跡誤差訓練對語音特征參數以及口型特征參數同步的方法進行了相關研究,實現了語音驅動口型動畫。王躍根據漢語具有協同發音的特點,提出了一種基于漢語協同發音的文本驅動三維口型合成動畫,使生成的動畫更接近真人的口型[8]。
口型動畫的研究雖取得了不少成果,但仍然存在兩點問題,其一是MPEG-4標準中提供的嘴唇特征點數量不足,導致合成的嘴唇動畫輪廓不自然;其二是語音與動畫的映射關系不能做到在時間上完全匹配。針對以上存在的問題,本文提出基于弗格森函數添加特征點的方法,并基于聲母韻母建立語音和動畫映射,采用線性插值的方法保證語音和動畫在時間上同步。其設計思想如圖1所示。

圖1 動畫生成流程
語音信息包含語音的文字信息和語音的時間信息。語音的文字信息即語音的內容,本文通過調用百度接口識別出目標段語音包含的文字序列;語音的時間信息指的是單個文字播放時的時間點,本文采用語音端點檢測技術獲取單個漢字在語音段中的時間片段。
百度語音識別接口運用基于多層單向(Long Short-Term Memory,LSTM)的漢語聲韻母整體建模技術,并把連接時序分類(Connectionist Temporal Classification,CTC)訓練技術嵌入到傳統識別建模的框架中,再結合語音識別領域的區分度訓練、跨詞解碼、決策樹聚類等技術[9],可以較為理想地實現語音識別。百度將深層卷積神經網絡(Deep Convolutional Neural Networks,DCNN)模型與LSTM、CTC結合,降低了語音識別解碼的計算量,減少了人為干預。引入了DCNN的概念,使模型在時頻域上具有很好的平移不變性,提高了模型抗噪性,錯誤率相對下降10%,提高了語音識別的性能[10]。
語音端點檢測是語音信號處理中的一個重要環節,用來檢測語音段中文字間出現的短暫停頓點。將短時能量(Short Term Energy)和短時過零率(Short Term Zero Crossing Rate)結合分析是語音端點檢測技術常用的方法[11],本文采用該方法進行語音分割。
一幀語音信號的能量稱為短時能量,第n幀短時能量定義為

其中,Qn表示第n幀的短時能量,N表示第n幀中包含的音頻采樣數量,Sn表示第n個采樣的取樣值[12]。
一幀語音信號中的信號波形正負號變化的次數稱為語音信號的過零率,第n幀的短時過零率定義:

其中,Zn表示第n幀的短時過零率,N表示信號幀長,Sn表示第n個音頻的采樣值,sgn()表示符號函數,將式(3)帶入式(2)中即可得到第n幀的短時過零率。
語音端點檢測技術的基本思想是[13]為短時能量與短時過零率分別確定兩個門限值,一個為較低的門限值,對音頻信號變化相對敏感;另一個為較高的門限值。當高門限值被超過且在接下來的一段時間內低門限值始終被超過,則表明語音信號開始。
例如,對“長江大學歡迎您”這一段語音進行切割,結果如圖2所示。

圖2 語音分割情況
弗格森函數是由多段的三次多項式拼接而成的[14],在拼接位置處,不僅函數自身是連續的,而且其一階導數,二階導數,曲率也是連續的。因此該函數最大限度的保證了曲線的平滑、連續。
嘴唇動畫的生成需要建立相應的特征點。MPEG-4標準中提供的人臉特征點定義參數(Facial Definition Parameters,FDP),如 圖3所 示。MPEG-4標準中指定的特征點過于稀疏,不能較為準確地刻畫嘴唇運動的諸多細節,需增加特征點的數量以保證動畫的真實性。本文將MPEG-4中定義的特征點作為控制點,建立弗格森函數,基于已有特征點的函數關系來增加特征點數量。

圖3 MPEG-4特征點坐標系
本文以左側嘴角為原點建立的平面直角坐標系,圖3中將MPEG-4中的特征點劃分為4組,分別為:1)上唇外側2)上唇內側3)下唇內側4)下唇外側。每組由5個特征點組成(其中嘴角處的特征點上唇下唇共用)。嘴唇在張合運動過程中,各組中各點縱向運動幅度△y存在著相關性。用照相機在說話人的正面對嘴唇進行連續照相,為降低個體嘴唇差異的影響選取了若干名說話人,每個人都發相同的音,對應MPEG-4標準中指定的特征點,計算每個特征點由嘴唇不發音位置到發音位置的位移變化量,取其平均值作為最終的運動比例系數△y,最終得到各個特征點縱向位移變化量(xj,△yj),(j=1,2,…,16)。由每組的5個特征點作為控制點建立弗格森函數,共計建立四組函數。
基于上述求得的函數,確定了特征點縱向位移變化量與橫坐標的映射關系,只要輸入任意位置的橫坐標即可獲得該位置縱向位移變化量△y,因此基于該函數可無限增加特征點的數量。綜上,本文建立嘴唇特征點運動模型:

其中li(i=1,2,…,n)表示嘴唇曲線運動過程中特征點縱坐標,yi為嘴唇閉合時特征點的縱坐標,△yi表示運動比例系數。R為視位參數(R∈[0,5])。再將所有的特征點用弗格森曲線連接繪制出嘴唇輪廓,通過不斷改變R的值即可模擬出整個發音過程嘴唇的動畫。本文基于聲母韻母建立了語音與動畫的映射關系,該映射關系定義了聲母韻母對應的視位參數R,具體的定義方法將在下一節中介紹。
本文首先基于拼音的聲母韻母對語音進行劃分,再對劃分后的聲母韻母建立相應的視位參數。獲取視位參數的具體方法:用相機正對說話人的嘴唇照相,計算MPEG-4中指定的特征點在每一個聲母韻母的視位坐標(xi,li),參考式(4)及預先定義的運動比例系數△yi獲取視位參數R。最終視位參數結果如表1所示。

表1 聲母韻母視位分類結果(部分)
基于聲母韻母建立語音與動畫的映射的方法獲得了視位參數,該視位參數為關鍵幀的視位參數,而發音動作是連續過程,因此需要在關鍵幀之間做視位參數的過渡處理[15]。本文基于協同發音中的音素影響因子計算音素發音時刻,然后基于音素發音時刻采用線性插值的方法過渡處理視位參數,保證語音和動畫在時間上的同步。
在嘴唇動畫中,當前發音的口型除了受當前發音的音素影響外,還受到該音素前后音素的影響。在漢語中元音處于影響地位,輔音處于被影響地位[16]。音節控制模型[17]中定義了元音的影響等級,并給出了量化的影響值,如表2所示,影響等級從1級到4級逐漸遞減。影響等級越高(影響因子越大),越容易影響其他音素[18]。

表2 音素影響等級表
影響因子描述了音素間彼此的影響程度,結合音節控制模型計算每個文字中的音素開始發音的時間點,公式如下:

其中Tn表示該文字中第n個音素開始發音的時刻,Tx表示第x個文字的開始時刻,Tl表示該文字發音的持續時間。D表示前一音素對當前音素的影響因子。通過該方法算出語音中每個音素的發音開始時刻。
為了實現任意時刻的動畫幀與語音流的同步匹配,本文將關鍵幀視位參數做線性插值處理生成過渡幀視位參數。過渡幀視位參數插值算法公式如下:

其中Ti表示第i幀動畫發音時刻,Rx表示Ti(i∈[a,b])時刻的視位參數,Ra、Rb表示前后關鍵幀的視位參數。Ta、Tb表示前后關鍵幀的發音開始時刻。結合式(5)、(6)中即可得到Ti時刻的視位參數。
為驗證本文提出方法的正確性,本文設計三組實驗如下。
實驗一用無噪聲的語音驅動嘴唇曲線,分別測試不同語速條件下生成的嘴唇動畫的準確率并對結果加以進行分析。
實驗二用“美好長大”四個字的語音驅動嘴唇動畫,將本文方法合成的嘴唇動畫與真實口型對比,觀察對應動畫與真實口型的相似度。
實驗三將本文方法分別與文獻[19]自定義添加特征點法、文獻[20]基于唇部子運動與權重函數法生成的嘴唇動畫的準確率對比,并對結果進行分析。
1)實驗一、三評價標準
在發音內容及語速相同的情況下,測量真人嘴唇特征點位移Vreal(i),考慮到個體差異性,取n個人正常發音的嘴唇位移的平均值作為Vreal。計算Vreal與動畫嘴唇特征點位移Vanim之差△V,△V與Vreal之比作為動畫誤差。即:

綜上,結合式(7)、(8)最終評價準確率標準:

2)實驗二評價標準
本實驗從嘴唇開合大小、嘴唇形狀、是否有病態口型(如嘴唇出現不合理的凹凸)三個方面對嘴唇輪廓效果進行評價。
1)實驗一結果如表3所示。

表3 實驗結果
由表3可知動畫同步匹配準確率的降低趨勢大致和語速增加成反比。本文中定義的語音與動畫的映射關系不隨語速的變化而變化,根據弗格森曲線繪制的嘴唇曲線特征點坐標不隨語速的變化而變化,因此導致該情況的發生的主要原因有兩個。
(1)當語速加快時語音自身的模糊性會提高,百度語音識別接口的語音模型、聲學模型算法的強健性有限,因此識別的偏差會導致動畫視位參數序列出現誤差。
(2)當語速過快時,語音短時能量與短時過零率變化幅度過小,使分割出現誤差,導致動畫分配的時間偏差,最終出現動畫與時間不同步匹配。
2)實驗二結果如圖4所示。

圖4 真實口型與本文方法合成的口型動畫對比圖
與真人的嘴唇圖片對比發現,通過本文方法繪制的嘴唇曲線無病態口型,與真實口型相比并未失真,嘴唇開合大小基本與真人保持一致。主要原因如下:
(1)基于弗格森曲線繪制的嘴唇最大限度地使嘴唇曲線曲率變化連續,凹凸程度變化連續,避免出現不自然的凹凸等錯誤狀態。
(2)基于線性插值的方法對口型進行過渡,如“美”,“好”兩個字過渡階段嘴唇直接從“ei”的口型過渡到“h”的口型;而當單獨發“h”的音時,嘴唇動作為從閉合到張開。該方法符合人們正常說話時的狀態。
(3)本文基于聲母韻母建立了語音和動畫的映射,通過調節視位參數直接控制了嘴唇開合的大小,保證了嘴唇動畫的真實性。
(4)基于弗格森函數從特征點縱向位移變化量的角度定義了各個特征點的位移量之比,再結合嘴唇動畫模型從根本上避免了病態口型的出現。
3)實驗三結果如表4所示。

表4 實驗結果
結果表明,基于函數關系添加特征點法較自定義添加特征點法生成的動畫準確率更高。主要原因如下:
(1)文獻[19]在原有的MPEG-4特征點的之間自定義添加特征點及特征點上下位移量,人為因素過多導致誤差增大;自定義特征點的數量有限,對于細節較多的嘴唇無法真實刻畫。
(2)文獻[20]建立的權重函數未充分考慮語速對口型的影響;單獨的子運動造成了唇部運動缺少真實感,特別是降低了輔音受后接元音的影響。
(3)本文基于MPEG-4特征點建立弗格森函數,可基于函數關系添加數量較多的特征點,使嘴唇輪廓更加逼真;基于函數關系建立了特征點的運動模型,符合嘴唇運動的規律。
本文融合了百度語音識別、語音端點檢測、弗格森曲線驅動嘴唇動畫等方法,完成了語音驅動嘴唇動畫的全過程,并且生成的嘴唇動畫與語音有良好的匹配效果。在功能的實現過程中,本文基于嘴唇的運動特點,建立了動畫模型,嘴唇輪廓在變化過程中光滑,無病態口型出現。然而嘴唇動畫的實現是一個復雜的過程,所涉及的變量過多,如語速與嘴唇開合程度的關系,語音大小與嘴唇形狀的關系。因此如何將這些變量科學的融合在一起將是我們接下來研究的內容。