趙 莉 付世鳳
(湖南信息職業(yè)技術(shù)學(xué)院,湖南 長(zhǎng)沙 410083)
聲紋是攜帶語音特征信息的圖譜,具有特定性且蘊(yùn)含豐富的個(gè)人信息,因?yàn)槠渚哂袀卧祀y度高、辨識(shí)性強(qiáng)等特點(diǎn),所以常用于身份識(shí)別領(lǐng)域[1]。隨著人工智能等技術(shù)的發(fā)展,聲紋識(shí)別的準(zhǔn)確性、及時(shí)性得到提高,聲紋識(shí)別技術(shù)廣泛應(yīng)用于軍事、金融等領(lǐng)域。語音作為日常交流的主要媒介,可以傳達(dá)思想,還可以表達(dá)說話人的情感狀態(tài),其中傳達(dá)的語義內(nèi)容、說話音量的高低都反映人們的情緒。語音情感識(shí)別就是對(duì)隱藏在語音中的信息進(jìn)行分析和挖掘,識(shí)別其情感趨向(高興、傷悲)或者得出其觀點(diǎn)是“贊同”還是“反對(duì)”,甚至還可以得出情感隨時(shí)間的演化規(guī)律,情感識(shí)別的結(jié)果可以作為重要的決策依據(jù)。例如,在醫(yī)療保健系統(tǒng)中,可以將其作為心理分析的工具;在人機(jī)交互系統(tǒng)中,可以以此為依據(jù)精確把握用戶需求;在教育行業(yè),可以根據(jù)情感識(shí)別結(jié)果對(duì)青少年的心理問題進(jìn)行干預(yù)。綜上所述,語音情感識(shí)別具有廣泛的應(yīng)用前景[2]。
語音情感識(shí)別的目標(biāo)是從語音中識(shí)別人的情感狀態(tài),需要從語音信號(hào)中提取語音特征,從而對(duì)語音情感分類模型進(jìn)行訓(xùn)練,分類模型訓(xùn)練好后就可以識(shí)別語音的情感類別,語音情感識(shí)別主要包括語音特征提取、分類模型訓(xùn)練以及語音情感類別預(yù)測(cè)3個(gè)階段。
首先,語音特征提取的起點(diǎn)是采集樣本音頻,其目的是將原始的語音模擬信號(hào)轉(zhuǎn)化為語音信號(hào)數(shù)字形式。其次,經(jīng)過分幀、加窗以及短時(shí)傅里葉變換等標(biāo)準(zhǔn)化處理后,得到高/中/低頻幅度相當(dāng)?shù)恼Z音幀序列。再次,標(biāo)注預(yù)先定義好的情緒類別標(biāo)簽,并提取MFCC特征數(shù)學(xué)矩陣[3],將數(shù)學(xué)矩陣與情緒類別標(biāo)簽綁定形成數(shù)據(jù)集合,再將集合轉(zhuǎn)換為特征數(shù)學(xué)矩陣,這樣就可以從特征數(shù)學(xué)矩陣中逐一讀取行向量作為語音情感分類模型的輸入,從而對(duì)分類模型進(jìn)行訓(xùn)練。最后,為了對(duì)訓(xùn)練好的分類模型進(jìn)行評(píng)估驗(yàn)證,還要按一定比例將數(shù)學(xué)矩陣劃分為訓(xùn)練集和驗(yàn)證集(訓(xùn)練集模型訓(xùn)練,驗(yàn)證集模型評(píng)估),具體過程如圖1所示。
圖1 語音特征提取過程
語音信號(hào)屬于連續(xù)的模擬信號(hào),需要對(duì)原始信號(hào)進(jìn)行采樣,采樣原理如下:按照一定頻率對(duì)連續(xù)模擬量進(jìn)行電壓數(shù)值抽取,抽取頻率也就是采樣頻率,根據(jù)聲波波形對(duì)采樣所得的電壓波形進(jìn)行數(shù)字化處理,將離散數(shù)值分級(jí)量化為對(duì)應(yīng)的數(shù)字信號(hào),由于獲取的語音信號(hào)通常都有噪聲,因此還需要通過濾波處理來過濾噪聲,這樣語音信號(hào)就轉(zhuǎn)化為時(shí)間軸上離散、幅度連續(xù)的無噪信號(hào)[3]。
語音信號(hào)在一個(gè)長(zhǎng)的時(shí)間段內(nèi)是變化的,但是在一個(gè)極短的時(shí)間段,其是接近穩(wěn)定不變的,可以將語音信號(hào)分割成若干幀,每幀的時(shí)間長(zhǎng)度約為20 ms~30 ms,這樣每幀的語音信號(hào)都是穩(wěn)定的,為了讓處理后的語音信號(hào)與實(shí)際語音信號(hào)接近,還需要加上幀移,分幀后語音信號(hào)變成有限信號(hào),語音信號(hào)音頻譜波形會(huì)隨時(shí)間而變化,語音信號(hào)特征在較短的時(shí)間內(nèi)不會(huì)發(fā)生變化,但是在較長(zhǎng)時(shí)段內(nèi)語音信號(hào)特征是會(huì)發(fā)生變化的,因此需要在相鄰兩幀之間預(yù)留重疊部分,以保證音頻譜波形能夠平滑過渡,分幀后還要通過添加1個(gè)窗函數(shù)來進(jìn)行加窗處理。加窗使用的窗函數(shù)一般有矩形窗以及漢明窗,矩形窗函數(shù)、漢明窗函數(shù)如公式(1)、公式(2)所示。
式中:w(n)為加窗函數(shù);M為矩形窗長(zhǎng)度;n為0~M的整數(shù);N為漢明窗長(zhǎng)度,也是傅里葉變換長(zhǎng)度。
卷積神經(jīng)網(wǎng)絡(luò)屬于前饋神經(jīng)網(wǎng)絡(luò),是一種經(jīng)典的深度學(xué)習(xí)架構(gòu),一個(gè)卷積神經(jīng)網(wǎng)絡(luò)通常包括輸入層、中間層(卷積層、采樣層和全連接層)和輸出層。卷積層負(fù)責(zé)特征提取,采樣層負(fù)責(zé)特征選擇,全連接層負(fù)責(zé)根據(jù)特征進(jìn)行語音情感分類。對(duì)輸入向量和卷積層中的卷積核進(jìn)行卷積計(jì)算,完成特征提取后,通過下采樣函數(shù)在采樣層進(jìn)行降維運(yùn)算,以完成特征選擇任務(wù),最后在全連接層將前面提取到的所有特征矩陣轉(zhuǎn)化為一維的特征大向量,全連接層在卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的最后,并對(duì)語音情感進(jìn)行分類。一般全連接層的參數(shù)是最多的,中間層的每層都由二維平面組成,每個(gè)二維平面都包括若干個(gè)神經(jīng)元節(jié)點(diǎn)[3],采樣神經(jīng)元系統(tǒng)大部分的計(jì)算量都集中在卷積層,是整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中最重要的部分,通過卷積計(jì)算可以提取各種情感語譜圖中的聲紋特征(為后續(xù)的分類處理奠定基礎(chǔ))。卷積神經(jīng)網(wǎng)絡(luò)模型的具體結(jié)構(gòu)如圖2所示。
圖2 卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練屬于有監(jiān)督學(xué)習(xí),它的工作原理與普通神經(jīng)網(wǎng)絡(luò)類似,是通過學(xué)習(xí)訓(xùn)練集中輸入向量和輸出向量之間的映射關(guān)系得到端到端的分類模型,模型的訓(xùn)練可細(xì)分為前向傳播階段和反向傳播階段[4]。
前向傳播階段從訓(xùn)練集中逐一選取樣本并輸入網(wǎng)絡(luò),在輸入層經(jīng)過逐級(jí)變換傳至輸出層,從而得到相應(yīng)的實(shí)際輸出[4]。
對(duì)卷積層來說,一個(gè)卷積核(濾波器)與前一層的特征數(shù)據(jù)進(jìn)行卷積計(jì)算,卷積計(jì)算的形式如公式(3)、公式(4)所示。
對(duì)采樣層來說,對(duì)上一層卷積操作得到的特征圖進(jìn)行采樣降維處理(減少特征的維度),一般會(huì)在不影響訓(xùn)練效果的情況下盡可能減少網(wǎng)絡(luò)訓(xùn)練過程中的計(jì)算量,從而達(dá)到提高訓(xùn)練速度的目的,也在一定程度上避免了訓(xùn)練過程中的過擬合現(xiàn)象,具體計(jì)算如公式(5)所示。
對(duì)全連接層(第l層)來說,其輸入為第l-1的輸出,經(jīng)過激活函數(shù)處理后,得到的輸出如公式(6)所示。
式中:xl為全連接層輸出;(σ)為全連接層的激活函數(shù);wl為全連接層權(quán)值;bl為全連接層偏置;xl-1為第l-1層的輸出。
對(duì)輸出層(第L層)來說,其輸入為第L-1層的輸出,經(jīng)過激活函數(shù)Softmax處理后,得到的輸出如公式(7)所示。
反向傳播階段的關(guān)鍵是根據(jù)預(yù)測(cè)輸出和實(shí)際輸出之間誤差來調(diào)整各個(gè)神經(jīng)元權(quán)值和偏置,新的值不斷迭代舊的值,直到迭代后某次誤差損失足夠小就可以停止,具體思路如下:1) 初始化各神經(jīng)元權(quán)值和偏置。2) 讀取訓(xùn)練集樣本中的輸入向量和目標(biāo)輸出向量。3) 計(jì)算中間層和輸出層神經(jīng)元的輸出。4) 計(jì)算目標(biāo)輸出和實(shí)際輸出的偏差e。5)判定偏差e是否小于閾值。6) 判定結(jié)果為否,進(jìn)入步驟七,判定結(jié)果為是,結(jié)束訓(xùn)練。7) 計(jì)算各神經(jīng)元誤差。8) 計(jì)算誤差敏感度。9) 更新權(quán)值和偏置,回到步驟三。具體過程如圖3所示。
圖3 反向傳播階段權(quán)值和偏置更新過程
各個(gè)神經(jīng)元權(quán)值和偏置修正的變化率都是不同的,為了方便計(jì)算和理解,可以定義一個(gè)中間項(xiàng)(誤差敏感度δ),也是反向傳播反回神經(jīng)元的靈敏度,可以反映每個(gè)神經(jīng)元的相對(duì)基的變化率,輸出層(第L層)的神經(jīng)元的誤差敏感度如公式(8)所示。
式中:δL為輸出層的誤差敏感度;f'為激勵(lì)函數(shù)的導(dǎo)函數(shù)的值;uL為輸出層經(jīng)過線性處理后的結(jié)果;y為輸出層實(shí)際輸出;o為輸出層的預(yù)測(cè)輸出。
通過求導(dǎo)可以得到其他各層的誤差敏感度,利用梯度下降方法對(duì)權(quán)值和偏置進(jìn)行修正[4],可以使用損失函數(shù)衡量誤差,將損失函數(shù)記為J,具體計(jì)算如公式(9)、公式(10)所示。
式中:bl為第l層偏置;η為學(xué)習(xí)率;?b為偏置的更新值;為損失函數(shù)對(duì)偏置求偏導(dǎo);wl為第l層的權(quán)值;η為學(xué)習(xí)率;?w為權(quán)值的更新值;為損失函數(shù)對(duì)權(quán)值求偏導(dǎo)。
全連接層的反向求導(dǎo)過程如公式(11)、公式(12)所示。
當(dāng)接采樣層的下一層為卷積層時(shí),該采樣層的誤差敏感度如公式(13)所示。
當(dāng)接卷積層的下一層為采樣層時(shí),該卷積層的誤差敏感度如公式(14)所示。
在卷積神經(jīng)網(wǎng)絡(luò)的最后一層,通常使用Softmax分類器對(duì)語音情緒進(jìn)行分類。具體可以通過Softmax函數(shù)求解并統(tǒng)計(jì)所有向量x屬于類別j的條件概率p(y=j∣x),其中1≤j≤N條如果j為1~N的整數(shù)k時(shí)條件概率最大,即認(rèn)為向量x為分類為類別k,這樣就將分類問題轉(zhuǎn)化為條件概率問題,如公式(15)所示。
式中:p(y=j|x)為樣本向量x屬于第j個(gè)類別的概率;K為線性函數(shù)的個(gè)數(shù);wj為類別j的權(quán)值。
在Tensorflow框架中對(duì)多個(gè)MFCC特征矩陣和音頻樣本進(jìn)行訓(xùn)練。試驗(yàn)過程如下:1) 使用Python讀取樣本音頻文件,調(diào)用FFmpeg、liborosa等工具包中的相關(guān)方法讀取音頻文件的MFCC特征矩陣以及音頻文件的標(biāo)注信息,并將讀取的數(shù)據(jù)存入數(shù)據(jù)集。2) 打亂數(shù)據(jù)集,這樣可以讓數(shù)據(jù)集中的數(shù)據(jù)隨機(jī)排列,防止因數(shù)據(jù)分布不均勻而對(duì)結(jié)果造成不良影響,按照7∶3的比例,將數(shù)據(jù)集分為訓(xùn)練集和驗(yàn)證集。3) 增加輸入層,并定義輸入層的數(shù)據(jù)的維度。4) 增加若干中間層(包括卷積層、采樣層等),并指定中間層激活函數(shù)(中間層激活函數(shù)一般使用ReLU等),指定中間層Dropout參數(shù)(防止過擬合),中間層的層數(shù)根據(jù)需要調(diào)整。5) 增加平化層。6) 增加全連接層,并在全連接層定義l1、l2等正則項(xiàng)參數(shù),防止過擬合。增加全連接層的激活函數(shù)(一般使用Softmax)。7) 定義收斂方法以及收斂方法所含參數(shù)(收斂方法主要包括RMSProp以及Adam等,收斂方法所含參數(shù)主要包括學(xué)習(xí)率)。8) 定義損失函數(shù)(主要包括categorical_crossentropy、binary_crossentropy等)。9) 配置其他次要參數(shù),并按照指定輪次開始訓(xùn)練。在訓(xùn)練過程中,Tensorflow框架會(huì)在每個(gè)輪次用驗(yàn)證集去驗(yàn)證并記錄相關(guān)數(shù)據(jù)。10) 訓(xùn)練完成,生成模型文件以及相關(guān)中間數(shù)據(jù)。讀取中間數(shù)據(jù)并評(píng)估模型是否符合要求、是否發(fā)生過擬合,網(wǎng)絡(luò)設(shè)置是否不當(dāng),數(shù)據(jù)集是否有問題。如果模型不符合要求,就修改上述訓(xùn)練過程中的激活函數(shù)、訓(xùn)練輪次等參數(shù)和網(wǎng)絡(luò)配置(例如中間層層數(shù)),重新訓(xùn)練,直到產(chǎn)生符合提交件語音情緒分類模型為止。具體結(jié)果見表1。
表1 神經(jīng)網(wǎng)絡(luò)模型評(píng)估結(jié)果
該文采用Tensorflow框架進(jìn)行訓(xùn)練,從而得到音頻輔助識(shí)別預(yù)測(cè)模型,基于所述情緒分析模型通過程序腳本自動(dòng)處理加人工輔助處理的方式對(duì)測(cè)試集上的樣本進(jìn)行評(píng)估驗(yàn)證,得到所述測(cè)試樣本的分析結(jié)果,比較所述分析結(jié)果和所述測(cè)試樣本的情緒類別標(biāo)簽是否一致,如果不一致,那么判斷所述測(cè)試樣本數(shù)據(jù)和對(duì)應(yīng)的情緒類別標(biāo)簽是否準(zhǔn)確,如果所述測(cè)試樣本數(shù)據(jù)不準(zhǔn)確,就舍棄所述測(cè)試樣本;如果所述測(cè)試樣本對(duì)應(yīng)的情緒類別標(biāo)簽不準(zhǔn)確,就重新標(biāo)注標(biāo)簽,并將重新標(biāo)注標(biāo)簽后的測(cè)試樣本放入訓(xùn)練集。在訓(xùn)練過程中不斷調(diào)整Tensorflow訓(xùn)練參數(shù)(包括激活函數(shù)、中間層層數(shù)以及訓(xùn)練輪次等),重新對(duì)調(diào)整后的訓(xùn)練集和參數(shù)進(jìn)行訓(xùn)練,直到測(cè)試集上樣本的準(zhǔn)確率滿足設(shè)定閾值。驗(yàn)證發(fā)現(xiàn),當(dāng)訓(xùn)練輪次為1000輪、中間層層數(shù)為6層且激活函數(shù)選擇ELU 時(shí),判定準(zhǔn)確率較高。