關(guān)鍵詞: PyQt信號(hào)與槽; 智能語(yǔ)音調(diào)節(jié); 人機(jī)互動(dòng); 多表情切換; 情緒識(shí)別
中圖分類(lèi)號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)28-0118-03
0 引言
聊天機(jī)器人,是一種基于AI的應(yīng)用程序軟件,其核心功能在于利用自然語(yǔ)言[1]實(shí)現(xiàn)人與人之間交流的某種形式的仿真。通常情況下,這個(gè)系統(tǒng)的運(yùn)行環(huán)境是在某種專(zhuān)門(mén)的軟件平臺(tái)上,而且主要是在各種移動(dòng)設(shè)備上,比如電腦、智能手機(jī)等。
ELIZA[2](伊莉莎)是最早的聊天機(jī)器人,由JosephWeizenbaum于1966年研發(fā)完成,它在模擬對(duì)話過(guò)程中采用模式匹配和替換方法。這款機(jī)器的最初設(shè)計(jì)目標(biāo)是為了能夠幫助心理咨詢師解決患者精神問(wèn)題。1988 年,尤內(nèi)克斯顧問(wèn)(UNIX Consultant) [3]聊天機(jī)器人系統(tǒng)問(wèn)世,開(kāi)發(fā)者為加州大學(xué)伯克利分校(UC Berkeley) 的Robert Wilensky等人。在設(shè)計(jì)過(guò)程中基本延續(xù)了伊莉莎的設(shè)計(jì)思路和技術(shù)原理,主要作用是根據(jù)不同用戶對(duì)UNIX系統(tǒng)的熟悉程度、應(yīng)用場(chǎng)景、學(xué)習(xí)需求進(jìn)行建模實(shí)驗(yàn),幫助用戶更好地進(jìn)行系統(tǒng)的學(xué)習(xí)。
自1990年起,在美國(guó)科學(xué)家Hugh G.Loebenr設(shè)立的勒布納人工智能獎(jiǎng)項(xiàng)激勵(lì)下,聊天機(jī)器人智能化進(jìn)程全面提速,其中最具代表性的聊天機(jī)器人系統(tǒng)主要有:愛(ài)麗絲(ALICE) 、YAP[4]系統(tǒng)(主要用途為查詢英國(guó)電話黃頁(yè))、CSIEC[5]系統(tǒng)(主要用途為針對(duì)外語(yǔ)學(xué)習(xí)者,搜索學(xué)習(xí)伙伴)、Sofia[6]系統(tǒng)(主要應(yīng)用于哈佛大學(xué)勒布納獎(jiǎng)學(xué)數(shù)學(xué)教學(xué))等。但是聊天機(jī)器人系統(tǒng)目前存在一種難以解決的問(wèn)題,即在與人類(lèi)進(jìn)行交流時(shí)并不能像人類(lèi)本身一樣實(shí)時(shí)表現(xiàn)出相對(duì)應(yīng)的表情。
基于以上問(wèn)題,本文提出了一個(gè)基于PyQt的多表情智能語(yǔ)音聊天機(jī)器人系統(tǒng),本系統(tǒng)不僅可以與用戶對(duì)話交流,還可根據(jù)用戶語(yǔ)音中的情緒實(shí)時(shí)地切換表情,提升聊天機(jī)器人的情感表達(dá)效果。
1 智能語(yǔ)音調(diào)節(jié)裝置
所提出的智能調(diào)節(jié)裝置主要有以下幾個(gè)模塊:?jiǎn)拘涯K、情緒識(shí)別模型、情緒對(duì)話策略和語(yǔ)音生成模塊。其結(jié)構(gòu)如圖1所示。
喚醒模塊的設(shè)計(jì)主要目的是對(duì)語(yǔ)音調(diào)節(jié)裝置進(jìn)行喚醒,喚醒方式主要有兩種:語(yǔ)音喚醒和距離喚醒。語(yǔ)音生成模塊的主要作用是根據(jù)前序任務(wù)完成后生成的對(duì)應(yīng)模型,在網(wǎng)絡(luò)狀態(tài)下生成系統(tǒng)設(shè)定的聲音特征及相應(yīng)的情感文字語(yǔ)音,并通過(guò)生動(dòng)的方式播放。
深度學(xué)習(xí)算法是當(dāng)前人工智能領(lǐng)域中最受歡迎的情緒識(shí)別模型,能夠?qū)崟r(shí)識(shí)別用戶語(yǔ)音中的各種情緒,例如快樂(lè)、悲傷、憤怒或平靜等。
在對(duì)情緒進(jìn)行識(shí)別之前,必須針對(duì)語(yǔ)音信號(hào)中包含的情感特征進(jìn)行識(shí)別與確定。關(guān)于該識(shí)別方式,本課題從頻譜關(guān)聯(lián)、韻律特征、聲學(xué)質(zhì)量特征、融合特征以及深度學(xué)習(xí)條件下的語(yǔ)音特征等方面進(jìn)行情感分析。目前,我們已經(jīng)對(duì)聲學(xué)特征與情感之間的相互關(guān)系進(jìn)行了初步研究,如表1所示。
經(jīng)過(guò)前面的研究,選取有效的特征作為識(shí)別模型的輸入,使用卷積神經(jīng)網(wǎng)絡(luò)的模型應(yīng)用于頻譜圖或音頻特征(例如Mel頻率倒譜系數(shù)(MFCC) [7]和低級(jí)描述符(LLD) [8]) ,對(duì)源自原始音頻信號(hào)的信息進(jìn)行訓(xùn)練。與此同時(shí),使用低級(jí)描述符(LLD) 和深度神經(jīng)網(wǎng)絡(luò)提取與不同角色相對(duì)應(yīng)的語(yǔ)音特征。雖然低級(jí)描述符(LLD) 和高級(jí)統(tǒng)計(jì)功能(HSF) 只能獲取語(yǔ)音特征的局部信息,而非全局信息,且隨著特征抽取維數(shù)的增加,深度神經(jīng)網(wǎng)絡(luò)的復(fù)雜性也隨之增加,難以進(jìn)一步提升識(shí)別精度。在此基礎(chǔ)上,本課題提出在原始語(yǔ)音輸入中加入全局信號(hào),在一定程度上限制人工合成的特征維數(shù),并獲取完整的語(yǔ)音信息。
基于上述研究,本課題提出利用人工合成的 HSF 與 CRNN [9-10]的聯(lián)合表達(dá),側(cè)重研究特定部位和整體部位的表達(dá),以精準(zhǔn)判斷語(yǔ)音情緒的強(qiáng)弱。該方法的具體操作方式如下:首先為了使不同類(lèi)型特征能夠投影到相同的特征空間,因此添加隱藏層;其次,對(duì)初始確定的特征維度進(jìn)行降低維度的處理。
網(wǎng)絡(luò)結(jié)構(gòu)包含以下兩項(xiàng)內(nèi)容:第一項(xiàng)是卷積式特征提取器,該采集器的輸入層為一張頻譜圖,其中縱坐標(biāo)表示頻率,橫坐標(biāo)表示時(shí)間,中心坐標(biāo)表示語(yǔ)音數(shù)據(jù)量。在此基礎(chǔ)上,本課題提出了一種基于顏色的三維坐標(biāo)系數(shù)值表示方法,并利用顏色有效地表征。在處理預(yù)切分的語(yǔ)音時(shí),可通過(guò)該方法取得任一段的卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)特征[11]。第二項(xiàng)為BMLSTM,在此基礎(chǔ)上,每個(gè)時(shí)間步都與原聲音的某一部分相對(duì)應(yīng),既避免了對(duì)音頻的剪切,也避免了對(duì)語(yǔ)音的填充,又能在一定程度上保持長(zhǎng)時(shí)依存關(guān)系。在計(jì)算過(guò)程中,將最大池化層、平均池化層和最小池化層進(jìn)行運(yùn)算,實(shí)現(xiàn)池化矢量的集成化。
2 PyQt 的信號(hào)與槽機(jī)制
正文內(nèi)容在PyQt 中,每一個(gè)QObject 對(duì)象以及PyQt中每個(gè)繼承了QWidget的控件(這些都是QObject的子對(duì)象)均支持信號(hào)與槽機(jī)制。當(dāng)信號(hào)發(fā)射時(shí),連接的槽函數(shù)將會(huì)自動(dòng)執(zhí)行。在PyQt中,信號(hào)與槽通過(guò)object.signal.connect()方法進(jìn)行連接。
其中,信號(hào)和槽是其中最主要的接口,主要應(yīng)用于多個(gè)對(duì)象的互相通信。在Qt的各種特性中起著核心作用,取代了原本復(fù)雜混亂的函數(shù)指針,使得通信程序的編寫(xiě)過(guò)程得以簡(jiǎn)化。信號(hào)和槽包含在所有從QObject或其子類(lèi)(如QWidget) 派生的類(lèi)中。當(dāng)這些對(duì)象的狀態(tài)由于各種因素而發(fā)生變化時(shí),該對(duì)象會(huì)立即發(fā)射與之對(duì)應(yīng)的信號(hào),結(jié)構(gòu)如圖2所示。
槽的主要作用是接收信號(hào),但通常它們是對(duì)象的成員函數(shù)。一個(gè)槽無(wú)法判斷是否存在其他信號(hào)與其進(jìn)行連接。同時(shí),在這一過(guò)程中,對(duì)象也不需要了解底層的通信機(jī)制。單個(gè)槽可以與多個(gè)信號(hào)建立連接,同樣,單個(gè)信號(hào)也可以與多個(gè)槽建立聯(lián)系。即使兩個(gè)信號(hào)之間建立了相關(guān)連接,這種操作也是可以實(shí)現(xiàn)的。在這種情況下,無(wú)論第一個(gè)信號(hào)何時(shí)發(fā)射,系統(tǒng)都會(huì)立即響應(yīng),并發(fā)射第二個(gè)信號(hào)。
本文將通過(guò)智能語(yǔ)音調(diào)節(jié)裝置在線識(shí)別出的用戶語(yǔ)音中表達(dá)的開(kāi)心、悲傷、憤怒或平靜等情緒作為信號(hào)(每種情緒對(duì)應(yīng)一個(gè)信號(hào)),傳遞給相應(yīng)的槽函數(shù)(需要提前準(zhǔn)備展示機(jī)器人表情圖片的函數(shù),每種情緒準(zhǔn)備一個(gè)槽函數(shù),利用PyQt GUI界面[12]) ,通過(guò)將一個(gè)信號(hào)與一個(gè)槽連接,實(shí)現(xiàn)表情的切換。
3 服務(wù)器端
由于該部分涉及的工作冗余性較強(qiáng),因此解析規(guī)則顯得尤為重要。在有效獲取語(yǔ)音數(shù)據(jù)后,可以將用戶的語(yǔ)音上傳至相應(yīng)的服務(wù)器,并使用對(duì)應(yīng)的、帶有明顯特征的標(biāo)簽,來(lái)有效提取其中所包含的數(shù)據(jù)內(nèi)容。同時(shí),針對(duì)不同的語(yǔ)音和文檔,設(shè)計(jì)便于區(qū)分且具有相關(guān)性的文檔名稱解析規(guī)則,即為每個(gè)文檔提供多種正則表達(dá)式模板。在確定標(biāo)簽中所包含的數(shù)據(jù)范圍后,對(duì)其進(jìn)行分塊,分析其中的目標(biāo)信息。針對(duì)已分析的數(shù)據(jù),采用統(tǒng)一格式:id_情感_性別_年齡_ 姓名等。
最后,將已解析出的數(shù)據(jù)有序存儲(chǔ)在HDFS中,并根據(jù)分析結(jié)果自動(dòng)完成指定的備份次數(shù)。
在本文中,將數(shù)據(jù)備份為三份,以方便未來(lái)的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)查詢工作。圖3為服務(wù)器端存儲(chǔ)數(shù)據(jù)的基本流程。
4 結(jié)論實(shí)驗(yàn)及相關(guān)結(jié)果
正文描述了通過(guò)語(yǔ)音喚醒多表情智能語(yǔ)音聊天機(jī)器人的過(guò)程。喚醒前,機(jī)器人的初始表情如圖4所示;喚醒后,機(jī)器人的表情如圖5所示。
當(dāng)多表情聊天機(jī)器人識(shí)別說(shuō)話者語(yǔ)音時(shí),機(jī)器人的表情如圖6所示。
在與用戶對(duì)話時(shí),多表情聊天機(jī)器人的表情會(huì)根據(jù)用戶的語(yǔ)音情緒而實(shí)時(shí)切換。例如:
1) 當(dāng)聊天語(yǔ)句帶有開(kāi)心的情緒時(shí),機(jī)器人的表情如圖7所示。
2) 當(dāng)聊天語(yǔ)句帶有生氣的情緒時(shí),機(jī)器人的表情如圖8所示。
3) 當(dāng)聊天語(yǔ)句帶有害羞的情緒時(shí),機(jī)器人的表情如圖9所示。
4) 當(dāng)聊天語(yǔ)句帶有無(wú)聊的情緒時(shí),機(jī)器人的表情如圖10所示。
5) 當(dāng)聊天語(yǔ)句帶有無(wú)奈的情緒時(shí),機(jī)器人的表情如圖11所示。
6) 當(dāng)聊天語(yǔ)句帶有悲傷的情緒時(shí),機(jī)器人的表情如圖12所示。
5 結(jié)論
本系統(tǒng)利用語(yǔ)音調(diào)節(jié)裝置識(shí)別用戶的實(shí)時(shí)語(yǔ)音與情緒,將用戶實(shí)時(shí)的語(yǔ)音轉(zhuǎn)換為文字,通過(guò)相關(guān)搜索生成語(yǔ)音與用戶的交流;同時(shí),將識(shí)別出的情緒作為信號(hào),結(jié)合PyQt的信號(hào)與槽機(jī)制進(jìn)行實(shí)時(shí)的表情切換。多次實(shí)驗(yàn)表明,利用PyQt的信號(hào)與槽機(jī)制傳遞智能語(yǔ)音調(diào)節(jié)設(shè)備識(shí)別出的情緒信號(hào)連接到相應(yīng)的槽函數(shù)中,可以實(shí)現(xiàn)多表情的切換,使聊天機(jī)器人的情感表達(dá)更加貼近實(shí)際,提升了用戶體驗(yàn)。