国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于孿生自動(dòng)編碼器的深度說話人嵌入向量

2021-05-28 12:37:46陳杰葉瑤瑤
現(xiàn)代計(jì)算機(jī) 2021年10期
關(guān)鍵詞:池化編碼器語音

陳杰,葉瑤瑤

(上海交通大學(xué)微納電子學(xué)系,上海201100)

0 引言

說話人識(shí)別(Speaker Recognition)屬于生物識(shí)別技術(shù)的一種,通過從語音信號(hào)中提取聲紋特征進(jìn)行身份識(shí)別,也稱作聲紋識(shí)別。說話人識(shí)別主要分兩種模式,說話人辨認(rèn)(Speaker Identification)和說話人驗(yàn)證(Speaker Verification)。本文的研究方向?yàn)檎f話人驗(yàn)證,即驗(yàn)證所給的語音是否屬于所聲稱的說話人。

近年來,為了實(shí)現(xiàn)更優(yōu)的性能,DNN已經(jīng)廣泛應(yīng)用于說話人識(shí)別領(lǐng)域[1-4]中并取得了良好的效果。通過大規(guī)模據(jù)訓(xùn)練的深度神經(jīng)網(wǎng)絡(luò)在大多數(shù)任務(wù)上已經(jīng)超越了傳統(tǒng)的i-vector[5]說話人識(shí)別系統(tǒng),特別是在短語音上表現(xiàn)優(yōu)異。而在諸多基于DNN[6-8]提取說話人向量的研究中,x-vector[3,6]憑借其優(yōu)秀的區(qū)分性和靈活性被應(yīng)用在許多任務(wù)中。

x-vector系統(tǒng)的原理主要通過時(shí)延神經(jīng)網(wǎng)絡(luò)(Time-Delay Neural Network,TDNN)從語音段的多個(gè)語音幀中提取出說話人嵌入向量,其主要包括3個(gè)部分:處理幀級(jí)特征的神經(jīng)網(wǎng)絡(luò),將幀級(jí)特征池化為句級(jí)特征和處理句級(jí)特征的神經(jīng)網(wǎng)絡(luò)。通常大多數(shù)的說話人識(shí)別系統(tǒng)中會(huì)在后端使用概率線性判別分析(Proba-bilistic Linear Discriminant Analysis,PLDA)來對(duì)提取的嵌入向量打分。目前的主流技術(shù)框架中,為了增強(qiáng)嵌入向量的區(qū)分性還會(huì)在PLDA打分之前使用線性判別分析(Linear Discriminant Analysis,LDA)方法對(duì)向量降維。

近年來,為了提升x-vector系統(tǒng)的性能,有許多工作針對(duì)系統(tǒng)中的池化層提出了改進(jìn)。譬如可學(xué)習(xí)字典編碼的池化層[9],基于注意力機(jī)制的池化方法[10-11],基于交叉卷積層的池化方法[12]。多數(shù)研究人員普遍認(rèn)為嵌入向量的區(qū)分性與池化層對(duì)幀級(jí)特征的池化能力有很大關(guān)聯(lián),于是為了改善嵌入向量的性能針對(duì)池化層做了許多研究。池化后的特征經(jīng)過句級(jí)別網(wǎng)絡(luò)的處理后失去了許多原有說話人特征,更加關(guān)注其區(qū)分性,這便造成了一部分嵌入向量的說話人信息損失。我們提出了一個(gè)新方案來解決這一問題,我們?cè)谡麄€(gè)網(wǎng)絡(luò)訓(xùn)練完成后拋棄了第三部分的句級(jí)別神經(jīng)網(wǎng)絡(luò),轉(zhuǎn)而使用了基于孿生神經(jīng)網(wǎng)絡(luò)的自動(dòng)編碼器來提取說話人嵌入向量。

