【基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例7400字】_第1頁(yè)
【基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例7400字】_第2頁(yè)
【基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例7400字】_第3頁(yè)
【基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例7400字】_第4頁(yè)
【基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例7400字】_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

11-PAGE基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例目錄TOC\o"1-3"\h\u23105基于深度網(wǎng)絡(luò)模型的說(shuō)話人識(shí)別系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)案例 -1-20804(一)語(yǔ)音信號(hào)預(yù)處理 -1-32340(二)特征提取 -6-7756(三)訓(xùn)練模型 -8-28833(四)聲紋對(duì)比 -13-11225(五)測(cè)試模型 -14-18618(六)評(píng)價(jià)指標(biāo)與結(jié)果分析 -15-人們對(duì)深度網(wǎng)絡(luò)模型的了解的不斷深入,企圖通過(guò)不斷加深網(wǎng)絡(luò)模型的深度來(lái)得到更抽象的特征,但是網(wǎng)絡(luò)層數(shù)的不斷加大不僅沒(méi)有獲取到更好的特征參數(shù),反而使得模型常常由于梯度爆炸或者消失而難以收斂。殘差網(wǎng)絡(luò)的使用突破了網(wǎng)絡(luò)層數(shù)的限制,并且減少了參數(shù)的數(shù)量量使得網(wǎng)絡(luò)的性能得以提升。(一)語(yǔ)音信號(hào)預(yù)處理本系統(tǒng)采用的數(shù)據(jù)集來(lái)自FreeSTChineseMandarinCorpus。所采用的數(shù)據(jù)是中文語(yǔ)音,數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集兩部分。其中訓(xùn)練集包含855名說(shuō)話人,一共有有17100條語(yǔ)音;測(cè)試集包含855名說(shuō)話人,一共有4275條語(yǔ)音。該語(yǔ)音庫(kù)的采樣率為16KHz。在語(yǔ)音信號(hào)預(yù)處理階段,本系統(tǒng)所使用的工具有Wav、Librosa、Numpy庫(kù)。Wav庫(kù)用于進(jìn)行WAV文件的讀寫操作。Librosa是一個(gè)功能強(qiáng)大的Python工具包,能夠?qū)σ纛l文件進(jìn)行分析、處理,并且具有時(shí)域處理、頻域處理、特征提取等功能。Numpy庫(kù)用來(lái)保存音頻數(shù)據(jù)在預(yù)處理、語(yǔ)譜圖轉(zhuǎn)換等操作過(guò)程中的產(chǎn)生的中間數(shù)據(jù),并且能夠進(jìn)行數(shù)組、矩陣之間的各種數(shù)學(xué)運(yùn)算。對(duì)語(yǔ)音信號(hào)進(jìn)行預(yù)處理的目的是方便獲取語(yǔ)音信號(hào)的聲譜圖來(lái)作為神經(jīng)網(wǎng)絡(luò)的輸入。首先對(duì)語(yǔ)音數(shù)據(jù)通過(guò)librosa.effects.split()進(jìn)行去除靜音處理,減少語(yǔ)音的噪聲,提高訓(xùn)練的準(zhǔn)確率。對(duì)語(yǔ)音數(shù)據(jù)的時(shí)長(zhǎng)進(jìn)行限制,語(yǔ)音數(shù)據(jù)過(guò)長(zhǎng)會(huì)導(dǎo)致累積的識(shí)別錯(cuò)誤數(shù)量且計(jì)算量會(huì)變得很大,語(yǔ)音數(shù)據(jù)過(guò)短會(huì)導(dǎo)致語(yǔ)音特征不明顯,難以提取語(yǔ)音特征,本系統(tǒng)對(duì)每條語(yǔ)音設(shè)置的長(zhǎng)度是3s,語(yǔ)音數(shù)據(jù)以數(shù)組的方式進(jìn)行存儲(chǔ),當(dāng)語(yǔ)音長(zhǎng)度小于3s時(shí),以0補(bǔ)足,當(dāng)語(yǔ)音長(zhǎng)度大于3s時(shí),隨機(jī)截取其中連續(xù)的3s語(yǔ)音。語(yǔ)音信號(hào)會(huì)隨時(shí)間的推移而發(fā)生變化,因此具有不穩(wěn)定性,并且人類的發(fā)聲器官的狀態(tài)以及收集語(yǔ)音信號(hào)設(shè)備的自身問(wèn)題都會(huì)對(duì)采集到的語(yǔ)音信號(hào)的質(zhì)量產(chǎn)生影響,因此在將語(yǔ)音信號(hào)轉(zhuǎn)化成語(yǔ)譜圖之前,必須先對(duì)語(yǔ)音信號(hào)進(jìn)行預(yù)處理,通過(guò)預(yù)處理,消除或降低環(huán)境和傳輸設(shè)備對(duì)語(yǔ)音信號(hào)的影響,獲得相對(duì)“干凈”的語(yǔ)音,方便在后面的語(yǔ)音處理過(guò)程中能夠利用“干凈”的語(yǔ)音提取其中更加有效和更具有表征力的特征信息,提供更能描繪語(yǔ)音信號(hào)特點(diǎn)的特征參數(shù),建立完善的說(shuō)話人模型,并提高識(shí)別的準(zhǔn)確率。預(yù)處理一般包括預(yù)加重、分幀處理和加入窗口函數(shù)等操作。(1)預(yù)加重[9]由于人類自身生理情況的限制,在發(fā)聲時(shí),口腔、鼻子這些發(fā)聲器官會(huì)對(duì)我們所發(fā)出的語(yǔ)音產(chǎn)生影響,導(dǎo)致語(yǔ)音信號(hào)高頻部分的對(duì)應(yīng)的頻譜幅度有所下降,因此通過(guò)預(yù)加重操作,可以凸顯語(yǔ)音的高頻部分,彌補(bǔ)人類自身生理狀況對(duì)產(chǎn)生的語(yǔ)音信號(hào)帶來(lái)的損失,降低說(shuō)話人自身帶來(lái)的口唇的輻射的影響,從而提高分辨率。預(yù)加重操作可以通過(guò)一階高通濾波器來(lái)實(shí)現(xiàn),其表達(dá)式如式4所示:H(式4)式4中,a表示預(yù)加重的系數(shù),a的取值范圍為0.9~1.0。圖5為原始語(yǔ)音信號(hào),圖6為經(jīng)過(guò)預(yù)加重后的語(yǔ)音信號(hào)。可以看出,經(jīng)過(guò)預(yù)加重的處理,語(yǔ)音信號(hào)頻譜在高頻部分的幅度得到了提升。圖5原始語(yǔ)音信號(hào)頻譜圖6預(yù)加重后的語(yǔ)音信號(hào)頻譜(2)分幀由于只有穩(wěn)態(tài)的信息才能進(jìn)行操作,因此將語(yǔ)音信號(hào)劃分為一小段,在每一小段內(nèi),語(yǔ)音信號(hào)可近似看作是不發(fā)生變化的,每一小段叫做一幀,再對(duì)每一幀進(jìn)行短譜分析。簡(jiǎn)單的對(duì)語(yǔ)音信號(hào)進(jìn)行裁剪會(huì)導(dǎo)致語(yǔ)音信號(hào)的丟失,例如語(yǔ)音信號(hào)的突然上升或突然下降,會(huì)導(dǎo)致前后幀信息的不一致。為了保持幀與幀之間的連貫性,在分幀時(shí)采用交疊法,每一幀都相互交錯(cuò),可以很好地消去上面的問(wèn)題。圖7為分幀操作的圖形展示。圖8為分幀后最后一幀的時(shí)域圖像。圖7分幀圖8最后一幀時(shí)域圖像(3)加窗經(jīng)過(guò)分幀操作的語(yǔ)音信號(hào)通常容易出現(xiàn)的問(wèn)題是,幀的起始和末尾的地方會(huì)出現(xiàn)不連續(xù)的情況,幀數(shù)越多,與原始語(yǔ)音信號(hào)的差別越大,識(shí)別正確率就越低,因此采用加窗法可使全局更加連續(xù)。本次研究使用的窗函數(shù)是漢明窗(HammingWindow),其表達(dá)式如式3所示。w(式5)其中,0≤n≤N-1,N為幀長(zhǎng)。圖8為漢明窗時(shí)域波形,圖9為原始信號(hào)加上漢明窗后的波形。圖8漢明窗時(shí)域波形圖9加窗后的信號(hào)波形數(shù)據(jù)集預(yù)處理階段的偽代碼如下for每一條音頻文件d獲取文件的路徑path,標(biāo)簽label加載音頻文件wav=librosa.load(path)去除靜音wav=librosa.effects.split(wav)設(shè)置標(biāo)準(zhǔn)語(yǔ)音長(zhǎng)度wav_len=3iflen(wav)>wav_len在0~len(wav)-wav_len中產(chǎn)生隨機(jī)數(shù)rwav=wav[r:wav_len+r]elsewav=wav.extend(np.zeros())預(yù)加重emphasized_signal=np.append(audio[0],audio[1:]-pre_emphasis*audio[-1])分幀定義幀長(zhǎng)wlenif語(yǔ)音信號(hào)長(zhǎng)度<wlen幀數(shù)定為1else幀數(shù)=int(np.ceil((1.0*語(yǔ)音信號(hào)長(zhǎng)度-wlen+inc)/inc))得到幀信號(hào)frames=pad_signal[indices]加窗signal.hamming()(二)特征提取語(yǔ)音特征提取,也就是將語(yǔ)音中能表達(dá)出人物個(gè)性的特征進(jìn)行數(shù)字化,使得計(jì)算機(jī)能夠理解,通過(guò)語(yǔ)音特征的提取得到一個(gè)特征參數(shù),該特征參數(shù)能從一定程度上反應(yīng)說(shuō)話人在語(yǔ)音方面的特點(diǎn),并能在一定程度上摒棄一些干擾信息。在特征提取過(guò)程中,要做到盡可能多地保留對(duì)說(shuō)話人識(shí)別有重要意義的語(yǔ)音信息,摒棄那些對(duì)分類無(wú)用的或多余的信息,精簡(jiǎn)特征參數(shù)的矢量序列。當(dāng)前在說(shuō)話人識(shí)別技術(shù)中最常用的語(yǔ)音特征是MFCC。人耳是一個(gè)非常成功的說(shuō)話人識(shí)別系統(tǒng),能夠有效地提取說(shuō)話人的個(gè)性特點(diǎn),并極大地消除噪音對(duì)識(shí)別過(guò)程中的影響。MFCC是研究人員依據(jù)人耳構(gòu)造與感知機(jī)制而提出的一種聲學(xué)特征,同人耳一樣,具有非常突出的抗干擾能力[10]。對(duì)于不同頻率的語(yǔ)音信號(hào),人耳的反應(yīng)能力、靈敏度是不同的,對(duì)于明顯的聲音,人耳的反應(yīng)更敏感,對(duì)于不明顯的聲音,人耳的反應(yīng)會(huì)遲鈍一些,因此當(dāng)同時(shí)有兩種或多種語(yǔ)音信號(hào)出現(xiàn)時(shí),響度大的語(yǔ)音信號(hào)會(huì)在一定程度上影響響度小的語(yǔ)音信號(hào)的接收。MFCC正是考慮了人類的聽(tīng)覺(jué)特性,將聲波的線性頻率轉(zhuǎn)化為基于人耳特性的非線性頻率--Mel頻率,轉(zhuǎn)化公式如式6所示,其中f表示聲波的線性頻率。mel(式6)圖10為MFCC提取過(guò)程,圖10中,將經(jīng)過(guò)預(yù)處理操作得到的語(yǔ)音幀通過(guò)快速傅里葉變換(fastFouriertransform,F(xiàn)FT),得到每一幀在頻譜圖上的能量分布,能量分布體現(xiàn)了每個(gè)說(shuō)話者語(yǔ)音的特性,將頻譜圖按照時(shí)間先后順序累積起來(lái)就可以得到聲譜圖;再通過(guò)Mel濾波器的簡(jiǎn)化特征和過(guò)濾多余信息,將聲譜圖的這些信號(hào)的頻率轉(zhuǎn)換到人耳所能感知到的頻率,得到Mel頻譜,這樣過(guò)濾后得到的Mel頻譜更符合人耳的聽(tīng)覺(jué)特性;接著在Mel頻譜上進(jìn)行對(duì)數(shù)運(yùn)算將其轉(zhuǎn)換成梅爾能量譜,可以有效地降低環(huán)境中的因素對(duì)語(yǔ)音信號(hào)識(shí)別能力的影響;最終對(duì)上一步的輸出作離散余弦變換(DiscreteCosineTransform,DCT)轉(zhuǎn)換為倒譜域,得到MFCC系數(shù)。圖10MFCC提取過(guò)程本文通過(guò)librosa.feature.melspectrogram()將語(yǔ)音數(shù)據(jù)轉(zhuǎn)換成梅爾頻譜,再將梅爾頻譜保存在TFRecord格式的文件中。由于訓(xùn)練集和測(cè)試集的音頻數(shù)據(jù)散列存儲(chǔ)在磁盤空間中,不僅占用磁盤空間,并且在依次讀取文件時(shí)很耗時(shí)、過(guò)程繁瑣。TFRecord由于其內(nèi)部的獨(dú)特的二進(jìn)制編碼方式,其占用的內(nèi)存空間很少,往往只需加載少量的幾個(gè)文件便能獲取全部的音頻數(shù)據(jù)信息。使用TFRecord文件簡(jiǎn)單、加載數(shù)據(jù)快速,對(duì)具有大型數(shù)據(jù)集的模型訓(xùn)練過(guò)程很友好,而且語(yǔ)音數(shù)據(jù)往往具有小而多的特點(diǎn),最好的方法就是把這些音頻文件生成TFRecord,加快訓(xùn)練速度。(三)訓(xùn)練模型本系統(tǒng)采用ResNet50模型,該模型是一個(gè)50層的殘差神經(jīng)網(wǎng)絡(luò)模型,是一個(gè)用于圖像分類的簡(jiǎn)單、高度模塊化的網(wǎng)絡(luò)結(jié)構(gòu)。表1為常見(jiàn)的殘差網(wǎng)絡(luò)模型結(jié)構(gòu)。ResNet50第一層為7*7*64的卷積層,然后是3+4+6+3=18個(gè)bottleneckblock,每個(gè)block都由3層組成,所以一共有18*3=48層。最后加上一個(gè)全連接層(FullyConnectedLayer),所以總共為1+1+48=50層。

