畢永新, 韓慧健, 周世文
(1. 山東經(jīng)濟(jì)學(xué)院山東省數(shù)字媒體技術(shù)重點實驗室,山東 濟(jì)南 250014;2. 山東經(jīng)濟(jì)學(xué)院科研處,山東省數(shù)字媒體技術(shù)重點實驗室,山東 濟(jì)南 250014;3. 山東省科技館,山東 濟(jì)南 250011)
具有真實感的語音同步口型動畫是當(dāng)今計算機圖形學(xué)領(lǐng)域研究的一個熱點。1998年,J?rn Ostermannp[1]提出英文中口型與字母音位的對應(yīng)關(guān)系,并在 MPEG-4動畫標(biāo)準(zhǔn)的基礎(chǔ)上建立臉部、口型動畫合成。此后,基于英文的真實感臉部動畫和口型動畫的合成得到了快速的發(fā)展,并在影視3D動畫中得到了廣泛的應(yīng)用。
在漢語口型動畫方面,哈爾濱工業(yè)大學(xué)的尹寶才[2]等研究的以漢語文本驅(qū)動的基本表情和口型合成系統(tǒng),根據(jù)Ekman[3]定義的6種基本表情和漢語文本情緒維量的分析,成功合成了不同的人臉面部表情和口型。另外,漢語語音發(fā)音的唇形可視化研究[4-6],對漢語發(fā)音口型進(jìn)行了較為系統(tǒng)的歸類,清華大學(xué)等在口型的實時模擬合成方面[7-8]取得了較好的成果。雖然合成了比較逼真的動畫模型,但都是基于單幀動畫不能連續(xù)驅(qū)動,也沒有跟語音同步。本論文針對漢語語音口型同步的連續(xù)驅(qū)動的動畫的合成進(jìn)行了研究,論文中重定義了口型拼音庫,并提出了聲韻加權(quán)控制和標(biāo)號權(quán)重向量分析方法、口型動畫過渡插值算法等,依據(jù)這些算法構(gòu)建了一個漢語語音同步的三維口型動畫合成原型系統(tǒng)。
本研究中只考慮一般情況下的漢語拼音發(fā)音規(guī)律,根據(jù)《漢語拼音方案》中提到的因素發(fā)音時的特征,結(jié)合唇度口型序列的聚類分類[5]和標(biāo)準(zhǔn)漢語拼音中聲母和韻母的劃分,本研究將基本口型劃分為三級。
一級口型:張嘴型是發(fā)音的核心,a口型為嘴型張開;g、k、h、e 嘴型為下巴張開到最大角度的四分之一,嘴唇放松;f上齒觸下唇形成窄逢;b、p、m雙唇緊閉,阻塞氣流。
二級口型:變化型 嘴型主要是前后左右的變化,i、y、j、q、x、z、c、s嘴唇向兩側(cè)拉伸,zh、ch、shi、r 嘴唇前伸,繃緊,o、u、w、ü 嘴型前伸,嘴型攏圓。
三級口型:嘴唇放松,音節(jié)之間的區(qū)別主要是舌頭和喉嚨的位置不同,嘴型變化細(xì)微,d、t、n、l嘴唇放松。
根據(jù)上述對漢語拼音庫的重定義和發(fā)音口型的分類,本論文提出了基于綜合加權(quán)的語音同步口型動畫合成算法,并基于該算法設(shè)計實現(xiàn)一個漢語語音同步的三維口型動畫合成系統(tǒng)。對于輸入的漢語文本,系統(tǒng)首先實現(xiàn)文本到語音的轉(zhuǎn)換,同時能夠?qū)⒄Z音同步到唇形變化,實現(xiàn)語音口型同步的動畫合成。動畫合成算法的關(guān)鍵是合成口型的運行時間,運行時間的長短直接決定能否讓臉部模型同步展示在系統(tǒng)前端。口型動畫合成系統(tǒng)的基本框架入圖1所示。
圖1 漢語語音同步口型系統(tǒng)流程圖
具體步驟如下:
Step 1 輸入漢語文本;
Step 2 將文本轉(zhuǎn)換為漢語語音學(xué)的拼音;
Step 3 從文本產(chǎn)生合成語音的樣本;
Step 4 詢問音頻處理器,且從語音播放處理器中決定當(dāng)前的音素;
Step 5 從當(dāng)前音節(jié)的軌跡中計算出目前的口型;
Step 6 合成語音同步的口型并且同步圖形展示,返回Step4直至沒有可讀因素為止。
其中,Step1至Step3是預(yù)處理階段,是算法所必要的部分,因為語音轉(zhuǎn)換和音頻樣本可以被預(yù)產(chǎn)生并存儲在磁盤里。而Step4至Step6是實現(xiàn)語音口型動畫同步性的關(guān)鍵。本文結(jié)合前人的研究,綜合漢語拼音發(fā)音時口型變化的規(guī)律和漢語標(biāo)號的時間控制,提出了聲韻加權(quán)控制算法,并對整句、整段話中的標(biāo)號加以權(quán)重向量的分析,能夠合成與語音同步的連續(xù)變化的口型動畫模型。在處理過程中,需要數(shù)/模轉(zhuǎn)換(DAC)來產(chǎn)生相關(guān)說話聲波的模擬信號,并聯(lián)合使用音頻播放設(shè)備,這些必須是在系統(tǒng)程序的一個請求響應(yīng)維持時間內(nèi)完成,否則就會出現(xiàn)口型動畫遲緩于語音的現(xiàn)象。因此,需要把全局時鐘設(shè)置為基于音頻服務(wù)請求響應(yīng)的時間作為一個響應(yīng)時鐘。音頻服務(wù)設(shè)備的時鐘,在初始化過程中被采樣并存儲。
聲音與圖形的同步實現(xiàn)如下:音頻服務(wù)器被初始化,并返回開始時間序列。一個樣本小序列被播放,并返回持續(xù)時間(毫秒級別)和當(dāng)前服務(wù)器時間,并從當(dāng)前服務(wù)器時間計算出相關(guān)的動畫驅(qū)動時間,以此計算當(dāng)前口型的形變。一旦口型形變被計算出,另外的操作控制,例如眨眼等,被控制發(fā)生在這個時間內(nèi)。之后,面部圖形被更新,渲染,并被表現(xiàn)在系統(tǒng)前端。
根據(jù)上述口型的特征分類,可以發(fā)現(xiàn)很多音素的發(fā)音口型是相同或者是類似的,因此為了達(dá)到快速、易操作的目的,本研究對標(biāo)準(zhǔn)漢語拼音進(jìn)行重新定義,將漢語拼音劃分為聲部和韻部。對標(biāo)準(zhǔn)聲母表的分類簡化為基本的6類如表1,韻部可分為4類口型如表2。
表1 標(biāo)準(zhǔn)漢語拼音聲母轉(zhuǎn)換表
表2 標(biāo)準(zhǔn)漢語拼音韻母轉(zhuǎn)換表
聲部的定義主要是將發(fā)音口型特點相同或者類似的聲母歸類:s-b雙唇緊閉,阻塞氣流;s-f上齒觸下唇形成窄逢;s-d嘴型微開,嘴唇放松,嘴型變化細(xì)微;s-g嘴型為下巴張開到最大角度的四分之一,嘴唇放松;s-r嘴唇前伸,繃緊;s-y 嘴唇向兩側(cè)拉伸。同樣根據(jù)口型特征,韻部可分為:y-a口型,主要是用于發(fā)音時嘴唇開度較大的不圓唇的韻母發(fā)音,例如 a、an等;y-o口型,主要是用于發(fā)音時嘴唇略圓,嘴向前撮的韻母,例如o、ou等;y-e口型,主要是用于發(fā)音時嘴唇半張、口型不圓的韻母例如e、i等;y-o主要是用于發(fā)音時嘴唇向前突出成圓形只留較小縫的韻母,例如u等。根據(jù)表1和表2,本研究將所有的漢字拼音轉(zhuǎn)換成口型聲部和口型韻部兩個部分,例如“動畫”兩字就可以分別表示成 s-d→y-o和s-d→y-a。如果把s-b、s-d、s-f、 s-r 、s-y、y-a、y-o、s-g和 y-e、y-i做成 9個口型模型,那么每兩個模型關(guān)鍵幀之間的變化過程將構(gòu)成一個漢字的發(fā)音口型動畫。
把漢字按照聲、韻母分成聲部和韻部口型的方法基本適用全部漢字,只有個別漢字拼音例外,即單因素漢字如 a(?。?、0(哦)、e(餓)、ai(愛)、ei(誒)、ao(襖)、en(恩)、er(兒)等,它們只有漢語拼音劃分中的韻母。如果按照上面的分類,都只有一個口型韻部,那么在動畫合成中就只存在單個韻部口型,為了統(tǒng)一把它們都加上一個固定的聲部口型符號稱為自然狀態(tài)模型,記為“&”。完成口型拼音聲部與韻部定義后接下來就是轉(zhuǎn)換工作,就是將漢字的標(biāo)準(zhǔn)拼音轉(zhuǎn)換成由聲部與韻部符號組成的口型拼音。為了程序?qū)崿F(xiàn)方便,本研究中把聲部與韻部的口型記號簡化,去掉前面的“s-”和“y-”只寫成一個字母簡化后符號字母共有 10 個:a、o、e、i、b、d、f、r、y、g。表3給出了一些漢字拼音轉(zhuǎn)換的例子。
表3 部分漢字轉(zhuǎn)換舉例表
構(gòu)造好基本口型模型并建立相應(yīng)的口型動畫拼音庫后,還無法模擬自然人正常溝通時連續(xù)的漢語口型動畫,還需要考慮上述單音節(jié)口型變化中聲部和韻部對發(fā)音動畫控制時間的不同,而且要綜合考慮整句話甚至整段話中漢語標(biāo)點符號對口型變化的影響。因此,本節(jié)考慮合成同步動畫時聲部和韻部控制時間的不同以及聲、韻兩部分動畫過渡中的流暢性,在控制這兩部分動畫時,采用聲韻加權(quán)的處理方法,以合理的控制兩部的動畫時間比例使動畫更加逼真,并應(yīng)用一種余弦函數(shù)處理兩種口型動畫的過渡,讓動畫更加的平滑流暢。
3.2.1 聲韻加權(quán)算法
自然人在一個漢語音節(jié)中,聲母和韻母在音節(jié)中所占的比例是不一樣的,而且相對于韻母來說,聲母所占的比例要小得多,也就是說口型的最終外觀效果主要是體現(xiàn)在韻母上,所以在口型動畫控制過程中韻部的動畫時長要大于聲部。針對此問題本研究中將對聲部和韻部采用加時間權(quán)重來控制其在動畫合成中所起的作用。在合成口型動畫時,“人”每說一個漢字時,口型就由聲部關(guān)鍵幀過渡變形為韻部關(guān)鍵幀。韻部的動畫時長要大于聲部,也就是說口型的最終外觀效果主要是體現(xiàn)在韻部。
通過改變一定限度內(nèi)的ws、wy權(quán)重值可以生成類似的訓(xùn)練集的基本口型,ws、wy稱為聲部權(quán)重和韻部權(quán)重,可以用到口型動畫通道上。依此方法實現(xiàn)自動動畫的程式控制,動態(tài)的獲得 3D動態(tài)口型動畫的合成。自然人發(fā)聲音節(jié)時域波形與單音節(jié)的聲韻加權(quán)控制動畫合成過程對比效果如圖2所示。
圖2 發(fā)音實際時域波形和聲韻加權(quán)控制的動畫
3.2.2 標(biāo)號權(quán)重向量分析
連續(xù)的口型動畫不僅要考慮到這些單音節(jié)動畫,更要考慮連續(xù)、完整句子或者段落中單個音節(jié)動畫的過渡,句子或者段落中標(biāo)點符號的停頓時長。句子前后都有停頓,并帶有一定的句調(diào),表示相對完整的意義。句子前后或中間的停頓,在口頭語言中,表現(xiàn)為一定時間的間隔,在書面語言中,就用標(biāo)點符號來表示。標(biāo)點符號是書面語言的有機組成部分,是書面語言不可缺少的輔助工具,它幫助人們確切地表達(dá)思想感情和理解書面語言。同樣,標(biāo)點符號在自動合成連續(xù)動畫的中所起的作用也是不可忽略的。標(biāo)點符號中的標(biāo)號,如引號,括號等在句子中出現(xiàn)時,停頓時間幾乎可以忽略,在這個算法中將不予以考慮。本研究主要考慮在句內(nèi)或句末出現(xiàn)的停頓時間較長的7種點號,如句號、嘆號、問號、頓號、逗號、分號、冒號等,將其在句中的停頓時間加權(quán)表示如圖3所示。
圖3 標(biāo)號權(quán)重
針對漢語中的標(biāo)號同樣賦以不同的權(quán)值,以便能生成更加逼真的、連續(xù)口型動畫,計算公式如下
3.2.3 口型過渡處理
一旦t(現(xiàn)在的時間和 t0相關(guān))被音頻設(shè)備確定,唇部節(jié)點位移就可以被計算出來了。每一個唇部節(jié)點的視位可以用 xi( t) = [x ( t),y( t),z( t)]′來定義,在這里, i = 1 ,2,… ,n 是定義了嘴部幾何和拓?fù)浣Y(jié)構(gòu)的控制節(jié)點的序列。為了做到完整口部形狀的控制節(jié)點位置的內(nèi)插值,拓?fù)浣Y(jié)構(gòu)必須保持固定,而且在每一個唇部形狀雛形里的控制節(jié)點必須保持一致。中間的內(nèi)插口型各個節(jié)點的位置X(s)可以通過初始和結(jié)束視位節(jié)點X0和X1的位置計算出來,公式如下
其中u=1-s,變量s通常被描述成t的線性或非線性變換,且0≤s≤1,然而,基于線性內(nèi)插值的動作并沒有展現(xiàn)出加速和減速的初始動作特征。一個加速和減速的相近的內(nèi)插近似值使用了一個余弦函數(shù)來完善這個動作
關(guān)于節(jié)點位移的動態(tài)計算,它以唇部的物理動作為依據(jù),即如果指定了節(jié)點 Xi(t)的初始結(jié)構(gòu)的位置、質(zhì)量和速度,它就可以被計算出來一旦幾何結(jié)構(gòu)確定了,就可以應(yīng)用牛頓物理學(xué)
由于知道了X0和X1的位置,就可以計算它們沿向量X0X1的傳遞。為了計算出節(jié)點上的力,假設(shè)當(dāng)時fi=0,這樣力就可以適用于節(jié)點,γ是一個速度等價阻尼系數(shù)。唇部形狀的變化使用了以節(jié)點分離為依據(jù)的Hookean彈性力,因此它可以提供一種面部組織比較靈活的動作的近似:節(jié)點分離向量
運動方程式是系統(tǒng)時間 t的函數(shù),t是來自音頻服務(wù)器的驅(qū)動時間,以此來計算新的速度和節(jié)點位置
本文算法在 VC++平臺上用 OGRE在Intel?i5,2.53GHz,2GB內(nèi)存的PC機上實現(xiàn)。圖4給出了我們的動畫試驗結(jié)果與真人發(fā)音口型的對比結(jié)果。圖4(a)是合成“動”發(fā)音的動畫口型序列,圖 4(b)是真人說“動”時連續(xù)拍照所得到的口型序列??梢钥闯?,采用該方法對口型動畫進(jìn)行合成,比較真實地反映人臉口型發(fā)音時的變化情況。
圖4 動畫合成 “動”口型與真人發(fā)音對比
本文提出了聲韻加權(quán)算法和標(biāo)號權(quán)重向量加權(quán)處理的語音同步的口型動畫算法,并基于該算法設(shè)計實現(xiàn)了一個漢語語音同步的三維口型動畫合成系統(tǒng),系統(tǒng)不僅能夠?qū)崿F(xiàn)語音口型動畫的同步,還能夠連續(xù)的合成變化的口型,并搭配了簡單的表情動畫,使整個模擬過程更加逼真。該系統(tǒng)可以應(yīng)用于簡單的唇型識別,3D動畫影視制作等。但是系統(tǒng)也存在不足,由于限制速度的原因,每個漢字只能應(yīng)用一兩個唇形合成,因此系統(tǒng)不能模擬比較細(xì)致的唇形變化。我們下一步考慮如何構(gòu)建更加細(xì)致的個性化口型模型,并通過分析漢語文本中的情緒因素,使系統(tǒng)不僅能夠模擬更加細(xì)致的唇型變化,更使系統(tǒng)在實現(xiàn)語音口型的同步的同時表現(xiàn)出更加豐富的表情。
[1]J?rn O. Animation of synthetic faces in MPEG-4 [J].IEEE Computer Animation, 1998, 1087(4844): 49-55.
[2]尹寶才, 高 文. 利用 Bézier曲面的面部表情和口型幾何造型[J]. 計算機學(xué)報, 1998, 21(S1): 347-350.
[3]Ekman P, Friesen W V. Manual for the facial action coding system [M]. Palo Alto CA: Consulting Psychologists Press, 1978: 1-45.
[4]王志明, 蔡蓮紅, 艾海舟. 基于數(shù)據(jù)驅(qū)動方法的漢語文本-可視語音合成[J]. 軟件學(xué)報, 2006, 16(6):1054-1063.
[5]單 衛(wèi), 姚鴻勛, 高 文. 唇讀中序列口型的分類[J].中文信息學(xué)報, 2002, (1): 30-36.
[6]呂 軍, 曹效英. 基于語音識別的漢語發(fā)音自動評分系統(tǒng)的設(shè)計與實現(xiàn)[J]. 計算機工程與設(shè)計, 2007,28(2): 1232-1235.
[7]Du Yangzhou, Lin Xueyin. Realistic mouth synthesis based on shape appearance dependence mapping [J].Pattern Recognition Letters, 2002, 23: 1875-1885.
[8]Hong Pengyu, Wen Zhen, Thomas S H. Real-time speech-driven face animation with expressions using neural networks [J]. IEEE TRANSACTIONS ON NEURAL NETWORKS, 2002, 13(4): 916-926.
[9]粟學(xué)麗, 丁 慧, 徐柏齡. 基于熵函數(shù)的耳語音聲韻分割法[J]. 聲學(xué)學(xué)報, 2005, 30(1): 69-75.