目前自動(dòng)編碼器在說話人識(shí)別領(lǐng)域中已經(jīng)有了許多應(yīng)用。例如2019年的一項(xiàng)研究提出使用變分自編碼器通過數(shù)據(jù)增強(qiáng)的方式來產(chǎn)生更具魯棒性的說話人嵌入向量[13],也有一項(xiàng)研究表明經(jīng)過變分自編碼器編碼的嵌入向量由于更近似高斯分布,使得變分自編碼器編碼后的向量針對(duì)PLDA打分的方式能達(dá)到更高的精度[14]。R.Font提出了一種降噪自編碼器的方法,可以用于獲得更具說話人區(qū)分性能的嵌入向量[15]。自動(dòng)編碼器也可以用作領(lǐng)域自適應(yīng)[16]。上述的這些研究成果大都使用自動(dòng)編碼器作為說話人識(shí)別系統(tǒng)中的后端處理器,當(dāng)然也有前端處理的研究例如用作降噪[17]。不過,不同于已有的這些研究成果,我們直接使用自動(dòng)編碼器來提取嵌入向量。

我們提出的新方案基于x-vector系統(tǒng),針對(duì)池化層的輸出特征使用基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器編碼獲得更具說話人區(qū)分性特征的嵌入向量,同時(shí)盡可能地保留原有說話人特征。自動(dòng)編碼器可以通過訓(xùn)練神經(jīng)網(wǎng)絡(luò)重建輸入來獲得更低維度的隱變量。在我們的系統(tǒng)中,使用統(tǒng)計(jì)池化層的輸出特征作為自編碼器的訓(xùn)練數(shù)據(jù),自編碼器的中間層輸出隱變量作為說話人嵌入向量。在基于x-vector的系統(tǒng)中,這種方案實(shí)現(xiàn)方式簡(jiǎn)單,同時(shí)編碼得到的嵌入向量相比基線系統(tǒng)的x-vector更具區(qū)分性和魯棒性。

1 基線系統(tǒng)

1.1 基線x-vector系統(tǒng)

自從Dan[6]基于深度神經(jīng)網(wǎng)絡(luò)提出了x-vector系統(tǒng)之后,說話人驗(yàn)證任務(wù)的性能取得了十分顯著的提升[18,19]。在x-vector系統(tǒng)中,時(shí)延神經(jīng)網(wǎng)絡(luò)用作幀級(jí)別的特征提取網(wǎng)絡(luò),網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。

系統(tǒng)中的t代表當(dāng)前幀,TDNN中的第一層接收從t-2至t+2幀拼接而成的上下文特征;第二層接收上一層輸出的第t-2,t,t+2幀的拼接特征;第三層接受第二層的輸出的第t-3,t,t+3幀的拼接特征;隨后的兩層不包含上下文信息。統(tǒng)計(jì)池化層會(huì)對(duì)TDDN輸出的全部幀進(jìn)行池化統(tǒng)計(jì),其會(huì)計(jì)算所有輸出T幀的平均值和標(biāo)準(zhǔn)協(xié)方差,將會(huì)輸出2×M(M=1500)維的池化向量用作句級(jí)網(wǎng)絡(luò)訓(xùn)練。池化向量隨后傳至全連接層和輸出層。說話人標(biāo)簽作為訓(xùn)練DNN網(wǎng)絡(luò)的輸出標(biāo)簽。訓(xùn)練完成之后,提取全連接層第一層的輸出向量作為說話人嵌入向量,隨后其余的神經(jīng)網(wǎng)絡(luò)不需要使用。在我們的實(shí)驗(yàn)中,訓(xùn)練x-vector提取器的具體實(shí)現(xiàn)方法參照Kaldi[20]工具完成。

1.2 LDA-PLDA系統(tǒng)

針對(duì)基于深度神經(jīng)網(wǎng)絡(luò)提出深度說話人嵌入向量,通常會(huì)使用一個(gè)后端處理器來補(bǔ)償嵌入向量的信道差異和打分。后端處理方法可以分為:使用LDA算法對(duì)嵌入向量降維,其通過最大化類間方差與類內(nèi)方差的比值來保證向量最大可分性[21];隨后對(duì)LDA降維后的向量進(jìn)行向量長(zhǎng)度歸一化;使用PLDA根據(jù)說話人不同話語中的類內(nèi)差異性和類間差異性,在嵌入空間中建立相應(yīng)的說話人子空間,并利用子空間中的相似度對(duì)不同嵌入向量的相似度打分[22-23]。在這個(gè)系統(tǒng)中,LDA的降維維度設(shè)置為200。LDA和PLDA的具體算法實(shí)現(xiàn)使用Kaldi工具完成,實(shí)現(xiàn)細(xì)節(jié)參照“ivectorcompute-lda.cc”和“ivector-compute-lda.cc”這 兩 個(gè)程序。