表1常見(jiàn)的殘差網(wǎng)絡(luò)模型LayernameOutputsize18-layer34-layer50-layer101-layerconv1112*1127*7,64,stride2conv2_x56*563*3maxpool,stride23?3,643?3,641?1,641?1,64conv3_x28*283?3,1283?3,1281?1,1281?1,128conv4_x14*143?3,2563?3,2561?1,2561?1,256conv5_x7*73?3,5123?3,5121?1,5121?1,5121*1averagepool,1000-dfc,softmaxFLOPS1.8*1093.6*1093.8*1097.6*10950層的ResNet包括了5中參數(shù)不同的卷積階段,在第一階段,進(jìn)入第一個(gè)卷積層,該層負(fù)責(zé)特征的抽取,該層具有64個(gè)大小為7*7的卷積核,卷積核的步長(zhǎng)為2,使得圖像的長(zhǎng)寬降低為原先的1/2;在第二階段,先經(jīng)過(guò)一個(gè)最大池化層,步長(zhǎng)為2,使得特征圖的尺寸下降一半,之后是三個(gè)bottleneckblock塊,每個(gè)bottleneckblock是由3層組成的堆棧,每個(gè)bottleneck里面包含兩種block,一種是卷積塊(convblock),一種是恒等塊(identityblock),圖11是卷積塊的圖形,是虛線連接的三層,這三層分別是1*1、3*3和1*1卷積,1*1的卷積核主要用來(lái)對(duì)圖像的降維和恢復(fù)維度,3*3的卷積操作用來(lái)提取特征。圖12是恒等塊的圖形,實(shí)線連接,在恒等塊中,不需要經(jīng)過(guò)卷積網(wǎng)絡(luò)降維,直接將輸入加到最后的1*1卷積輸出上。在第三、四、五階段,每個(gè)塊的第一個(gè)卷積,即conv3_1、conv4_1、conv5_1,通過(guò)步長(zhǎng)為2的卷積核使得輸入圖形的尺寸下降為原來(lái)的一半,再依次通過(guò)剩下的bottleneckblock。網(wǎng)絡(luò)模型的最后是平均池化層和帶有softmax的1000路全連接層。圖11卷積塊圖12恒等塊訓(xùn)練時(shí),每次從數(shù)據(jù)集中讀取一批(32條)數(shù)據(jù),每條數(shù)據(jù)循環(huán)訓(xùn)練100次,使用的權(quán)重為之前訓(xùn)練好的權(quán)重,采用最大池化層,將include_top設(shè)為false表示不保留頂層的全連接網(wǎng)絡(luò),自定義全連接層,全連接的神經(jīng)元個(gè)數(shù)units為855,即訓(xùn)練集中的說(shuō)話人個(gè)數(shù),并且使用softmax作為全連接層的激活函數(shù)。softmax激活函數(shù)應(yīng)用于多類分類且類別之間互斥的問(wèn)題,將多個(gè)神經(jīng)元的輸出映射到(0,1)區(qū),輸出結(jié)果為屬于各個(gè)分類的概率,并且保證輸出神經(jīng)元之和為1.0,這樣可以很直觀地比較各輸出的值并選擇其中最大的值對(duì)應(yīng)的分類作為最終的分類結(jié)果。Softmax激活函數(shù)的公式如式7所示,其中aj表示經(jīng)過(guò)softmax函數(shù)后的第j個(gè)輸出值,zj表示第j個(gè)結(jié)點(diǎn)的輸出值,k為分類數(shù)。aj本系統(tǒng)選用的損失函數(shù)為交叉熵?fù)p失函數(shù)[11]categorical_crossentropyloss,損失函數(shù)能夠用來(lái)估計(jì)模型預(yù)測(cè)的值與真實(shí)值之間的差距,以便及時(shí)對(duì)模型參數(shù)進(jìn)行合適的調(diào)整,最理想的情況是預(yù)測(cè)值剛好等于真實(shí)值。交叉熵的值越小,表示通過(guò)模型預(yù)測(cè)的值與真實(shí)值越接近,利用訓(xùn)練集對(duì)模型訓(xùn)練的效果越好。交叉熵?fù)p失函數(shù)在多分類模型中的表達(dá)式如式8所示,m表示一個(gè)批次的樣本個(gè)數(shù),p表示期望輸出,q表示實(shí)際可能輸出期望p的概率。C=?1交叉熵?fù)p失函數(shù)在多分類任務(wù)的應(yīng)用中很常見(jiàn),交叉熵描述了兩個(gè)概率之間分布的差異,是基于概率分布的損失函數(shù),因此在多分類模型中,常常使用到softmax激活函數(shù)+交叉熵?fù)p失函數(shù)的組合方式,softmax激活函數(shù)能夠?qū)⒕W(wǎng)絡(luò)最后一層輸出的向量進(jìn)行“歸一化”處理成概率分布的形式,使其多個(gè)分類的預(yù)測(cè)值,即各個(gè)神經(jīng)單元的輸出值,加起來(lái)和為1,再采用交叉熵?fù)p失函數(shù)計(jì)算loss。利用dropout正則化方法隨機(jī)選取一部分結(jié)點(diǎn)進(jìn)行訓(xùn)練達(dá)到減小測(cè)試誤差的效果。它的實(shí)現(xiàn)方法是在每一次迭代時(shí),隨機(jī)選出一部分神經(jīng)元不參與訓(xùn)練的工作,只利用剩下的結(jié)點(diǎn)進(jìn)行訓(xùn)練。由于每次停止工作的結(jié)點(diǎn)是隨機(jī)的,因此一是每次迭代訓(xùn)練的網(wǎng)絡(luò)是不同的,不同的網(wǎng)絡(luò)產(chǎn)生的過(guò)擬合現(xiàn)象以及模型過(guò)擬合程度很可能是不同的,甚至可能產(chǎn)生一些互補(bǔ)的過(guò)擬合現(xiàn)象,因此最后取平均時(shí)有可能讓一些“相反”的過(guò)擬合互相抵消從而使模型整體上過(guò)擬合程度降低,二是降低了結(jié)點(diǎn)之間的關(guān)聯(lián)性和模型的復(fù)雜度,模型中權(quán)值的更新不再依賴于固定結(jié)點(diǎn)之間的作用,而是與不同層次的多個(gè)結(jié)點(diǎn)的共同作用有關(guān),,即使丟失特定的線索,模型也可以從眾多其他線索中學(xué)習(xí)共同的特征,而不會(huì)太依賴于某些局部的特征。圖13為dropout之前與之后的對(duì)比圖。tf.keras.layers.Dropout的參數(shù)設(shè)置為0.5,表示每一次迭代保留50%的結(jié)點(diǎn)。圖13dropout之前與之后的對(duì)比設(shè)置L2正則化器來(lái)降低權(quán)重緩解過(guò)擬合現(xiàn)象,使函數(shù)變得更平緩。過(guò)擬合是分類器對(duì)訓(xùn)練集的特征過(guò)于熟悉,它能夠?qū)τ?xùn)練集進(jìn)行完全正確的分類,使得它的分類規(guī)則過(guò)于嚴(yán)格,從而導(dǎo)致對(duì)任何與訓(xùn)練數(shù)據(jù)稍有不同的數(shù)據(jù)分類錯(cuò)誤,在測(cè)試集上的分類效果大大降低。過(guò)擬合發(fā)生時(shí),訓(xùn)練集中的大多數(shù)的樣本點(diǎn)都能被考慮到,最終形成的擬合函數(shù)圖像十分曲折,函數(shù)波動(dòng)大,在某些很小的區(qū)間里,函數(shù)的變化率很大,即函數(shù)的系數(shù)值非常大,輸入值的微小變化都會(huì)導(dǎo)致函數(shù)值很大幅度上的增加或減少,可見(jiàn)模型中的權(quán)重w很大。L2正則化器通過(guò)在目標(biāo)函數(shù)后面添加一個(gè)系數(shù)的懲罰項(xiàng),當(dāng)模型的某個(gè)權(quán)重的權(quán)值太大時(shí)對(duì)其進(jìn)行懲罰,并且鼓勵(lì)較小數(shù)值的參數(shù)來(lái)訓(xùn)練模型,這樣訓(xùn)練出的擬合函數(shù)較為平緩,能夠有效地處理分類問(wèn)題,同時(shí)能夠防止系數(shù)過(guò)大從而讓模型變得復(fù)雜。加入目標(biāo)函數(shù)的正則化項(xiàng)如式9所示。Jw,bλ2m是一個(gè)常數(shù),其中m為樣本個(gè)數(shù),λΩw與未加懲罰項(xiàng)的目標(biāo)函數(shù)相比,對(duì)權(quán)重取偏導(dǎo),多了一項(xiàng)λmw→w?η?J優(yōu)化方法使用Adam,其中一個(gè)很重要的參數(shù)為學(xué)習(xí)率,它決定了模型的學(xué)習(xí)進(jìn)度、模型是否能收斂以及何時(shí)收斂到最小值。如果學(xué)習(xí)率設(shè)置過(guò)小,收斂的速度降低,整個(gè)收斂過(guò)程將會(huì)變得十分漫長(zhǎng),優(yōu)化的效率降低,并且容易出現(xiàn)過(guò)擬合現(xiàn)象,如果學(xué)習(xí)率設(shè)置過(guò)大,模型參數(shù)更新過(guò)快,極易受到異常數(shù)據(jù)的影響,并且模型的梯度可能會(huì)在最小值附近來(lái)回震蕩甚至可能無(wú)法正常收斂。本文設(shè)置的學(xué)習(xí)率初值為0.001。訓(xùn)練模型的偽代碼為:對(duì)每一條語(yǔ)音數(shù)據(jù)的梅爾頻譜sound利用model(sound)計(jì)算模型輸出的prediction根據(jù)交叉熵?fù)p失函數(shù)tf.keras.losses.sparse_categorical_crossentropy計(jì)算損失值根據(jù)tf.keras.metric.sparse_categorical_accuracy計(jì)算準(zhǔn)確率根據(jù)損失值更新梯度tape.gradient(train_loss,model.trainable_variables)使用優(yōu)化器optimizer.apply_gradients()更新梯度每訓(xùn)練200個(gè)batch執(zhí)行一次測(cè)試和保存模型,包括預(yù)測(cè)模型和網(wǎng)絡(luò)參數(shù)(四)聲紋對(duì)比聲紋對(duì)比用來(lái)實(shí)現(xiàn)兩個(gè)音頻數(shù)據(jù)的比較,判斷其是否屬于同一個(gè)人。首先加載數(shù)據(jù)函數(shù)load_data()來(lái)加載需要進(jìn)行對(duì)比的音頻數(shù)據(jù)。識(shí)別的過(guò)程為,選擇兩個(gè)音頻文件作為輸入,對(duì)這兩個(gè)文件均進(jìn)行去除靜音、預(yù)處理操作,再獲取二者的語(yǔ)譜圖作為模型的輸入,利用訓(xùn)練好的模型得到他們的特征數(shù)據(jù)feature,通過(guò)二者的特征數(shù)據(jù)feature,求得對(duì)角余弦值,得到的結(jié)果作為二者的相似度。本系統(tǒng)將相似度的閾值設(shè)為0.7,即若二者的對(duì)角余弦值大于0.7,即可判斷這兩個(gè)音頻數(shù)據(jù)屬于同一人。加載數(shù)據(jù)函數(shù)load_data()和獲取特征值偽代碼如下:獲取音頻文件wav=librosa.load(path)對(duì)音頻文件去除靜音、預(yù)處理、轉(zhuǎn)化成語(yǔ)譜圖去除靜音wav=librosa.effects.split(wav)預(yù)加重、分幀、加窗將音頻文件轉(zhuǎn)換成語(yǔ)譜圖ps=librosa.feature..melspectrogram(y=wav)利用訓(xùn)練好的模型獲取特征值feature=intermediate_layer_model.predict(ps)聲紋對(duì)比偽代碼如下:獲取要預(yù)測(cè)的兩個(gè)人的音頻文件

