文章[1]主要針對的是語句長度不定,含有不相關信號的說話人識別。
深度網絡設計的關鍵在於主干(幀級)網絡的類型【the type of trunk (frame level) network】和有時間序列屬性的聚合方法【the method of temporal aggregation】。
文中提出了一個強大的說話人識別深度網絡,使用了一個“thin-ResNet” 網絡結構,以及一個基於字典的NetVLAD[2]或者GhostVLAD層去在時間軸上聚合特征,這個可端到端訓練。
文中實驗在VoxCeleb1測試集上進行,證明該方法只需要更少的參數,並且SR(speaker recognition)性能優越。同時,調研了語句長度對網絡性能的影響,得到結論:對於in the wild數據,a longer length is beneficial.
算法
對於SR,理想的模型應該有以下特性:1)處理任意長度的輸入,得到一個定長的utterance-level descriptor;2)輸出的descriptor應該是compat的,即低維表述,所需資源少,便於有效存儲和恢復;3)輸出descriptor應該是discriminative,例如不同說話人的descriptor之間的距離應該比同一說話人的大。
為了滿足上述條件,本文采用modified ResNet以全卷積方式來對輸入的2-D聲譜圖進行編碼,再使用一個NetVLAD/GhostVLAD層,沿時間軸進行特征聚合。這會產生定長的輸出描述符。直觀上,VLAD層可以被認為可訓練的判別聚類:每一個幀級別的描述符都會被softly分配到不同的clusters,剩下的會被編碼成為output features。為了有效驗證(低內存、相似度快速計算),文章進一步加了一個全連接層用於降維。因為整個網絡是端到端進行SR的,所以可以產生discriminative representations。網絡具體見圖1。
圖1:文中的網絡結構。由兩部分構成:特征提取(a shared CNN用於對spectrogram進行編碼)+聚合(aggregates all the local descriptors into a single compact representation of arbitrary length)
博客[3]中簡單總結了該網絡:
輸入:每幀257維向量,256維的頻率量+1維的DC量 |
主干網絡:Thin-ResNet,提取frame-level特征 |
NetVLAD或GhostVLAD層:將frame-level的特征轉換成utterance-level特征。大多數算法是采用Average pooling層直接對幀維度進行平均,這樣做的缺點是每幀的weight是一樣的,但是實際上每幀對結果的contribution肯定是不一樣的,比如有說話的幀肯定比沒說話幀的contribution高,本文采用的方法其實是自動學習給予每幀不同的權重。 |
trainning loss:標准的softmax loss和additive margin softmax(AM-Softmax) |
表1:用於幀級別特征提取的thin-ResNet。並未展示ReLU和batch-norm layers。每一行表示卷積濾波器的數目、尺寸、以及濾波器數目。這個結構只有3 million參數,而標准的ResNet-34有22 million個參數。
特征提取
第一步就是從聲譜圖中提取特征。當然任意網絡都可以用於本文的learning framework,作者選擇了a modified ResNet-34。和之前使用的標准ResNet比較,我們減少了每個residual block的通道數目,得到一個thin ResNet-34(見表1)。
NetVLAD
網絡的第二部分使用NetVLAD[2]來將幀級別的descriptors聚合為一個句子級別的向量。本小節簡單介紹了NetVLAD。上述thin-ResNet將輸入的聲譜圖映射為幀級別的descriptors,尺寸為
。然后NetVLAD層將dense descriptors作為輸入,並生成一個K*D維的矩陣V,其中K是chosen cluster的數目,D是每個cluster的維度。具體來說,descriptors矩陣V通過下式計算得到:
(1)
第一項對應於簇k的輸入向量xi的軟賦值權,第二項計算向量與簇中心之間的殘差。最終輸出是通過L2規范化和級聯得到的。為了保持較低的計算和內存,通過全連接(FC)層降維,選擇輸出維數為512。
我們還對最近提出的GhostVLAD層進行了實驗,其中some clusters沒有包含在最終級聯中,因此不參與最終表達,這些集群稱為“ghost clusters”(我們在實現中使用了兩個)。因此,在聚合幀級特征時,語音段中噪聲和非目標部分對正常VLAD clusters的貢獻實際上是down-weight的,因為它們的大部分權重都分配給了“ghost集群”。
實驗
數據集
文章在數據集VoxCeleb2(僅在“dev”分區上,其中包含5994位發言者的講話)上訓練了一個端到端的模型用於驗證,在VoxCeleb1的驗證測試集上進行測試。注意,VoxCeleb2的開發集與VoxCeleb1數據集是不相交的(即沒有共同的說話人)。
訓練損失函數
除了標准的softmax損失外,我們還在訓練時進行了additive margin softmax(AM-Softmax)分類損失的實驗,這種損失是通過在角空間中引入margin來提高驗證性能,計算方式如下:
其中Li指的是樣本被分類到正確類的成本,θy = arccos (wTx) 是指樣本特征(x)和決策超平面(w)之間的角度,這兩個向量都已經被L2正則化。目的是通過使cos(θyi)−m盡可能大,來最小化這個角。其中m指的 angular margin。超參數s控制着softmax loss的“temperature”,對分離得好的樣本,產生更高的梯度(並進一步縮小類內方差)。文章采用默認值m=0.4和s=30。
訓練細節
訓練過程中,文章使用一個固定尺寸的spectrogram對應一個2.5秒的時間片,這個時間片從每個語句中隨機抽取。
spectrograms由一個滑動的漢明窗(窗長25ms,步長10ms)生成。文章采用512點FFT,得到256個頻譜分量,再加上每幀的直流分量,則每2.5秒的數據就會得到257×250(頻率×時間)的短時傅里葉變換(STFT)。
spectrogram通過在每個時間步長去均值並除以標准差進行歸一化的(數據變成均值為0,方差為1)。不需要VAD或者自動移除靜音段。
文章使用初始學習率為10-3的Adam 優化器,每36個epochs后學習率除以10?直到收斂。
結果及分析
首先對比了使用不同loss訓練的NetVLAD和GhostVLAD架構的性能,然后研究語句的長度對於性能的影響。
VoxCeleb1上的驗證
從VoxCeleb1數據集中選取三個不同的測試列表對訓練后的網絡進行評估:(1)原始的VoxCeleb1測試集,包含40個說話者;(2)擴展的VoxCeleb1- E列表,使用整個VoxCeleb1(訓練和測試分割)進行評估;(3)具有挑戰性的VoxCeleb1-H列表,其中,測試對來自具有相同性別和國籍的身份。
此外,文章發現VoxCeleb1-E和VoxCeleb1-H列表中有少量錯誤,因此也對這兩個列表的清理版本進行了評估,並公開發布。該網絡在測試語句段的整個長度上進行測試。測試時間增加,可能會導致性能的輕微提高,但文章未使用任何的測試時間增量。
表2比較了文中模型與當前先進算法在原始VoxCeleb1測試集的性能,實驗表明文中算法性能最優。采用標准的softmax loss和NetVLAD聚合層,性能顯著優於原始的基於Resnet的架構(EER為3.57% vs. 4.19%),同時所需的參數要少得多(1000萬 ?vs. 2600萬)。將標准softmax loss替換為additive margin softmax (AM-Softmax),進一步提高了性能(EER=3.32%)。GhostVLAD層將無關信息排除在聚合之外,再次提升了性能(EER=3.22%)。
VoxCeleb1-H這個測試集非常有挑戰性,文章中的方法比原來ResNet-based架構也好了很多(EER,5.17% vs 7.33%)。與文中網絡最相似的架構是基於字典的方法,文中方法的性能也超過了它(3.22% vs 4.48%)。
文章發現,基於temporal average pooling(TAP)特征的softmax loss訓練的結果非常差(EER為10.48%)。推測是因為從TAP得到的特征通常在優化類內差異方面表現比較好(即分開不同的說話人),但不擅長降低類內變化(即,使相同說話人的特征更加緊湊)。因此,如TAP所示,contrastive loss with online hard sample mining 導致了顯著的性能提升。這也有可能提高NetVLAD/GhostVLAD池化的性能。
表2:原始VoxCeleb1測試集、VoxCeleb-E和VoxCeleb-H的驗證結果。其中TAP表示時序平均池化;SAP表示自關注池化層。
關於GhostVLAD的實驗
表3研究了GhostVLAD層的clusters數目的影響。證明了VLAD聚合非常魯棒(對於clusters數目以及兩個不同的loss函數而言) 。
表3:在原始VoxCeleb1測試集上的驗證結果。所有模型都采用了相同的Thin Resnet-34結構,並且變化VLAD clusters數目和loss函數。
數據長度的性能測試
表4展示了不同測試數據段長度對SR性能的影響。為了對最長6秒的長度進行充分比較,文章中將測試數據集(VoxCeleb1)限制為6秒或更長(87,010個片段,占總數據集的56.7%)。為了生成驗證對,對於VoxCeleb1數據集中的每個說話者(總共1251個說話者),隨機抽取100個正對和100個負對,得到25,020個驗證對?測試期間,每個驗證對,隨機裁剪出長度為2s、3s、4s、5s和6s的片段。實驗重復三次,並且計算均值和標准差。
表4:不同長度語句下的算法性能
如表4所示,驗證集的性能與序列長度確實存在很強的相關性。對於in the wild 序列來說,有的數據有可能是noise、靜音、或者非目標人語音,並且一個短序列有可能很不幸地被這些不相關的信息占據主要。 隨着時間長度的增加,也更有可能從目標說話人那里捕獲相關語音信息。
結論
本文提出了一個強大的說話人識別網絡,使用一個“thin-Resnet”主干架構,以及一個基於字典的NetVLAD和GhostVLAD層來跨時間聚合,可以進行端到端訓練。該網絡在VoxCeleb1測試集上實現了最優的說話人識別性能,同時比以前的方法需要更少的參數。文章還研究了語句長度對性能的影響,並得出結論,對於in the wild數據,更長的長度是有益的。
參考
[1] Xie W , Nagrani A , Chung J S , et al. Utterance-level Aggregation For Speaker Recognition In The Wild[J]. 2019.
[2] Arandjelovic R , Gronat P , Torii A , et al. NetVLAD: CNN architecture for weakly supervised place recognition[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017.