2 基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器

2.1 自動(dòng)編碼器

為了增加嵌入向量中包含的說話人信息,同時(shí)去除無關(guān)噪聲,我們提出了使用自動(dòng)編碼器提取說話人的嵌入向量。自動(dòng)編碼器是一種自監(jiān)督學(xué)習(xí)方法,訓(xùn)練時(shí)無需額外提供說話人標(biāo)簽信息,其早在上世紀(jì)80年代[24]就已經(jīng)被提出來了。自動(dòng)編碼器通過自監(jiān)督學(xué)習(xí)的方式使得網(wǎng)絡(luò)學(xué)習(xí)到能夠重建輸入的網(wǎng)絡(luò)參數(shù),經(jīng)編碼后的隱變量盡可能地保留了原有輸入信息,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

自動(dòng)編碼器包含兩個(gè)部分:第一部分為把輸入編碼為隱變量的編碼器,其公式可以表示為h=f(x);第二部分為把隱變量重解碼為輸入的解碼器,其公式為=g(h)。?為輸入x經(jīng)過自動(dòng)編碼器重建后的輸出,我們假設(shè)χ為用作訓(xùn)練的嵌入向量集合。為了最小化重建誤差,我們使用均方誤差作為網(wǎng)絡(luò)訓(xùn)練的損失函數(shù),損失函數(shù)可表示為:

其中|χ|代表樣本的數(shù)量。在我們的實(shí)驗(yàn)設(shè)置中,自動(dòng)編碼器的結(jié)構(gòu)為“3000-2048-1024-512-1024-2048-3000”,如圖2所示。同時(shí)為了使訓(xùn)練過程更加穩(wěn)定,我們分別在編碼器和解碼器的兩層網(wǎng)絡(luò)之間都使用了leaky ReLU激活函數(shù)和批標(biāo)準(zhǔn)化(Batch Nor-malization,BN)。

圖2 自動(dòng)編碼器結(jié)構(gòu)

2.2 孿生神經(jīng)網(wǎng)絡(luò)

孿生神經(jīng)網(wǎng)絡(luò)屬于神經(jīng)網(wǎng)絡(luò)的一種,首次提出于1993年[25]并被應(yīng)用于簽名識(shí)別,并于2005年被應(yīng)用于人臉識(shí)別[26]。大多數(shù)的工作主要集中在識(shí)別任務(wù)上,包括人臉識(shí)別、指紋識(shí)別、簽名識(shí)別,等等。類似于自動(dòng)編碼器,孿生網(wǎng)絡(luò)同樣將輸入樣本映射到一個(gè)隱變量空間,使得新的隱變量同類間的距離小于不同類變量之間的距離。所以其主要想法是找到一個(gè)目標(biāo)空間,這個(gè)目標(biāo)空間中更能體現(xiàn)出輸入樣本之間的內(nèi)在聯(lián)系。當(dāng)訓(xùn)練數(shù)據(jù)不足以包含分類樣本所需的全部信息時(shí),孿生網(wǎng)絡(luò)能發(fā)揮出巨大的作用,很適合說話人識(shí)別任務(wù)中缺少說話人全部信息的問題。其原理圖如圖3所示。

圖3 孿生神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

孿生神經(jīng)網(wǎng)絡(luò)有兩個(gè)結(jié)構(gòu)相同,且權(quán)重共享的子網(wǎng)絡(luò),分別接受兩個(gè)輸入向量x1和x2,將其映射為X1和X2,計(jì)算兩個(gè)向量之間的距離來判斷向量的相似度。孿生神經(jīng)網(wǎng)絡(luò)使用對(duì)比損失(contrastive loss)作為損失函數(shù),表達(dá)式如下:

其中:

代表兩個(gè)樣本特征X1、X2的歐氏距離,P表示樣本的特征維數(shù),Y代表兩個(gè)樣本的匹配標(biāo)簽,Y=1代表兩個(gè)樣本匹配,Y=0則代表不匹配,m為設(shè)定的閾值,N為樣本個(gè)數(shù)。

從上述的對(duì)比損失函數(shù)的表達(dá)式可以發(fā)現(xiàn),這種損失函數(shù)可以很好地表達(dá)成對(duì)樣本的匹配程度,也能夠用于訓(xùn)練提取特征的模型。

●當(dāng)Y=1(即樣本相似時(shí)),損失函數(shù)為:

即當(dāng)樣本相似時(shí),其特征空間的歐氏大的話,損失值增加。

●當(dāng)Y=0(即樣本相似時(shí)),損失函數(shù)為:

即當(dāng)樣本相似時(shí),其特征空間的歐氏距離反而小的話,損失值也會(huì)增加。

2.3 基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器

為了訓(xùn)練出更具說話人區(qū)分性的編碼器,我們結(jié)合了自動(dòng)編碼器和孿生網(wǎng)絡(luò)的優(yōu)點(diǎn),在盡可能保留原有說話人特征的基礎(chǔ)上,我們利用孿生網(wǎng)絡(luò)對(duì)自動(dòng)編碼器進(jìn)行半監(jiān)督訓(xùn)練,其網(wǎng)絡(luò)結(jié)構(gòu)如圖4。

圖4 基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器結(jié)構(gòu)

我們使用TDNN和統(tǒng)計(jì)池化層提取出來的池化向量作為網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù),原有說話人標(biāo)簽作為孿生網(wǎng)絡(luò)的監(jiān)督數(shù)據(jù)。當(dāng)輸入池化向量x1時(shí),系統(tǒng)會(huì)隨機(jī)取出樣本集中另一個(gè)池化向量x2。如果這對(duì)向量來自同一說話人,當(dāng)距離過大時(shí),其損失值則越大;反之,如果這對(duì)向量來自不同說話人,當(dāng)距離過小時(shí),其損失值也越大。我們綜合原自動(dòng)編碼器和孿生網(wǎng)絡(luò)的損失函數(shù)作為訓(xùn)練新網(wǎng)絡(luò)的損失函數(shù),其公式如下:

為了調(diào)控孿生網(wǎng)絡(luò)對(duì)自編碼器的懲罰力度,我們?cè)诳倱p失函數(shù)中引入懲罰系數(shù)λ。

訓(xùn)練階段結(jié)束后,TDNN網(wǎng)絡(luò)和自動(dòng)編碼器的結(jié)構(gòu)參數(shù)將會(huì)被確定。最終說話人嵌入向量提取器的結(jié)構(gòu)如圖5所示。

圖5 基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器深度說話人識(shí)別系統(tǒng)

我們保留了基線x向量系統(tǒng)的前兩個(gè)過程,幀級(jí)TDNN網(wǎng)絡(luò)和統(tǒng)計(jì)池化層。自動(dòng)編碼器的編碼器用來將池化向量轉(zhuǎn)換成說話人嵌入向量。最后,系統(tǒng)根據(jù)PLDA的打分分?jǐn)?shù)判決語音是否來自注冊(cè)說話人。

3 實(shí)驗(yàn)和結(jié)果

3.1 訓(xùn)練數(shù)據(jù)

在本次實(shí)驗(yàn)中,基線x-vector系統(tǒng)和我們提出的系統(tǒng)均使用Voxceleb1[27]和Voxceleb2[28]兩個(gè)數(shù)據(jù)集的數(shù)據(jù)作為訓(xùn)練集。在訓(xùn)練階段,我們只使用兩個(gè)數(shù)據(jù)集的開發(fā)集訓(xùn)練。Voxceleb1的開發(fā)集包含來自1211個(gè)不同說話人的148642句語音,Voxceleb2的開發(fā)集包含來自5994個(gè)不同說話人的1092009句語音,這些語音均采集自YouTube網(wǎng)站上的視頻。LDA和PLDA的訓(xùn)練數(shù)據(jù)為兩個(gè)數(shù)據(jù)集經(jīng)過向量提取器得到的說話人嵌入向量。