person1=load_data(path1)

person2=load_data(path2)獲取特征值

feature1=infer(person1)[0]

feature2=infer(person2)[0]計(jì)算feature1,feature2的對(duì)角余弦值并作為二者相似度dist

if對(duì)角余弦值dist>閾值:

判斷二者為同一個(gè)人,相似度為dist

else:

判斷二者不為同一個(gè)人,相似度為dist(五)測(cè)試模型測(cè)試集來(lái)源于FreeSTChineseMandarinCorpus,其中包含855個(gè)說(shuō)話人,每個(gè)說(shuō)話人包含5條語(yǔ)音數(shù)據(jù)。測(cè)試階段,首先通過(guò)load_audio()加載音頻庫(kù),音頻庫(kù)從測(cè)試集中選取的部分?jǐn)?shù)據(jù),可以將音頻庫(kù)視為已經(jīng)注冊(cè)的用戶,可見(jiàn)注冊(cè)用戶的集合和真正進(jìn)行測(cè)試用戶的集合是不完全相同的,本系統(tǒng)是基于開(kāi)集合實(shí)現(xiàn)的說(shuō)話人系統(tǒng);利用訓(xùn)練好的模型分類層的上一層,獲取音頻庫(kù)中每一條語(yǔ)音的特征數(shù)據(jù)feature,并將所有人的標(biāo)簽和特征feature對(duì)應(yīng)存放在person_name,person_feature兩個(gè)數(shù)組中;對(duì)于每一條待測(cè)試的語(yǔ)音數(shù)據(jù),通過(guò)recognition()獲得預(yù)測(cè)后的標(biāo)簽name和相似度p,recognition()函數(shù)的實(shí)現(xiàn)方式為:首先利用模型最后的分類層的上一層獲取該待測(cè)語(yǔ)音的特征數(shù)據(jù)feature,將該特征數(shù)據(jù)與person_feature中的每一個(gè)數(shù)據(jù)進(jìn)行求對(duì)角余弦值,選取對(duì)角余弦值最大那個(gè)feature對(duì)應(yīng)的name,該求得的對(duì)角余弦值也為待測(cè)語(yǔ)音與name對(duì)應(yīng)說(shuō)話人之間的相似度;利用recognition()獲得的標(biāo)簽name和相似度p。若p大于0.7且預(yù)測(cè)標(biāo)簽name與原name相同,表示預(yù)測(cè)成功,correct_sum加1,若p大于0.7但是預(yù)測(cè)標(biāo)簽name與原name不同,表示該語(yǔ)音被錯(cuò)誤識(shí)別為另一個(gè)人,wrong_accept加1,若p小于0.7且預(yù)測(cè)標(biāo)簽與原name相同,表示該語(yǔ)音未被成功識(shí)別,wrong_refuse加1,若p小于0.7且預(yù)測(cè)標(biāo)簽與原name也不相同,表示系統(tǒng)能正確識(shí)別出該語(yǔ)音不屬于已加載的音頻庫(kù)中的任意一條語(yǔ)音所對(duì)應(yīng)的說(shuō)話人,即能正確拒絕該語(yǔ)音,refuse_sum加1。聲紋識(shí)別偽代碼如下:加載音頻庫(kù)階段:對(duì)訓(xùn)練集中的每一條語(yǔ)音將路徑path的后8位字符作為標(biāo)簽存儲(chǔ)到person_name數(shù)組獲取特征值feature存儲(chǔ)到person_feature數(shù)組測(cè)試階段:對(duì)測(cè)試集每一條語(yǔ)音將路徑path的后8位字符作為標(biāo)簽name,獲取特征值feature對(duì)person_feature中的每一個(gè)值i比較i與feature的對(duì)角余弦值,并將最大的對(duì)角余弦值賦值給p,所對(duì)應(yīng)的name賦值給predict_nameifp>給定閾值且predict_name==name識(shí)別正確數(shù)量加1ifp>給定閾值且predict_name!=name錯(cuò)誤接受數(shù)量加1ifp<給定閾值且predict_name==name錯(cuò)誤拒絕數(shù)量加1ifp<給定閾值且predict_name!=name正確拒絕數(shù)量加1(六)評(píng)價(jià)指標(biāo)與結(jié)果分析聲紋識(shí)別中對(duì)模型的性能評(píng)價(jià)標(biāo)準(zhǔn)有很多,如模型訓(xùn)練時(shí)間、訓(xùn)練語(yǔ)音長(zhǎng)度

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論