2
(1.江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122; 2.江南大學(xué) 輕工過程先進(jìn)控制教育部重點實驗室,江蘇 無錫 214122)
哭聲是嬰兒與外界溝通的信號,通常被嬰兒用于表達(dá)一定的需求。嬰兒哭聲識別的常見方法是先對哭聲信號進(jìn)行端點檢測和預(yù)處理,然后從預(yù)處理后的哭聲信號中提取特征參數(shù)序列,特征參數(shù)有Mel頻率倒譜系數(shù)(Mel Frequency Cepstrum Coefficient,MFCC),線性預(yù)測倒譜系數(shù)(Linear Prediction Cepstrum Coefficients,LPCC)[1]等,最后從特征序列中提取模板序列,并采用匹配算法進(jìn)行判斷。匹配算法有動態(tài)時間規(guī)整(Dynamic Time Warping,DTW)、隱馬爾可夫模型[2](Hidden Markov Model,HMM)等。
在文獻(xiàn)[3]中,作者使用MFCC參數(shù)作為嬰兒哭聲的特征,并使用DTW匹配算法對嬰兒的哭聲進(jìn)行識別。文獻(xiàn)[4]中,作者使用線性預(yù)測系數(shù)(LPC)作為特征,并且使用DTW匹配算法進(jìn)行識別。文獻(xiàn)[3]和文獻(xiàn)[4]的嬰兒哭聲識別方案在理想情況下均有較好的正確率。但在實際使用中,往往會存在環(huán)境噪聲,環(huán)境噪聲會影響算法端點檢測和特征提取的準(zhǔn)確性,影響嬰兒哭聲識別準(zhǔn)確率;此外每個嬰兒存在個體差異,他們的基音頻率不盡相同,所以哭聲的頻率分布也不同,從而導(dǎo)致識別算法在不同個體之間效果不同,算法魯棒性下降。因此,如何獲得一個實時性好且在噪聲背景和不同嬰兒個體之間也有較好的魯棒性的嬰兒哭聲識別算法則成為了哭聲識別的一個新問題。
針對噪聲環(huán)境下嬰兒哭聲識別魯棒性不足的問題,文獻(xiàn)中給出了很多方法,如能量譜熵端點檢測[5]、譜減法、倒譜均值歸一化(Cepstrum Mean Normalization,CMN)[6]和VTS特征補(bǔ)償?shù)取τ诓煌瑐€體基音不同的問題,文獻(xiàn)[7]通過重新設(shè)置濾波器的各個帶寬提取人為因素倒譜系數(shù)(Human Factor Cepstral Coefficients,HFCC)來解決這一問題。文獻(xiàn)[8]提出了自適應(yīng)特征參數(shù)AMFCC(Autocorrelation MFCC)來優(yōu)化這一問題。在文獻(xiàn)[9]中,提出了多種特征參數(shù)結(jié)合的方法,從不同特征參數(shù)的不同維度中組選出最優(yōu)特征參數(shù)組合,再使用深度神經(jīng)網(wǎng)絡(luò)進(jìn)行分類,從而提高參數(shù)在不同個體之間的魯棒性。
針對上述的兩個問題,本文在傳統(tǒng)方法上提出如下兩個創(chuàng)新:首先從端點檢測出發(fā),使用基于頻域的子帶譜熵法進(jìn)行端點檢測,增加端點檢測在噪聲下的魯棒性,從而提升哭聲識別算法的準(zhǔn)確性;此外在特征參數(shù)的提取上選擇了去除基音干擾的平滑Mel頻率倒譜系數(shù)SMFCC (Smoothing MFCC),該特征可以除去不同嬰兒基音頻率不同這一因素的干擾,提高了識別算法在不同嬰兒之間的魯棒性;最后使用DTW算法進(jìn)行匹配,得到了一個在噪聲和不同嬰兒情況下仍有較好魯棒性的實時嬰兒哭聲識別新方案。
嬰兒哭聲識別方案由預(yù)處理、特征提取、訓(xùn)練模板、模式匹配4部分組成。在預(yù)處理階段,主要對哭聲信號進(jìn)行端點檢測、預(yù)加重、加窗、分幀傅里葉變換。本文在端點檢測中使用子帶譜熵法端點檢測以增加端點檢測在噪聲下的魯棒性。在窗函數(shù)上選擇動態(tài)效果保留更好的漢明窗,在分幀上選擇了交疊分段法,幀移選擇0.5倍幀長。
特征提取的目的是提取出哭聲的特征參數(shù)序列,考慮不同嬰兒基音頻率不同的問題,本文采用SMFCC作為特征參數(shù)。其提取方法如下:對預(yù)處理后的信號用paul譜包絡(luò)估計算法得到譜包絡(luò);用包絡(luò)信號代替原信號通過Mel濾波器并取對數(shù)能量譜;最后通過DCT變換得到特征參數(shù)。
因為哭聲信號在時間尺度上不一致,因此選用動態(tài)時間規(guī)整(DTW)來計算特征序列之間的距離。在給定的訓(xùn)練樣本中,通過計算選出與其他序列距離之和最小的km個特征參數(shù)序列作為模板。對測試的嬰兒哭聲特征參數(shù)序列,計算其與km個特征序列模板的平均距離,若該值小于閾值,則判斷該信號為嬰兒哭聲信號。
端點檢測的目的是獲得嬰兒哭聲信號的有效開始端點和結(jié)束端點,傳統(tǒng)嬰兒哭聲識別方案的端點檢測多采用時域方法,如短時平均過零率判別,雙門限法。但是噪聲信號在時域中不容易被單獨剝離出來分析,導(dǎo)致時域方法在端點檢測中受噪聲的影響較大。所以本文使用子帶譜熵端點檢測法來進(jìn)行端點檢測方法[10],該方法在噪聲下有較好的魯棒性。
子帶譜熵端點檢測法首先把嬰兒哭聲信號分幀,假設(shè)第m幀的時域哭聲信號為x(n,m),計算該幀哭聲信號在頻率為k頻段時的頻率特性X(k,m):
(1)
此時第m幀的功率譜總能量E(m)為
(2)
在一幀哭聲信號中,該幀信號在某一頻段上的分布特性可由該頻段的頻譜分量在總能量中所占的比例大小反映。因此,第m幀哭聲信號在k頻段的密度函數(shù)P(k,m)就可以表示為
(3)
由于嬰兒哭聲信號的能量大多集中在500~4500 Hz的頻率范圍內(nèi),而噪聲信號由于均勻分布在整個頻譜中,所以把500~4500 Hz頻率范圍外的頻段密度函數(shù)p(k,m)設(shè)置為0。在該信號頻譜范圍內(nèi)計算第m幀的譜熵值H(m)為
(4)
根據(jù)譜熵做閾值判斷已經(jīng)可以進(jìn)行端點檢測,但此時其魯棒性容易受譜點污染影響,因此繼續(xù)把一個幀分成多個子帶,再對子帶求譜熵。子帶的能量計算如下:
(5)
式中,Nb為每一幀的子帶個數(shù);l為第l個子帶;Eb(l,m)為第m幀中第l個子帶的能量。在每一幀中,通過引入一組權(quán)值系數(shù)w(l,m)重新計算每一幀的譜熵值以彌補(bǔ)譜熵的自然特性:
(6)
最后,設(shè)定閾值Ts來判斷每一幀的譜熵值是否達(dá)到閾值,從而確定該幀是否為有效哭聲幀,得到嬰兒哭聲信號的有效開始端點和結(jié)束端點。閾值Ts的確定如式(7)所示:
Ts=μs+αs·δs
(7)
式中,μs和δs分別為環(huán)境噪聲的譜熵均值和譜熵標(biāo)準(zhǔn)差;αs為一個常數(shù),可以根據(jù)具體情況調(diào)整。若αs過大,會導(dǎo)致部分嬰兒哭聲幀被舍棄;若αs過小,會導(dǎo)致部分非嬰兒哭聲幀被加入。經(jīng)過多次實驗比較,本文實驗αs的值設(shè)置為2。
嬰兒的哭聲信號是一個非穩(wěn)態(tài)信號,但在短時內(nèi)可以認(rèn)為是一個穩(wěn)態(tài)的過程。因此,可以對嬰兒哭聲信號分幀進(jìn)行分析。連續(xù)分段法和交疊分段法是分幀中常用的方法,交疊分段法在幀與幀之間有過渡,動態(tài)特性保留更好。因此采用交疊分段的方法,并在每一幀之間保留50%幀移。
分幀過程通過窗函數(shù)實現(xiàn),即使用一個窗函數(shù)平滑地在嬰兒啼哭聲的信號上滑動??蘼曅盘柺且粋€連續(xù)信號,而漢明窗在動態(tài)特性的保留上效果較好[11],且不存在頻率泄漏。故使用漢明窗,其頻域特性如式(8)所示:
(8)
對加窗后的每一幀的哭聲信號進(jìn)行快速傅里葉變換,得到原始哭聲信號每一幀的頻率特性。此外,由于嬰兒發(fā)聲系統(tǒng)的特點,哭聲在出口腔前會受到口鼻等輻射的影響,從而高頻成分會受到抑制,因此需要對嬰兒的哭聲信號進(jìn)行預(yù)加重,給信號通過一個濾波器,從而讓它的高頻信號加強(qiáng),該過程如式(9)所示。其中a的取值在0.9~1.0之間,通常取0.97。
B(z)=1-az-1
(9)
MFCC參數(shù)是哭聲識別中常用的參數(shù),它利用了人耳感知的特殊性,目前已經(jīng)得到廣泛的使用。但是MFCC參數(shù)沒有考慮不同嬰兒之間的基音頻率差異,嬰兒的哭聲信號由濁音信號和清音信號組成,哭聲能量主要集中在濁音部分,濁音能量主要集中在諧波,諧波頻率與嬰兒的基音頻率密切相關(guān)??蘼曅盘柕姆茸V可以表示為基音頻率的各次諧波對譜包絡(luò)的采樣。特征參數(shù)的提取方案需要在不同嬰兒之間具有穩(wěn)定性,因此本文使用在MFCC參數(shù)基礎(chǔ)上優(yōu)化后的SMFCC參數(shù)[12]作為特征參數(shù),其提取流程如圖1所示。
圖1 SMFCC特征參數(shù)的提取示意圖
SMFCC的提取流程與MFCC的不同之處在于沒有把預(yù)處理后的哭聲信號直接通過Mel濾波器組,而是先從其濁音幀中估計哭聲的基音頻率,然后通過paul譜包絡(luò)估計算法[13](Spectral Envelope Estimation Vocoder,SEEVOC)對哭聲信號的頻率幅度譜進(jìn)行內(nèi)插得到包絡(luò),并用包絡(luò)信號代替原信號,進(jìn)入Mel濾波器組并進(jìn)行后續(xù)處理。
(10)
圖2所示是基音頻率為465.4 Hz的某一嬰兒哭聲濁音幀的對數(shù)幅度譜和其經(jīng)過SEEVOC算法后的譜包絡(luò)。幅度譜中各個峰值所在的頻率即各次諧波的頻率。由圖可知,即使在頻率很接近的情況,也很有可能由于某一頻率是否在諧波頻率的原因?qū)е履骋活l率上的幅度值變化很大,從而導(dǎo)致不同基音頻率的個體哭聲特征參數(shù)提取有所差異。但是通過SEEVOC譜包絡(luò)平滑后可以明顯減小由于基音頻率引起的某一頻率的幅度值變化。
圖2 基音頻率為465.4 Hz的嬰兒哭聲幀的對數(shù)幅度譜及其SEEVOC算法后的譜包絡(luò)
Mel濾波器組是一個由一系列三角形序列濾波器組成的濾波器組,其頻率特性如圖3所示。Mel濾波器組中每一個濾波器的兩個截止頻率分別是另兩個濾波器頻率的中心。且在頻率越高的地方頻帶越寬,而在頻率低的地方其帶寬較窄。該濾波器可以對嬰兒的哭聲信號進(jìn)行平滑化,凸顯嬰兒哭聲信號的特征(其中不同顏色的頻率譜表示不同中心頻率的三角形濾波器)。
圖3 Mel濾波器組的頻率特性圖
將譜包絡(luò)平滑后的哭聲信號通過該濾波器并取對數(shù)能量譜。最后通過DCT離散余弦變換得到SMFCC參數(shù):若pj表示經(jīng)過濾波器后的第j幀信號的對數(shù)能量譜,則某一幀的第i維SMFCC參數(shù)Ci為
(11)
嬰兒哭聲的時長是未知的,特征參數(shù)序列長短也是未知的,因此使用DTW算法作為哭聲特征序列模板匹配算法。
DTW算法是一種動態(tài)規(guī)劃算法,對于兩個嬰兒哭聲的特征值序列:q1,q2,…,qn和c1,c2,…,cm,其中qi∈RM,(i=1,2,…,n),cj∈RM,(j=1,2,…,m)。定義向量間的距離為
D(i,j)=‖qi-cj‖2
(12)
定義一個m×n大小的G矩陣,其中每一個元素為到當(dāng)前為止兩個序列之間的距離。然后通過公式(13)遞推得到G(n,m)的值,該值即兩個序列之間的距離。
(13)
實驗樣本數(shù)據(jù)庫由兩個數(shù)據(jù)集組成,分別是嬰兒哭聲數(shù)據(jù)集和干擾聲音數(shù)據(jù)集。樣本數(shù)據(jù)來源為公共網(wǎng)站和donate-a-cry corpus嬰兒哭聲數(shù)據(jù)庫。干擾聲音的選擇考慮實際場景中可能出現(xiàn)的聲音,包括說話聲、敲門聲、電視聲音等,所有樣本的采樣頻率為44.1 kHz,每段樣本時長為2 s,其中嬰兒哭聲樣本男女各56份,包括不同年齡的嬰兒,干擾聲音樣本共112份,包括不同種類的干擾聲音。
在不同噪聲背景下,對嬰兒哭聲樣本進(jìn)行子帶譜熵法端點檢測,噪聲選用了不同方差的高斯白噪聲,同時使用基于時域的短時平均過零率法進(jìn)行比較。
圖4是同一哭聲樣本在均值為0、方差為0.0001的高斯白噪聲下的兩種方案的端點檢測結(jié)果。其中圖中的豎線表示端點檢測的結(jié)果,哭聲信號起始點為4132,結(jié)束點為27780。
圖4 均值為0、方差為0.0001的白噪聲下嬰兒哭聲的兩種端點檢測結(jié)果
定義α為端點檢測起始端點與實際哭聲開始點差值的絕對值,β為端點檢測結(jié)束端點與實際哭聲結(jié)束點差值的絕對值,λ為實際嬰兒哭聲采樣點長度,則δ=(α+β)/λ的值可以用來綜合衡量端點檢測的偏移程度。其值越小,說明端點檢測的準(zhǔn)確率越高。
在圖4中,短時平均過零率在起始端點的檢測效果較好,但子帶譜熵端點檢測法在結(jié)束端點的檢測效果較好。綜合考慮開始端點和結(jié)束端點,兩種方法的δ分別為0.111和0.262,說明子帶譜熵法相比于短時平均過零率有更好的抗噪聲性能。
表1給出了不同噪聲下兩種方案的端點檢測相對偏移情況δ??梢钥闯鲎訋ёV熵端點檢測在給定的不同噪聲環(huán)境下δ均小于0.15,其抗噪性能較好。
表1 兩種端點檢測方法在均值為0不同方差的高斯白噪聲下的端點檢測δ情況
設(shè)定兩個哭聲樣本的基音頻率分別為465.4 Hz和541.7 Hz,每一幀的幀長選用1024個采樣點,每一幀信號的MFCC和SMFCC參數(shù)均選擇12維。圖5是對兩個不同哭聲樣本的某一濁音幀同時提取的MFCC參數(shù)和SMFCC參數(shù)的12維數(shù)據(jù)。在第4,5,7,10,11維中,MFCC參數(shù)在兩個樣本之間的參數(shù)差值的絕對值大于SMFCC參數(shù)在兩個樣本之間的參數(shù)差值的絕對值。在第1,2,3,6,8,9,12的維度中,MFCC參數(shù)在兩個樣本之間的參數(shù)差值的絕對值基本等于SMFCC參數(shù)在兩個樣本之間的參數(shù)差值的絕對值。可以看出SMFCC參數(shù)對于不同基音頻率的嬰兒哭聲樣本有更好的穩(wěn)定性。
圖5 不同基音頻率的嬰兒哭聲樣本幀的MFCC參數(shù)和SMFCC參數(shù)
圖6是某一嬰兒哭聲樣本SMFCC參數(shù)1維~3維的數(shù)值,圖中的豎線是端點檢測的結(jié)果,兩條豎線之間是有嬰兒哭聲的信號幀,兩側(cè)是環(huán)境信號幀。
從圖6中可以看出,在哭聲信號幀和環(huán)境信號幀上,SMFCC參數(shù)的分布特性有很大差異。在樣本第1維中,哭聲幀的SMFCC參數(shù)多分布在15左右,而環(huán)境幀的參數(shù)多分布在-15左右;同樣,第2維、第3維也可以看出SMFCC參數(shù)在哭聲幀與環(huán)境幀中分布特性有所差異。所以使用SMFCC參數(shù)能較好地把嬰兒哭聲和環(huán)境聲音分離。
嬰兒哭聲識別正確率由對正確樣本的接受次數(shù)和對非正確樣本的拒絕次數(shù)之和除以兩者樣本總數(shù)得到。本文使用樣本數(shù)據(jù)庫中56段時長約為1 s的嬰兒哭聲做為訓(xùn)練樣本(女嬰兒與男嬰兒哭聲樣本各28個)。用DTW算法計算距離。用樣本數(shù)據(jù)庫中另外56段嬰兒哭聲和56段干擾聲音作為測試,計算識別正確率。
判別嬰兒哭聲即判斷當(dāng)前需要識別的特征序列與模板特征序列之間的平均距離是否小于閾值t,判別依據(jù)如下式:
(14)
式中,km為嬰兒哭聲模板數(shù),本文選用km=3;y為當(dāng)前嬰兒哭聲的SMFCC特征序列;ui為第i個模板的SMFCC特征序列;t為閾值,本文選用當(dāng)前模板與其他訓(xùn)練樣本平均距離的兩倍,dtw(y,ui)即第i個模板的特征序列與當(dāng)前需識別的特征序列通過動態(tài)時間規(guī)整后計算的距離。若式(14)成立,則判斷為哭聲樣本。
在沒有噪聲的環(huán)境中,當(dāng)SMFCC參數(shù)選擇不同維度時,嬰兒哭聲識別的準(zhǔn)確率如表2所示??梢钥闯觯?2維的SMFCC參數(shù)有較高的準(zhǔn)確率,故選擇12位的SMFCC參數(shù)作為哭聲的特征。
表2 不同維度SMFCC參數(shù)下嬰兒哭聲識別的準(zhǔn)確率
在此基礎(chǔ)上,改變環(huán)境噪聲,在均值為0、不同方差的白噪聲環(huán)境下計算正確率,并與MFCC加短時平均過零率的方法進(jìn)行比較,匹配算法使用的均為DTW。實驗結(jié)果如表3所示。其中TP(True Positive)表示該方法在嬰兒哭聲測試樣本中判斷正確的數(shù)量,TN(True Negative)表示該方法在干擾樣本中判斷正確的數(shù)量。
表3 不同噪聲情況不同方法的正確率
由表3可以看出,在無噪聲下,本文方法的識別正確率可達(dá)83.93%,在噪聲環(huán)境的干擾下,該算法仍有較高的正確率。相比之下,MFCC加短時平均過零率的嬰兒哭聲識別方案更易受噪聲的影響,且準(zhǔn)確率低于本文方法。
本文針對嬰兒哭聲識別方法在噪聲環(huán)境下和不同嬰兒間魯棒性不夠的問題,把頻域端點檢測中的子帶譜熵法應(yīng)用到嬰兒哭聲的端點檢測中,使其在有噪聲的情況下端點檢測準(zhǔn)確率有很好的提升,從而提高嬰兒哭聲識別在噪聲下的魯棒性。除此之外,本文引入SMFCC參數(shù)用于解決不同嬰兒基音不同的問題,最后使用DTW算法進(jìn)行模板訓(xùn)練并識別匹配,經(jīng)實驗,該方法獲得了較好的效果,噪聲環(huán)境下嬰兒哭聲識別正確率達(dá)到72%以上,無噪聲環(huán)境下達(dá)到83%以上。