3.2 測(cè)試數(shù)據(jù)

在測(cè)試階段,我們使用Voxceleb1的TEST集來評(píng)估基線系統(tǒng)和新系統(tǒng)的性能。測(cè)試集包含4874段語音,平均時(shí)長(zhǎng)約為8秒,采樣頻率為16KHz,采集自YouTube上40位不同的說話人。測(cè)試過程分為兩個(gè)階段,注冊(cè)和評(píng)估。在注冊(cè)階段,每個(gè)說話人的3句語音被用作注冊(cè)語音,用來提取嵌入向量,3條語音的嵌入向量在取平均值后作為代表注冊(cè)說話人的說話人向量。在評(píng)估階段,剩余的語音將會(huì)分別計(jì)算出與注冊(cè)語音的相似度,根據(jù)相似度判斷是否為本人。

3.3 評(píng)估指標(biāo)

(1)等錯(cuò)誤率

在說話人識(shí)別任務(wù)中,等錯(cuò)誤率(Equal Error Rate,EER)為最常用的指標(biāo),這是一種通過調(diào)整閾值使錯(cuò)誤接受率和錯(cuò)誤拒絕率相等時(shí)對(duì)應(yīng)的比率。調(diào)整后的閾值點(diǎn)可以作為實(shí)際使用階段的閾值。

錯(cuò)誤接受率(False Acceptance Rate,F(xiàn)AR):

其中FP代表錯(cuò)誤接受樣本數(shù),TN代表正確拒絕樣本數(shù)。

錯(cuò)誤拒絕率(False Rejection Rate,F(xiàn)RR):

其中TP代表正確接受樣本數(shù),F(xiàn)N代表錯(cuò)誤拒絕樣本數(shù)。

當(dāng)通過調(diào)整閾值確定等錯(cuò)誤率后,EER=FAR=FRR。

(2)最小檢測(cè)代價(jià)

最小檢測(cè)代價(jià)(Minimum Detection Cost Function,minDCF)是美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究說話人識(shí)別評(píng)價(jià)(NIST SRE)中定義且常用的一種性能評(píng)定方法。其定義為:

其中CFR代表錯(cuò)誤拒絕的懲罰系數(shù),CFR代表錯(cuò)誤接受的懲罰系數(shù),Ptarget代表真實(shí)說話測(cè)試的先驗(yàn)概率,可以根據(jù)實(shí)際環(huán)境分別設(shè)定它們的值。實(shí)驗(yàn)中我們?cè)O(shè)定CFR=10,CFA=1,Ptarget=0.01。

3.4 實(shí)驗(yàn)設(shè)置

系統(tǒng)的輸入特征我們?cè)O(shè)置為30維的梅爾頻率倒譜系數(shù),采用幀長(zhǎng)為25ms和幀移為10ms的滑動(dòng)窗口對(duì)語音信號(hào)進(jìn)行分幀,同時(shí)使用基于能量的語音端點(diǎn)檢測(cè)方法去除語音中的靜音幀?;€系統(tǒng)中x-vector提取器的實(shí)現(xiàn)方法參照Kaldi中SRE16/V2樣例實(shí)現(xiàn)。提取的x-vector維度為512維,池化向量維度為3000維,自動(dòng)編碼器提取的嵌入向量維度為512維。訓(xùn)練時(shí)使用單張NVIDIA RTX 2080TI顯卡。

3.5 實(shí)驗(yàn)結(jié)果

我們針對(duì)3種不同結(jié)構(gòu)的說話人識(shí)別系統(tǒng),在Voxceleb1的TEST數(shù)據(jù)集上進(jìn)行了測(cè)試,其實(shí)驗(yàn)結(jié)果見表1。

