鄔卓恒 趙嘉熙 時小芳
摘要:語音情感識別是人工智能的重要研究領(lǐng)域之一。文章基于神經(jīng)網(wǎng)絡(luò)算法分析與設(shè)計語音情感識別系統(tǒng)。系統(tǒng)分為前端和后端兩個模塊:前端部署在移動終端上,實現(xiàn)接收語音,上傳語音文件,顯示識別結(jié)果等功能;后端部署在服務(wù)器上,實現(xiàn)語音降噪、特征提取、語音情感模型訓(xùn)練、情感識別、個人語音庫創(chuàng)建等功能。
關(guān)鍵詞:語音情感識別;BP神經(jīng)網(wǎng)絡(luò);個人語音庫
中圖分類號:TP181? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2022)10-0076-04
通常意義上的語音識別是指機器自動的識別語音的文本信息。語音的文本含義識別技術(shù)出現(xiàn)較早,1952年開發(fā)出簡單的語音識別數(shù)字系統(tǒng),從此正式開啟了語音識別的進程。語音情感識別也是語音識別的重要部分。語音情感識別領(lǐng)域是一項綜合性的研究領(lǐng)域,包括生物技術(shù)、心理認(rèn)知、腦科學(xué)、統(tǒng)計學(xué)、計算機科學(xué)等學(xué)科。情感可以通過孤立的跳躍式、離散的數(shù)據(jù)描述,也可以采用二維、三維或多維空間的連續(xù)值數(shù)據(jù)描述。本文設(shè)計的情感識別系統(tǒng)采用離散描述的情感模型,即將人類的情感分為6類:悲傷(Sa) 、害怕(F) 、驚奇(Su) 、生氣(A) 、高興(J) 和討厭(D) [1]。語音以波的形式在介質(zhì)中傳播,在計算機處理語音信息要進行采樣、連量、編碼后存儲使用。識別語音中包含人的情感,需要提取聲音的特征。聲音的提取特征方式較多,本系統(tǒng)采用MFCC[2-3]作為語音情感識別的特征。在語音情感識別技術(shù)發(fā)展的過程中出現(xiàn)了很多算法,其中傳統(tǒng)的機器學(xué)習(xí)算法、深度學(xué)習(xí)算法應(yīng)用較為廣泛。系統(tǒng)使用BP神經(jīng)網(wǎng)絡(luò)算法訓(xùn)練語音情感模型,刻畫語音特征與情感的關(guān)系。
1 需求分析
語音情感識別系統(tǒng)包括兩個主要功能:識別用戶上傳的語音的情感、建立并不斷優(yōu)化情感識別模型。用戶和管理員是語音識別系統(tǒng)的兩類參與者。用戶使用的核心功能是通過移動終端的客戶端發(fā)送語音,等待系統(tǒng)反饋,系統(tǒng)識別說話人聲音中包含的情感狀態(tài)。
管理員需要創(chuàng)建并維護公共語音數(shù)據(jù)庫、調(diào)用訓(xùn)練算法、建立用戶個人語音庫、訓(xùn)練用戶個人情感識別模型。在系統(tǒng)運行的早期,語音識別系統(tǒng)使用的語音數(shù)據(jù)特征是從公開數(shù)據(jù)庫中獲得,并使用公開語音數(shù)據(jù)庫中的數(shù)據(jù)訓(xùn)練語音識別模型。系統(tǒng)運行一段時間后,積累一部分用戶語音數(shù)據(jù),系統(tǒng)將新增加數(shù)據(jù)與公共數(shù)據(jù)聯(lián)合訓(xùn)練模型,提升模型識別的準(zhǔn)確率。系統(tǒng)運行較長一段時間后,積累大量的用戶語音數(shù)據(jù),為用戶建立用戶個人語音庫。系統(tǒng)建立個人語音數(shù)據(jù)庫并訓(xùn)練模型,該模型為該用戶服務(wù),能提升用戶情感識別的準(zhǔn)確度。
2 語音情感識別系統(tǒng)框架
語音情感系統(tǒng)分為兩部分如圖1語音情感識別系統(tǒng)框架圖所示:第一部分為前端,使用App安裝在用戶的移動終端中。第二部分為后端,以Web的形式部署在服務(wù)器上鏈接公共聲音數(shù)據(jù)庫和用戶聲音個人數(shù)據(jù)庫。兩部通過網(wǎng)絡(luò)進行鏈接。前端的主要功能是錄音、播放、上傳、顯示情感狀態(tài)、反饋識別正確程度。后端主要功能有三部分:語音情感模型的訓(xùn)練、語音狀態(tài)的識別、用戶個人語音數(shù)據(jù)庫的構(gòu)建。
3 語音情感識別系統(tǒng)概要設(shè)計
語音情感識別系統(tǒng)結(jié)構(gòu)如圖2所示。后端模塊中三個模塊為語音情感識別模型訓(xùn)練模塊、語音情感識別模塊、用戶個人語音數(shù)據(jù)庫構(gòu)建模塊。其中情感識別模型訓(xùn)練模塊、語音情感識別模塊是系統(tǒng)的核心內(nèi)容。這兩個模塊共同調(diào)用預(yù)處理模塊,語音在產(chǎn)生和傳播的過程中會混入噪音,在語音進行降噪后提取語音中的特征。進行模型訓(xùn)練時,將每段語音的特征值作為BP神經(jīng)網(wǎng)絡(luò)的輸入[X]向量,語音的6種離散情感值作為[Y]值訓(xùn)練模型。在訓(xùn)練模型時,會用到大量語音數(shù)據(jù),將語音數(shù)據(jù)進行批量的預(yù)處理,將預(yù)處理后的數(shù)據(jù)存儲在數(shù)據(jù)庫中,訓(xùn)練時,可以從數(shù)據(jù)庫中直接讀取特征值和標(biāo)簽。語音情感識別模塊是從前端接收語音數(shù)據(jù)后,進行語音預(yù)處理得到語音特征,將語音特征帶入模型,識別出語音的語音狀態(tài),然后將結(jié)果發(fā)送給用戶。用戶收到結(jié)果后將做出判斷,并給出自己認(rèn)為的情感狀態(tài),模塊將使用用戶的語音信息和結(jié)果寫入用戶個人語音數(shù)據(jù)庫中。
系統(tǒng)的核心業(yè)務(wù)流程有兩個:第一是語音情感識別模型創(chuàng)建,語音情感識別模型是系統(tǒng)的核心基礎(chǔ),系統(tǒng)識別的準(zhǔn)確率取決于情感識別模型,語音情感模型創(chuàng)建的流程如圖3所示。第二是用戶情感識別,情感識別是系統(tǒng)的重要應(yīng)用。用戶語音情感識別流程如圖4所示。
語音情感模型創(chuàng)建,首先選取公共語音數(shù)據(jù)庫,選取公共數(shù)據(jù)庫要注意兩點:第一根據(jù)軟件使用的用戶人群,確定語種。要選取同語種的公共數(shù)據(jù)庫。也可根據(jù)軟件使用的區(qū)域不同,選擇不同的公共數(shù)據(jù)庫。第二,情感模型可以是連續(xù)描述也可以是離散描述。每種描述又有多種類型。要根據(jù)系統(tǒng)情感模型選擇合適的數(shù)據(jù)庫。本系統(tǒng)采用離散情感標(biāo)注的中文語音公共數(shù)據(jù)作為模型訓(xùn)練源。
從數(shù)據(jù)庫中提取數(shù)據(jù)進行一系列處理后得到每段語音數(shù)據(jù)的特征和標(biāo)簽。將這些特征和標(biāo)簽存入數(shù)據(jù)庫。將所有語音特征劃分成兩部分,一部分語音的特征訓(xùn)練模型,另外一部分語音的特征測試模型。數(shù)據(jù)集的劃分方法根據(jù)你數(shù)據(jù)量的大小來確定。若有海量語音數(shù)據(jù),取2000~10000條數(shù)據(jù)作為測試集即可,每個數(shù)據(jù)集中不同標(biāo)簽的樣本要均等出現(xiàn)。若數(shù)據(jù)量較少,可以采用7∶3的比例劃分或采用交叉方法選擇[4]。
確定初始參數(shù)后,啟動神經(jīng)網(wǎng)絡(luò)算法。經(jīng)過多次迭代算法收斂或大于最大迭代次數(shù)后,得到初步的情感識別模型。將測試集的語音特征和標(biāo)簽數(shù)據(jù)帶入情感識別模型驗證準(zhǔn)確率。假設(shè)訓(xùn)練集的準(zhǔn)確率為[p1],測試集的準(zhǔn)確率為[p2]。此時會出現(xiàn)兩種情況需要調(diào)整參數(shù),第一若[p1]大于標(biāo)準(zhǔn)且[p1>p2],表明模型過度地刻畫了語音特征和情感之間的關(guān)系,該模型實際應(yīng)用能力較差。第二若[p1]不達標(biāo)準(zhǔn),該模型識別情感狀態(tài)能力較弱,為欠擬合現(xiàn)象??梢愿鶕?jù)不同的現(xiàn)象調(diào)整參數(shù)再次訓(xùn)練模型。直到滿足準(zhǔn)確率的要求,將模型存儲到數(shù)據(jù)庫,供用戶情感數(shù)據(jù)識別使用。
若在實際應(yīng)用中模型效果較好,可以用該模型支持系統(tǒng)運行,直到更新大量語音數(shù)據(jù)。若應(yīng)用效果較差,可以調(diào)整訓(xùn)練集和優(yōu)化模型訓(xùn)練算法再次訓(xùn)練模型。
用戶通過智能終端的App提交語音,在服務(wù)器上識別語音狀態(tài),將結(jié)果通過網(wǎng)絡(luò)傳輸?shù)紸pp。用戶收到結(jié)果后,可以為此次判斷評價。若識別正確,則點擊確定,若識別錯誤,用戶提交情感狀態(tài)。
用戶上傳的數(shù)據(jù)是在非絕對安靜情況下的錄音,所以語音的降噪處理十分重要。降噪處理后,提取語音特征。將特征作為輸入項帶入情感識別,得到識別結(jié)果。系統(tǒng)將此條語音數(shù)據(jù)和其包含的狀態(tài)存入用戶個人語音庫,以待以后使用。當(dāng)用戶個人語音庫積累到一定數(shù)量后就可以訓(xùn)練語音情感識別模型,此模型將用于該用戶的語音情感識別。
4 語音情感識別系統(tǒng)詳細(xì)設(shè)計
4.1 語音預(yù)處理
語音數(shù)據(jù)預(yù)處理是系統(tǒng)的重要模塊,該模塊會被語音情感識別模型訓(xùn)練模塊和用戶語音情感識別模塊調(diào)用。它很大程度上影響系統(tǒng)情感識別的準(zhǔn)確性。在本系統(tǒng)中該模塊有兩部分:語音降噪和特征處理。
系統(tǒng)語音降噪過程如圖5所示。該部分包括四步,原始的語音信號通過這四步的處理后才能準(zhǔn)確地提取語音特征。語音數(shù)據(jù)以.wav文件輸入,從文件中讀出數(shù)據(jù)按照圖6的順序執(zhí)行,最后得到一個[N×M]二維數(shù)組,其中[N]為幀的個數(shù),[M]為每個幀的采點的個數(shù),該數(shù)組可以作為下一步特征提取的輸入。
人的聲音并不是在錄音的開始的0時刻出現(xiàn)的,人說話也不是連續(xù)不斷的,中間會有停頓。端點檢測的主要目的是識別一段語音中,人聲的出現(xiàn)和結(jié)束位置??梢愿鶕?jù)端點檢測出來的開始點和結(jié)束點截取語音,提升聲音特征提取的準(zhǔn)確性,可以采用基于閾值的方法檢測端點,低于閾值是沒有聲音,高于閾值是有聲音。
聲音產(chǎn)生后,在傳輸?shù)倪^程中經(jīng)過人的口腔和嘴唇,這兩部分對聲音產(chǎn)生輻射阻抗。通過預(yù)加重,降低人體這兩部分對語音信號的影響[5-6]。預(yù)加重,就是對聲音信號進行濾波處理。濾波器的傳遞函數(shù)為[H(z)=1-μz-1],其中[μ∈0.9,1.0]。聲音經(jīng)過濾波后的公式為:[ft=x(t)-μ(t-1)]其中[μ]是經(jīng)驗值,取0.98。
語音是隨時間變化的連續(xù)量,但是在短時間內(nèi)(毫秒級) 語音的特征不會改變。為了后面的處理方便,將語音按照15ms為單元進行分割,15ms內(nèi)這一段稱為一個幀。為了讓聲音更平滑,幀與幀之間要重疊一部,這部分被稱之為幀移。假設(shè)有一段語音它時間為[T=50ms],每幀的時間間隔為[t=15ms],幀移大小[l=5ms]該段語音將會被分為5份。
將每幀數(shù)據(jù)分別進行處理時,由于幀時截取的進行傅里葉變換時會出現(xiàn)大量空白,造成能量泄露。通過加窗處理可以改善這種缺點,窗的種類很多,選擇不同窗也帶來不同處理的結(jié)果。最常使用的就是漢明窗[6-7],其公式如下:
[w(n)=0.54-0.46cos2πn/N-1,0≤n≤N0,其他]? ? ? ? ? ?(1)
將一段語音進行降噪處理,獲得[N×M]二維數(shù)組后,將此二維數(shù)組為基礎(chǔ)進行語音特征的提取,具體過程如圖6所示,若此段語音不是用戶識別語音,需要將得到的二維特征數(shù)組存入數(shù)據(jù)庫,以備語音情感識別模型訓(xùn)練算法的使用。此部分用到的方法都是庫函數(shù),按照流程圖的順序進行調(diào)用。
4.2 語音情感識別模型訓(xùn)練與應(yīng)用
本系統(tǒng)選用BP神經(jīng)網(wǎng)絡(luò)[8-10]作為模型訓(xùn)練算法,它通過訓(xùn)練集和測試集數(shù)據(jù)訓(xùn)練模型,在算法收斂后,固定各個神經(jīng)元之間的權(quán)值即可得到語音情感識別模型。要輸入的一段語音的特征值與標(biāo)簽用[(X,Y)]二元組表示,其中[X]是一個[N×M]的二維數(shù)組,[N]表示這段語音的幀的個數(shù),[M]表示特征個數(shù),該神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點個數(shù)為[N×M]。例如一段語音特征值提取為[125×39]的二維數(shù)組,那么需要4875個輸入節(jié)點。通常而言,語音的特征值是一個很大的二維數(shù)組,所以輸入節(jié)點個數(shù)較多。
隱藏層的節(jié)點個數(shù)通過參數(shù)確定。系統(tǒng)選用六個離散數(shù)值描述情感,選用[{0,1,2,3,4,5}]表示6種情感狀態(tài),所以該神經(jīng)網(wǎng)絡(luò)輸出層需要6個節(jié)點。
訓(xùn)練流程如圖7所示。首先從數(shù)據(jù)庫中提取語音特征值與標(biāo)簽。將其分成兩部分:訓(xùn)練集、測試集,六種情感的語音特征數(shù)據(jù)要等比例存在每個數(shù)據(jù)集中。然后配置神經(jīng)網(wǎng)絡(luò)的初始參數(shù),參數(shù)包括訓(xùn)練的最大迭代次數(shù)、隱藏節(jié)點數(shù)、最低準(zhǔn)確率、兩個學(xué)習(xí)率。初始參數(shù)根據(jù)算法應(yīng)用的領(lǐng)域及數(shù)據(jù)集的特點確定,是經(jīng)驗數(shù)值。當(dāng)算法收斂到一個正確率或超過最大迭代次數(shù)時我們終止訓(xùn)練,得到初始的語音情感識別模型。如果模型在訓(xùn)練集和測試集的識別正確率低于要求數(shù)值,調(diào)節(jié)參數(shù)繼續(xù)訓(xùn)練。如果模型識別正確率符合要求,就將該模型保存在數(shù)據(jù)庫中,以備識別使用。
用戶的語音情感識別過程是模型訓(xùn)練過程的簡化版本。用戶上傳語音文件后進行標(biāo)準(zhǔn)化和降噪處理,然后提出特征值得到一個[N×M]的二維數(shù)組,該二維數(shù)組是語音情感識別模型的輸入值。從數(shù)據(jù)庫中取出該模型各個節(jié)點的權(quán)重值,運行模型將特征值輸入語音情感識別模型即可得到該段語音中包含的情感狀態(tài),然后顯示到用戶的App上。
4.3 個人語音庫
個人語音庫是系統(tǒng)拓展模塊,主要收集用戶的個人語音數(shù)據(jù)。語音情感識別應(yīng)用領(lǐng)域問題之一是模型訓(xùn)練數(shù)據(jù)和模型使用的數(shù)據(jù)不一致。語音和情感是極具個人特色和地域特色,識別語音中包含的情感也極具個人和地域特色。系統(tǒng)識別的每段語音都是訓(xùn)練數(shù)據(jù)集的積累。系統(tǒng)早期使用公共數(shù)據(jù)庫訓(xùn)練模型,系統(tǒng)后期可根據(jù)用戶的個人語音庫訓(xùn)練模型。也可以根據(jù)用戶的地域不同將個人語音數(shù)據(jù)庫合并成地域語音庫,使用該數(shù)據(jù)庫訓(xùn)練的模型應(yīng)用到該地域用戶的初始情感識別。
語音庫的建立過程:系統(tǒng)將用戶長傳的語音識別出來后顯示給用戶。用戶可以根據(jù)識別出的狀態(tài)做出自己的判斷,若正確就點擊確定,若錯誤就從6個情感狀態(tài)中選擇一個點擊確定。系統(tǒng)根據(jù)用戶的反饋,系統(tǒng)可以評價模型在現(xiàn)實應(yīng)用中的識別正確率,然后將用戶的語音數(shù)據(jù)和標(biāo)簽傳入用戶專屬的語音庫中,以備以后使用。
5 總結(jié)與展望
本系統(tǒng)采用離散數(shù)據(jù)描述情感,使用MFCC特征簡化語音信息,并使用BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練情感識別模型,建立個人語音庫。語音包含文本信息和情感信息,情感是一個很復(fù)雜的感念,現(xiàn)在可以通過離散的數(shù)據(jù)或連續(xù)的數(shù)據(jù)描述情感。但是人是一個復(fù)雜的情感載體,一段語音中情感可能是多種情感狀態(tài)疊加的,單純地做離散描述不能真實地反映人的感受,若使用離散描述,可以在一段語音中劃分出主次情感。連續(xù)的描述方式更能體現(xiàn)情感的變化的規(guī)律,但是現(xiàn)在并沒有一套實用的連續(xù)描述規(guī)則。
本系統(tǒng)采用了一個經(jīng)典算法,做成獨立模塊。系統(tǒng)更新算法時,可以直接替代該模塊。情感在哪些語音特征中被表征出來并沒有正確的理論認(rèn)識,現(xiàn)在特征的選取主要依賴于經(jīng)驗。情感和特征的關(guān)系是情感識別研究領(lǐng)域一個重要的方向。
語音情感識別沒有語音文本識別發(fā)展迅速,但是語音情感識別是人工智能發(fā)展中不可替代的一環(huán),其應(yīng)用領(lǐng)域也十分廣泛,比如居家養(yǎng)老、情感陪護、機器人語音交互、娛樂、刑偵、醫(yī)療等。
參考文獻:
[1] Grimm M, Kroschel K. Evaluation of natural emotions using self assessment manikins. In: Proc. of the 2005 ASRU. Cancun, 2005: 381?385.
[2] Barpanda S S,Majhi B,Sa P K,et al.Iris feature extraction through wavelet mel-frequency cepstrum coefficients[J].Optics & Laser Technology,2019,110:13-23.
[3] 韓文靜,李海峰,阮華斌,等.語音情感識別研究進展綜述[J].軟件學(xué)報,2014,25(1):37-50.
[4] 朱龍珠,盛妍,劉鯤鵬.基于深度學(xué)習(xí)的海量語音數(shù)據(jù)識別及分類方法研究[J].電子設(shè)計工程,2021,29(9):116-120.
[5] 孫曉虎,李洪均.語音情感識別綜述[J].計算機工程與應(yīng)用,2020,56(11):1-9.
[6] 詹永照,曹鵬.語音情感特征提取和識別的研究與實現(xiàn)[J].江蘇大學(xué)學(xué)報(自然科學(xué)版),2005,26(1):72-75.
[7] 高慶吉,趙志華,徐達,等.語音情感識別研究綜述[J].智能系統(tǒng)學(xué)報,2020,15(1):1-13.
[8] 陳闖,Ryad Chellali,邢尹.改進遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的語音情感識別[J].計算機應(yīng)用研究,2019,36(2):344-346,361.
[9] Sadeghi B H M.A BP-neural network predictor model for plastic injection molding process[J].Journal of Materials Processing Technology,2000,103(3):411-416.
[10] 余華,黃程韋,金赟,等.基于粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)的語音情感識別[J].數(shù)據(jù)采集與處理,2011,26(1):57-62.
【通聯(lián)編輯:梁書】
收稿日期:2021-12-19
基金項目:本篇文章受項目支持,廣東理工學(xué)院科技項目:項目名稱:基于深度學(xué)習(xí)的語音情感識別技術(shù)研究(項目編號2019GKJZK017) ;廣東理工學(xué)院教育教學(xué)改革 ,應(yīng)用型本科高校混合式教學(xué)模式探索——以“Java 程序設(shè)計”為例(項目編號:JXGG202056)
作者簡介:鄔卓恒(1993—) ,男,山東曹縣人,計算機應(yīng)用技術(shù)碩士,廣東理工學(xué)院講師,CCF專業(yè)會員,會員編號62368M,研究方向為機器學(xué)習(xí)、數(shù)據(jù)安全;趙嘉熙(2001—) ,男,本科生,CCF學(xué)生會員NO.I7960G,研究方向為信息安全,圖像識別,深度學(xué)習(xí);時小芳(1991—) ,碩士研究生,河南濮陽人,廣東理工學(xué)院講師,主要研究方向軟件測試、大數(shù)據(jù)、商務(wù)智能等。