李 震
(西安工業(yè)大學(xué),西安 710021)
神經(jīng)網(wǎng)絡(luò)也稱人工神經(jīng)網(wǎng)絡(luò),是上世紀(jì)80年代興起的人工智能領(lǐng)域的研究熱點。它是以模擬生物神經(jīng)網(wǎng)絡(luò)進行信息處理得到的數(shù)學(xué)模型。神經(jīng)網(wǎng)絡(luò)的特點是并行分布式處理數(shù)據(jù),非線性處理,擁有自學(xué)能力且大多數(shù)神經(jīng)網(wǎng)絡(luò)可以硬件實現(xiàn),這就使得神經(jīng)網(wǎng)絡(luò)擁有更快的速度。由于神經(jīng)網(wǎng)絡(luò)算法的飛速發(fā)展,其應(yīng)用也越來越廣泛,比如圖像處理,語音識別領(lǐng)域,實時語言翻譯,等。本文著重研究分析神經(jīng)網(wǎng)絡(luò)在語音端點檢測(voice activity detection)方面的應(yīng)用。神經(jīng)網(wǎng)絡(luò)經(jīng)過幾十年的發(fā)展,網(wǎng)絡(luò)模型在不斷更新,ANN(arti fi cial neural networks)人工神經(jīng)網(wǎng)絡(luò),BP(back propagation)神經(jīng)網(wǎng)絡(luò),DNN(deep neural networks)深度神經(jīng)網(wǎng)絡(luò),CNN(convolutional neural networks)卷積神經(jīng)網(wǎng)絡(luò)等都是人工神經(jīng)網(wǎng)絡(luò)算法不斷發(fā)展的產(chǎn)物。本文將以BP神經(jīng)網(wǎng)絡(luò)算法為主研究其在語音端點檢測方面的應(yīng)用。[1]
語音端點檢測(voice activity detection)又稱VAD是語音識別或者語音處理系統(tǒng)中的預(yù)處理的步驟,主要是準(zhǔn)確的檢測出來非語音段和語音段,目的是為了更為準(zhǔn)確的處理語音段的內(nèi)容,使得語音處理更為高效。[2]VAD算法的發(fā)展歷史最早可以追溯到上世紀(jì)50年代,經(jīng)過幾十年的研究發(fā)展,VAD算法已經(jīng)比較成熟,常用的有基于短時能量和平均過零率法,頻譜的子帶方差法,以及在低信噪比條件下的譜減聯(lián)合方差法的VAD算法等,但是由于ANN的發(fā)展,近些年來人們發(fā)現(xiàn)ANN應(yīng)用于VAD上會有不錯的檢測識別率,速度較快且低信噪比條件下檢測識別率同樣較為穩(wěn)定。
BP神經(jīng)網(wǎng)絡(luò)是上世紀(jì)80年代科學(xué)家提出的一種誤差反向傳播的多層前饋神經(jīng)網(wǎng)絡(luò),是目前應(yīng)用較為廣泛的神經(jīng)網(wǎng)絡(luò),本章主要分析其算法原理,對其發(fā)展背景及其歷史不再做闡述。[3]分析BP神經(jīng)網(wǎng)絡(luò)的算法原理首先從神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)分析,如圖1所示,基本的BP神經(jīng)網(wǎng)絡(luò)大體上分為三層,從左向右分別為輸入層,隱藏層,以及輸出層。
輸入層只承擔(dān)輸入節(jié)點的作用,將特征值輸入即可,在正式算法中,輸入特征值要做歸一化處理,這樣會避免神經(jīng)網(wǎng)絡(luò)訓(xùn)練不擬合或者過擬合現(xiàn)象發(fā)生。
輸入層的輸出輸入到隱藏層的過程中要各自乘以不同的權(quán)值,初始權(quán)值的選擇建議選擇0~1之間的隨機數(shù)(權(quán)值的更新后面再分析),之后再乘以激活函數(shù)Sigmod(激活函數(shù)還有其他函數(shù),可根據(jù)需要選擇),激活函數(shù)的作用是使網(wǎng)絡(luò)更加強大,增加它的能力,使它可以學(xué)習(xí)復(fù)雜數(shù)據(jù),以及表示輸入輸出之間非線性的復(fù)雜的任意函數(shù)映射。因此,使用非線性激活函數(shù),我們便能夠從輸入輸出之間生成非線性映射,在網(wǎng)絡(luò)中向后推進以計算相對于權(quán)重的誤差(丟失)梯度時執(zhí)行反向優(yōu)化策略,然后相應(yīng)地使用梯度下降或任何其他優(yōu)化技術(shù)優(yōu)化權(quán)重以減少誤差。[4]

