豆子聞, 李文書
(浙江理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 浙江 杭州 310018)
在數(shù)字化時(shí)代,客戶服務(wù)經(jīng)歷了重大變革,越來(lái)越多的消費(fèi)者傾向于通過(guò)數(shù)字方式與企業(yè)溝通,而企業(yè)也在探尋更加可靠且高效的客戶服務(wù)系統(tǒng)[1]。隨著計(jì)算機(jī)算力的不斷增強(qiáng),神經(jīng)網(wǎng)絡(luò)參數(shù)量的快速提升使得智能客服更加“聰明”、完善。人工智能及時(shí)的應(yīng)用徹底改變了客戶服務(wù)行業(yè),而三維重建以及圖形渲染的發(fā)展,也使得數(shù)字人更加逼真,其皮膚紋理清晰可見(jiàn)。數(shù)字人和客服系統(tǒng)相結(jié)合是數(shù)字客服這一領(lǐng)域最前沿的發(fā)展趨勢(shì),而在系統(tǒng)開(kāi)發(fā)中結(jié)合使用神經(jīng)網(wǎng)絡(luò)和虛幻引擎是一種獨(dú)特的方法,在以前的研究中未被廣泛探索[2]。
本文主要研究基于神經(jīng)網(wǎng)絡(luò)和虛幻引擎的數(shù)字人客服系統(tǒng)的開(kāi)發(fā),該系統(tǒng)旨在為客戶創(chuàng)造沉浸式的互動(dòng)體驗(yàn),提高他們對(duì)產(chǎn)品或服務(wù)提供企業(yè)的滿意度和忠誠(chéng)度。通過(guò)模擬類人交互,數(shù)字人客服系統(tǒng)可以對(duì)客戶的查詢和投訴提供有效且個(gè)性化的響應(yīng),能顯著提升客戶的整體體驗(yàn)感。
數(shù)字人客服系統(tǒng)架構(gòu)主要包含數(shù)字人構(gòu)建、中文問(wèn)答、語(yǔ)音合成、唇形同步四大模塊。用戶只需要對(duì)錄音設(shè)備提出自己的問(wèn)題,系統(tǒng)的語(yǔ)音識(shí)別模塊會(huì)自動(dòng)識(shí)別出用戶的語(yǔ)音,并轉(zhuǎn)換為文字輸入中文問(wèn)答模塊,然后中文問(wèn)答模塊給出回答,并經(jīng)過(guò)語(yǔ)音合成及唇形同步模塊,最終得以輸出逼真的數(shù)字人面部表情和合成語(yǔ)音。數(shù)字人客服系統(tǒng)總體架構(gòu)圖如圖1所示。
圖1 數(shù)字人客服系統(tǒng)總體架構(gòu)圖Fig.1 Overall architecture diagram of digital human customer service system
在虛擬形象的構(gòu)建中,本文采用基于生成器-判別器的三維可變形人臉模型(3D Morphable Models,3DMM),主要用于從每張單獨(dú)的圖片中得到人臉的基礎(chǔ)模型[3]。在3DMM生成器階段,使用卷積神經(jīng)網(wǎng)絡(luò)從輸入圖片中提取出面部姿態(tài)和光照的向量表示,以及模型中所需的參數(shù),然后提取出面部的顏色貼圖和立體構(gòu)型。生成器模塊的主要作用是將輸入的圖片轉(zhuǎn)化為3D模型。
首先,使用人臉識(shí)別算法從輸入圖片中提取特征,這其中有兩個(gè)目的:一是用于估計(jì)主體偏差并計(jì)算網(wǎng)絡(luò)主體偏差的損失函數(shù);二是細(xì)化紋理[4]。其次,使用圖卷積網(wǎng)絡(luò)技術(shù),并使用解碼器、精煉器、組合器三個(gè)貼圖優(yōu)化模塊接收生成器中的結(jié)果作為輸入,并輸出貼圖的細(xì)化版本。人臉識(shí)別算法的輸出被傳遞到解碼器,同時(shí)3DMM的結(jié)果傳遞到精煉器中以優(yōu)化人臉的頂點(diǎn)顏色。最后,組合器綜合解碼器與精煉器給出的每個(gè)頂點(diǎn)的顏色,并將其與原始點(diǎn)、線、面信息結(jié)合,作為最終的輸出。判別器將輸出的模型再次映射到一個(gè)平面上[5]。通過(guò)識(shí)別這張圖片是原始圖片還是重投影,生成器和判別器進(jìn)行網(wǎng)絡(luò)對(duì)抗訓(xùn)練,從而提升模型的最終生成效果。人臉三維重建流程如圖2所示。
圖2 人臉三維重建流程Fig.2 3D reconstruction process of face
在對(duì)話系統(tǒng)的構(gòu)建上,本文使用Rasa為基礎(chǔ)框架,Rasa由自然語(yǔ)言處理庫(kù)組件和核心組件兩個(gè)部分組成[6]。自然語(yǔ)言處理庫(kù)可用于問(wèn)答機(jī)器人的意圖分類和實(shí)體識(shí)別,并且是一個(gè)基于有向無(wú)環(huán)圖的通用型自然語(yǔ)言處理框架。Rasa的組件之間相互連接,形成有向無(wú)環(huán)圖,并按一定的順序運(yùn)行。例如,命名實(shí)體組件必須在分詞器之前運(yùn)行才能正常工作。本文使用Chatito工具(Chatito是用于創(chuàng)建聊天機(jī)器人訓(xùn)練數(shù)據(jù)集的自然語(yǔ)言生成工具和領(lǐng)域特定語(yǔ)言)快速構(gòu)建Rasa NLU訓(xùn)練意圖識(shí)別數(shù)據(jù)集,并使用Rasa train nlu命令訓(xùn)練模型。
核心組件可以指定問(wèn)答機(jī)器人的行為(Actions)。Rasa Core還提供了訓(xùn)練預(yù)測(cè)概率模型的工具,以便根據(jù)當(dāng)前或歷史會(huì)話預(yù)測(cè)下一步動(dòng)作。首先,須要?jiǎng)?chuàng)建Domain文件,它包括意圖、實(shí)體、詞槽、模板和動(dòng)作。其次,通過(guò)編寫自定義動(dòng)作(actions.py)調(diào)用API和執(zhí)行相關(guān)操作。再次,構(gòu)建故事(story),即模擬用戶與問(wèn)答機(jī)器人的實(shí)際對(duì)話。用戶輸入的內(nèi)容會(huì)被轉(zhuǎn)換為意圖和實(shí)體,機(jī)器人對(duì)用戶的響應(yīng)則被視為動(dòng)作。完成以上配置(nlu、domain、stories、config)后,即可對(duì)整個(gè)Rasa模型進(jìn)行訓(xùn)練。Rasa的消息處理流程如圖3所示。
圖3 Rasa的消息處理流程Fig.3 Message processing flow of Rasa
Rasa的消息處理流程包括用戶輸入文本信息或語(yǔ)音信號(hào),由自然語(yǔ)言解釋器(Interpreter)將其轉(zhuǎn)換成意圖信息和實(shí)體信息,然后構(gòu)建語(yǔ)義詞典,包括原始文本、意圖和實(shí)體,并將其傳遞給核心組件。Rasa的對(duì)話狀態(tài)追蹤器會(huì)獲取當(dāng)前的對(duì)話狀態(tài),包括實(shí)體信息和詞槽情況,并記錄下來(lái)。當(dāng)策略接收到當(dāng)前的對(duì)話狀態(tài)后,會(huì)利用特征提取組件提取對(duì)話狀態(tài)的特征,并根據(jù)這些特征預(yù)測(cè)和選擇下一個(gè)動(dòng)作。追蹤器會(huì)記錄當(dāng)前執(zhí)行的動(dòng)作,最終執(zhí)行動(dòng)作并將結(jié)果反饋給用戶。Rasa的工程目錄文件主要包括config.yml、credentials.yml、actions.yml、domain.yml、endpoints.yml、data/nlu.yml、data/rules.yml、data/stories.yml、actions.py、data.json、data_to_neo4j.py、neo4j_Knowledge.py、models。其中,config.yml用來(lái)存放組件配置的信息;data/nlu.yml用來(lái)存放訓(xùn)練模型的數(shù)據(jù);models用來(lái)存放訓(xùn)練好的模型;domain.yml定義了問(wèn)答機(jī)器人的所有信息,包括意圖、實(shí)體、詞槽、動(dòng)作、表單和回復(fù)等;actions.yml用來(lái)存放動(dòng)作的代碼;credentials.yml用來(lái)連接到其他服務(wù);data/stories.yml用于訓(xùn)練核心模型的故事數(shù)據(jù)集。
本文的語(yǔ)音合成策略是采用一種端對(duì)端的TTS神經(jīng)網(wǎng)絡(luò)模型,其基于典型的編碼器-解碼器(Encoder-Decoder)結(jié)構(gòu)[7]。Encoder用來(lái)將文本特征轉(zhuǎn)化為中間特征;Decoder使用自回歸的方式,使用中間特征與上一時(shí)刻的梅爾特征輸出生成當(dāng)前時(shí)刻的梅爾特征。在Encoder層,首先將字母轉(zhuǎn)換為512維詞向量,其次經(jīng)過(guò)多層卷積操作對(duì)輸入的文本序列進(jìn)行上下文建模,以獲得上下文特征關(guān)系,最后經(jīng)過(guò)雙向LSTM層生成編碼特征。Decoder是一個(gè)注意力機(jī)制模塊,在訓(xùn)練時(shí)預(yù)訓(xùn)練網(wǎng)絡(luò)采用真實(shí)的梅爾頻譜特征作為輸入進(jìn)行訓(xùn)練,而在測(cè)試時(shí),上一時(shí)刻線性映射的輸出作為預(yù)訓(xùn)練網(wǎng)絡(luò)當(dāng)前時(shí)刻的輸入。預(yù)訓(xùn)練網(wǎng)絡(luò)為兩層維度為512的全連接網(wǎng)絡(luò),作為信息瓶頸層,對(duì)學(xué)習(xí)注意力是必要的,其輸入為特定一幀的梅爾頻譜特征,將該時(shí)刻輸出與注意力模塊輸出的上一時(shí)刻上下文特征進(jìn)行拼接操作后,送入兩層由1 024單元組成的LSTM層中,獲得LSTM的輸出。將Encoder輸出、LSTM輸出以及累加的注意力權(quán)重變量(初始值為0)作為注意力機(jī)制的輸入,并輸出這一時(shí)刻的注意力權(quán)重與這一時(shí)刻的上下文特征。其中,Encoder的輸出可以視為Value,LSTM的輸出視為Query,累加的注意力權(quán)重變量可以視作位置特征,獲得注意力權(quán)重后,與Encoder的輸出做加權(quán)和,得到當(dāng)前時(shí)刻的上下文特征。此時(shí),當(dāng)前時(shí)刻的上下文特征再與LSTM的輸出拼接,經(jīng)過(guò)線性映射,輸出目標(biāo)頻譜幀,最后使用Griffin-Lim算法將梅爾頻譜重建為時(shí)域的音頻信號(hào)[8]。
音頻信號(hào)最終需要轉(zhuǎn)化為面部動(dòng)畫,本文使用唇形同步算法Audio2Face[9]。Audio2Face網(wǎng)絡(luò)由三部分組成,其中第一部分包含1個(gè)自相關(guān)分析層和5個(gè)卷積層,在數(shù)據(jù)分析階段,使用線性預(yù)測(cè)編碼提取音頻特征,再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)對(duì)特征進(jìn)行壓縮,提取短時(shí)特征,該特征反映了人發(fā)音時(shí)面部動(dòng)畫附帶的特定語(yǔ)氣、音素等。在發(fā)音階段,壓縮后的短時(shí)特征再經(jīng)過(guò)5個(gè)卷積層,提取相鄰序列幀的相關(guān)性,最終輸出整體特征圖。除此之外,發(fā)聲時(shí)的情緒狀態(tài)也至關(guān)重要,該參數(shù)由神經(jīng)網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)生成,并逐層拼接到發(fā)音網(wǎng)絡(luò)。在輸出網(wǎng)絡(luò),數(shù)據(jù)需要經(jīng)過(guò)兩個(gè)全連接層,該網(wǎng)絡(luò)將特征數(shù)據(jù)映射到面部模型的61維變形權(quán)重(Blend Shap),其中第一個(gè)全連接層將特征映射到表情系數(shù),第二個(gè)全連接層將表情系數(shù)映射到BlendShap[10]。唇形同步算法流程如圖4所示。
圖4 唇形同步算法Fig.4 Lip synchronization algorithm
最終輸出的權(quán)重用于控制面部動(dòng)畫,如圖5所示為權(quán)重對(duì)面部動(dòng)畫的影響,例如當(dāng)權(quán)重MouthRight的值變大時(shí),面部網(wǎng)格的嘴部表現(xiàn)出右撇的姿態(tài)。
圖5 權(quán)重MouthRight為0.505 14時(shí)對(duì)面部動(dòng)畫的影響Fig.5 Influence on facial animation when MouthRight is 0.505 14
在虛幻引擎中,將三維重建的人臉模型重新映射為Metahuman模型,這是一種帶有身體骨骼綁定以及毛發(fā)的虛擬人制作系統(tǒng),面部動(dòng)畫的表達(dá)由變形權(quán)重的曲線經(jīng)由姿勢(shì)映射形成,本文使用Livelink數(shù)據(jù)流作為Python端和虛幻引擎的通信方式,總共將61維權(quán)重傳輸給虛幻引擎,權(quán)重名分別如下:
EyeBlinkLeft,EyeLookInLeft,EyeLookUpLeft,EyeSquintLeft,EyeWideLeft,EyeBlinkRight,EyeLookDownRight,EyeLookInRight,EyeLookOutRight,EyeLookUpRight,EyeSquintRight,EyeLookDownLeft,EyeWideRight,JawForward,JawLeft,JawRight,JawOpen,MouthClose,MouthFunnel,MouthPucker,MouthLeft,MouthRight,EyeLookOutLeft,MouthSmileLeft,MouthSmileRight,MouthFrownLeft,MouthFrownRight,MouthDimpleLeft,MouthDimpleRight,MouthStretchLeft,MouthStretchRight,MouthRollLower,MouthRollUpper,MouthShrugLower,MouthShrugUpper,MouthPressLeft,MouthPressRight,MouthLowerDownLeft,MouthLower-DownRight,MouthUpperUpLeft,MouthUpperUpRight,BrowDownLeft,BrowDownRight,BrowInnerUp,BrowOuterUpLeft,BrowOuterUpRight,CheekPuff,CheekSquintLeft,CheekSquintRight,NoseSneerLeft,NoseSneerRight,TongueOut,HeadYaw,HeadPitch,HeadRoll,LeftEyeYaw,LeftEyePitch,LeftEyeRoll,RightEyeYaw,RightEyePitch,RightEyeRoll。
在虛幻引擎端,該61維權(quán)重實(shí)時(shí)修改動(dòng)畫藍(lán)圖中的動(dòng)畫曲線值,如圖6所示。
圖6 虛幻引擎中動(dòng)畫藍(lán)圖權(quán)重應(yīng)用Fig.6 Application of animation blueprint weight in unreal engine
數(shù)字人客服系統(tǒng)虛幻引擎端如圖7所示,本文研究抽取不同年齡段的實(shí)驗(yàn)者共50人,其中本科生30人,碩士研究生15人,教師5人,實(shí)驗(yàn)者針對(duì)不同的問(wèn)題向數(shù)字人客服提問(wèn),其中48人表示對(duì)數(shù)字人客服的服務(wù)高度滿意,整體滿意度為96%。
圖7 數(shù)字人虛幻引擎端展示Fig.7 Unreal engine end display of digital human
本文設(shè)計(jì)并實(shí)現(xiàn)的基于神經(jīng)網(wǎng)絡(luò)和虛幻引擎的數(shù)字人客服系統(tǒng),創(chuàng)造性地將客服系統(tǒng)與數(shù)字人相結(jié)合,利用神經(jīng)網(wǎng)絡(luò)和虛幻引擎創(chuàng)建了一個(gè)高度逼真和交互性強(qiáng)的虛擬對(duì)象,使客戶能夠以自然和直觀的方式與數(shù)字人進(jìn)行交互。調(diào)查和測(cè)試結(jié)果顯示,客戶對(duì)這種新的服務(wù)方式反應(yīng)積極,多數(shù)實(shí)驗(yàn)者對(duì)數(shù)字人客服系統(tǒng)的服務(wù)表示高度滿意。統(tǒng)計(jì)結(jié)果也表明,數(shù)字人客服系統(tǒng)的使用對(duì)客戶服務(wù)運(yùn)營(yíng)的效率和有效性產(chǎn)生重大影響,同時(shí)能幫助企業(yè)降低成本,提高客戶滿意度,以及增加收入。