表1 在Voxceleb1數(shù)據(jù)集中不同說話人識(shí)別系統(tǒng)性能的表現(xiàn)

由表1可知,我們提出的自動(dòng)編碼器提取出的說話人嵌入向量相比基線系統(tǒng)提取的x-vector向量性能得到了提升。在引入孿生神經(jīng)網(wǎng)絡(luò)訓(xùn)練后,系統(tǒng)的等錯(cuò)誤率進(jìn)一步下降。說明我們的方法提取出來的說話人嵌入向量更具區(qū)分性和魯棒性。

為了進(jìn)一步探究λ取值對(duì)自編碼器性能的影響,我們通過改變?chǔ)藖眚?yàn)證其效果,其中我們?cè)O(shè)置閾值m=10,實(shí)驗(yàn)結(jié)果如表2所示。

表2 λ對(duì)基于孿生網(wǎng)絡(luò)的自動(dòng)編碼器說話人識(shí)別性能的影響

實(shí)驗(yàn)表明λ權(quán)重對(duì)系統(tǒng)性能有著比較顯著的影響,實(shí)際應(yīng)用的時(shí)候調(diào)整合適的λ參數(shù)需要經(jīng)過詳細(xì)的測(cè)試,本實(shí)驗(yàn)中選取λ=0.1作為最后的實(shí)驗(yàn)方案??梢钥闯觯黾訉\生網(wǎng)絡(luò)的自動(dòng)編碼器相比原本的自動(dòng)編碼器的性能有了更大的提升。

4 結(jié)語

本文針對(duì)最新的基于x-vector說話人識(shí)別系統(tǒng)進(jìn)行了改進(jìn),在原有框架的基礎(chǔ)上更改了向量提取器的結(jié)構(gòu),增加了自動(dòng)編碼器作為說話人嵌入向量的提取器。隨后對(duì)自動(dòng)編碼器進(jìn)行了優(yōu)化,使用了孿生神經(jīng)網(wǎng)絡(luò)監(jiān)督訓(xùn)練自動(dòng)編碼器,使得到編碼器對(duì)說話人更具區(qū)分性,提升了說話人識(shí)別系統(tǒng)整體的性能。作為說話人識(shí)別系統(tǒng)的新架構(gòu),本文對(duì)自動(dòng)編碼器的優(yōu)化還未能達(dá)到最佳,在后續(xù)的研究中還需要對(duì)自動(dòng)編碼器的結(jié)構(gòu)進(jìn)行進(jìn)一步的優(yōu)化。

猜你喜歡
池化編碼器語音
基于緊湊型雙線性網(wǎng)絡(luò)的野生茵識(shí)別方法研究
無線電工程(2024年8期)2024-09-16 00:00:00
基于Sobel算子的池化算法設(shè)計(jì)
卷積神經(jīng)網(wǎng)絡(luò)中的自適應(yīng)加權(quán)池化
魔力語音
基于MATLAB的語音信號(hào)處理
電子制作(2019年14期)2019-08-20 05:43:38
基于MQ3與MP3的價(jià)廉物美的酒駕語音提醒器
電子制作(2019年9期)2019-05-30 09:42:10
基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識(shí)別研究
對(duì)方正在輸入……
小說界(2018年5期)2018-11-26 12:43:42
基于FPGA的同步機(jī)軸角編碼器
基于PRBS檢測(cè)的8B/IOB編碼器設(shè)計(jì)
德化县| 余江县| 合水县| 甘南县| 新竹县| 惠东县| 肥城市| 靖安县| 洪洞县| 东乌珠穆沁旗| 全椒县| 贡山| 平顶山市| 读书| 崇明县| 左贡县| 乌鲁木齐市| 浮梁县| 大新县| 犍为县| 永福县| 开江县| 绥阳县| 宜宾市| 闵行区| 漳浦县| 河津市| 兴宁市| 阳高县| 会宁县| 衡阳市| 丰台区| 嘉禾县| 长阳| 张家港市| 新乡县| 绥德县| 桐庐县| 虹口区| 凤阳县| 交城县|