圖1 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
隱藏層的輸入來自輸入層的輸出乘以權(quán)重和激活函數(shù),輸出層的輸入同樣來自于隱藏層的輸出乘以權(quán)重和激活函數(shù),原理和上述類似,不再贅述。
BP神經(jīng)網(wǎng)絡(luò)的初始節(jié)點數(shù),隱藏層節(jié)點數(shù)和輸出層節(jié)點數(shù)都是可以靈活選擇的,這也可以適應(yīng)輸入特征值向量的變化。
BP神經(jīng)網(wǎng)絡(luò)權(quán)值的更新依賴于目標(biāo)值的選擇以及誤差的反向傳播,假設(shè)設(shè)定目標(biāo)值X,輸出值為X1,那么誤差值為|X-X1|,那么每個輸出節(jié)點都會產(chǎn)生誤差,并且會根據(jù)此輸出節(jié)點的上一層網(wǎng)絡(luò)連接的權(quán)值,進行比例分配。神經(jīng)網(wǎng)絡(luò)通過調(diào)整鏈接權(quán)重進行學(xué)習(xí),這種方法由誤差引導(dǎo),誤差就是訓(xùn)練數(shù)據(jù)所給出的正確答案和實際輸出之間的差值。上述權(quán)值更新只是簡單的原理表述,事實上,真正意義上的權(quán)值更新和反向傳播誤差要復(fù)雜得多,每次權(quán)值的更新都會受學(xué)習(xí)率也就是學(xué)習(xí)因子的影響,而學(xué)習(xí)率的更新采用的算法為梯度下降法和基于梯度下降法改進的方法。
MFCC也就是梅爾頻率倒譜系數(shù),是語音識別中廣泛使用的特征,本文將使用MFCC參數(shù)結(jié)合BP神經(jīng)網(wǎng)絡(luò)進行語音端點檢測,下面分析MFCC參數(shù)提取的過程以及原理。[6]
MFCC是在mel標(biāo)度頻率域提取出來的倒譜參數(shù),mel標(biāo)度描述了人耳頻率的非線性特性,與頻率的關(guān)系如公式(1)所示:

完整的提取MFCC參數(shù)的過程如圖2所示:

圖2 提取MFCC參數(shù)的過程
原始信號假設(shè)為x(t),純凈噪音為h(t),噪音為e(t)那么有公式(2):

它們之間是一種卷積的關(guān)系,經(jīng)過fft變換之后

卷積變?yōu)槌朔e的關(guān)系,然后再經(jīng)過mel公式輸出:

然后對公式(4)兩邊取對數(shù)能量之后再對其進行離散余弦變換即可得到需要的特征值,要注意DCT系數(shù)取濾波器系數(shù)的一半。
MFCC參數(shù)提取出來,進行歸一化之后就可以輸入到BP神經(jīng)網(wǎng)絡(luò)輸入層,然后確定輸出層節(jié)點以及目標(biāo)值,即可進行訓(xùn)練。
對于一段含噪聲的語音信號,先對其進行預(yù)處理,分幀之后,利用matlab進行MFCC參數(shù)提取,提取出來的參數(shù)進行歸一化處理便于神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,數(shù)值保留為32位浮點數(shù)。在訓(xùn)練之前要對訓(xùn)練數(shù)值進行標(biāo)記,標(biāo)記出目標(biāo)值,然后對神經(jīng)網(wǎng)絡(luò)的權(quán)值進行初始化操作,建議權(quán)值選擇0~1之間的數(shù)值,對于語音端點檢測來說,輸出層節(jié)點為一個,語音或者非語音,兩種結(jié)果,輸入層節(jié)點建議選擇為256,這樣一次可以輸入256個特征值。最后進行訓(xùn)練等待輸出結(jié)果,如果輸出值減去目標(biāo)值的絕對值大于0.5則認(rèn)為識別失敗,否則識別成功,訓(xùn)練完之后,進行端點檢測時候每次檢測一段語音則輸出識別率。
對于神經(jīng)網(wǎng)絡(luò)訓(xùn)練,采用低信噪比信號和高信噪比信號兩組,每組1000個樣本,每次五秒,采樣率16kHz,分男女聲和遠(yuǎn)近場聲,訓(xùn)練2000次,每次循環(huán)60次,學(xué)習(xí)率設(shè)置為0.01,訓(xùn)練完成之后自然錄制人聲進行端點檢測,檢測樣本為100個,平均檢測成功率93%,總體檢測效果較好。
VAD是語音處理系統(tǒng)的預(yù)處理步驟,有著十分重要的作用,雖然VAD技術(shù)發(fā)展較為成熟,但是在超低信噪比信號環(huán)境下傳統(tǒng)算法仍然束手無策,隨著神經(jīng)網(wǎng)絡(luò)的發(fā)展,以及GPU訓(xùn)練速度的加快,利用神經(jīng)網(wǎng)絡(luò)進行語音端點檢測是以后發(fā)展的趨勢,希望今后可以有更好的算法應(yīng)用于VAD上。