閆 佳,馮 爽
(1.中國傳媒大學計算機與網絡空間安全學院;2.智能融媒體教育部重點實驗室;3.媒體融合與傳播國家重點實驗室,北京 100024)
自動說話人驗證技術[1]越來越多地應用在安全領域,但是結果[2]顯示它的魯棒性不是很好,很容易受到各種各樣的欺騙。這些欺騙方法主要包括語音轉換、語音合成和重放等。為此,ASV spoof[3-5]發起相關競賽,在自動說話人驗證(Automatic Speaker Venification,ASV)方面進行反欺騙研究。ASVspoof 2013 指出這一嚴重的問題,但沒有具體解決方案;ASVspoof 2015 專注于尋找語音合成和語音轉換(Logical Access,LA)對策,ASVspoof 2017 專注于區分真實音頻和重放音頻(Physical Access,PA)方法;ASVspoof 2019則涵蓋了LA 和PA,但分為兩個子任務,等誤差率(Equal Error Rate,EER)是其共同的度量標準。
傳統的檢測欺騙語音方法是使用常數Q 倒譜系數(Constant Q Cepstrum Coefficients,CQCC)[6]或線性頻率倒譜系數(LFCC 特征)和高斯混合模型(Gausssian Mixture Model,GMM)分類器。隨著深度學習的發展,卷積神經網絡(Convolutional Neural Networks,CNN)表現比直接使用GMM 要好得多。CNN 可以接收低級的手工制作特征輸入,隨著層數的加深可得到更為高級的特征表示,然后通過某種聚合方式將幀級特征聚合成話語級別特征。端到端的CNN 可通過優化某種損失函數直接得到最終的得分。通過選定一個閾值來確定某段語音是真實語音(得分高于閾值)或是虛假的欺騙語音(得分低于閾值)。但是常用的一些CNN 變體(如Resnet[7]、VGG 等)都有網絡層數多、計算量大等問題,存儲空間以及能耗方面開銷巨大。為此,模型輕量化是目前的研究方向。MobileNet 在對象檢測、細粒度分類、人臉識別和大規模地理定位等方面證實它在模型參數和速度方面的有效性。
在說話人識別領域和ASVspoof 領域,常用的聚合方法有平均池化[8-9]、全局平均池化[10]、統計池化[11]、可學習的字典編碼池化[12]、注意力池化[13]、注意統計池化[14]等。文獻[15]提出一種基于GhostVLAD 的聚合方法,在說話人識別領域能夠很好區分不同的說話人。本文是第一個使用GhostVLAD 聚合方法來區分真實語音和欺騙語音的。
之前ASVspoof 2017 和ASVspoof 2019 的參賽者構建了幾種不同的檢測欺騙語音方案。文獻[16]使用TDNN 網絡從MFCC 中生成x-vector 嵌入,這些嵌入聯合建立27 種環境和9 種欺騙類型模型;文獻[17]針對不同特征使用兩個VGG Net 的融合網絡;文獻[18]提出一個有助于多任務學習的蝴蝶單元來傳播二進制決策任務和其他輔助任務之間的共享表示;文獻[19]從數據增強、特征表示、分類和融合4 個方面優化欺騙檢測系統的管道;文獻[20]對真實語音與欺騙語音的全局概率累積函數進行實驗研究;文獻[21]使用高分辨率的頻譜圖探索既包含幅度信息又包含相位信息和功率譜密度信息的互補信息;文獻[22]提出在真實的回放對基礎上建立回放設備特征提取器方法。
本文主要貢獻有3 點:①設計并實現了一個基于Mo?bileNet 的變體模型來執行語音的欺騙檢測;②比較兩種不同的特征在MobileNet 下的性能;③探索了GhostVLAD 聚合方法在語音欺騙檢測中的性能。
在神經網絡訓練中,數據增廣(Data Augmentation,DA)能夠很好地提高模型的魯棒性。語音數據增廣方法主要有兩種:①利用外部數據集進行數據擴充,如VoxCeleb、AISHELL[23-24]、CN-CELB[25]等;②利用數據本身,比如添加各種噪音(如背景音樂、嘈雜人聲、不同環境音)和混響,進行速度擾動等數據增廣。具體為隨機使用0.9、1.0 和1.1 系數對ASVspoof2019 數據集中的語音進行速度擾動,隨機使用Simulated Room Impulse Response Database 中不同房間的混響設置來添加混響。是否進行速度擾動、是否添加混響、是否保持原樣的概率都是1/3,這樣數據集就被擴充了1 倍,即整體數據量是原來的2 倍。
CQCC:該方法使用ASVspoof 2019 官方提供的Matlab程序來提取音頻的CQCC 特征。CQCC 特征通過常數Q 變換與傳統倒譜分析相結合得到。它對一般形式的欺騙語音非常敏感,并在各種特性中產生優異性能。CQCC 的更多詳細信息見文獻[6]、[26]。
振幅頻譜圖(Amplitude spectrum diagram,spec):深度神經網絡模型的優點是它們能夠從原始輸入數據中自動學習高級特征表示,這種能力使得深度神經網絡模型處理原始輸入的性能優于處理人類手工制作的特征性能,故該方法選擇比梅爾頻率倒譜系數(Mel-Frequency Cepstral Co?efficients,MFCC)或CQCC 都要更原始一些的振幅頻譜作為輸入,希望依靠神經網絡將原始輸入轉換成網絡隱藏層中的更高層次表示。該方法使用長度為50ms、偏移量為20ms的漢明窗和2 048 個頻率間隔(FFT bin)提取頻譜圖,使用高分辨率的特征表示,即使用2 048 個頻率間隔而不是常用的512 個頻率間隔。
該方法沒有選擇MFCC 或i-vector 作為輸入特征,因為他們最初以最大程度區分不同的說話人而設計。另外,有文獻指出傳統的MFCC 特征可能會丟失一些鑒別真實語音與欺騙語音的信息;文獻[27]的實驗顯示i-vector 效果不好。
傳統卷積神經網絡如VGG 或Resnet 的內存需求大、運算量大,導致無法在移動設備以及嵌入式設備上運行。MobileNet 是由Google 團隊在2017 年提出的,專注于移動端或者嵌入式設備中的輕量級CNN 網絡[28]。相比傳統卷積神經網絡,在準確率小幅降低的前提下大大減少了模型參數與運算量。據文獻[28]中的圖8 顯示,MobileNet V1 相比VGG-16 在數據集ImageNet 上準確率減少了0.9%,但模型參數只有VGG-16 的1/32。MobileNetV2 相比MobileNetV1準確率更高、模型更小[29]。MobileNetV3 則集合了Mobile?NetV1 的深度可分離卷積、MobileNetV2 的線性瓶頸逆殘差結構和MnasNet 的基于擠壓激勵結構的輕量級注意力模型等3 種結構優點[30-31]。該方法使用了MobileNetV2(α=1.0,β=224)和MobileNetV3-large 網絡來探索其在檢測虛假語音方面的效果。MobileNetV2 的基礎結構與文獻[29]中一致,MobileNetV3-large 的基礎結構與文獻[30]中一致。
GhostVLAD[32]是在NetVLAD[33]的基礎上提出的,用于人臉識別聚類時自動削減模糊圖像的權重。面部圖像可能在姿勢、表情、光照等各方面質量有所不同。有些人臉非常模糊,對聚類不利,GhostVLAD 會對輸入的人臉質量自動計算權重。一般把一些噪聲數據自動分配給一個“Ghost”類的想法具有普遍適用性,這種做法可以去除噪聲較大或損壞嚴重的數據。在聚合層也就是GhostVLAD 層中包含了Ghost 類。Ghost 類不利于聚類的樣本,高質量的樣本信息對聚類貢獻很大。Ghost 類增強了網絡處理低質量樣本能力,提取的嵌入可以軟分配到Ghost 類中,但不包括在聚合中。有關GhostVLAD 的公式等詳細信息可以參考文獻[32]。文獻[15]中的實驗證實了GhostVLAD 方法在說話人識別中表現良好,探索了其在檢測虛假重放語音方面的應用。
使用PyTorch 實現網絡模型,使用帶有NVIDIA GPU 的臺式機訓練模型。數據增強過程使用Kaldi 中的方法,CQCC 特征提取使用Matlab,振幅頻譜圖則使用Python 中的Scipy.signal.spectrogram。
該方法使用ASVspoof 2019 組織者提供的PA 和LA 數據集,它們是從20 名說話者(8 名男性、12 名女性)中以16 kHz 采樣率和16 位記錄的話語。各個數據集中真實語音和欺騙語音數量見表1,有很大的類別不平衡問題。其中,PA 中的欺騙語音是在27 種不同的錄制聲學環境和9 種不同質量的重放配置下生成的。LA 中的欺騙語音是根據兩個語音轉換算法和4 個語音合成算法生成的。LA 測試集包含沒有在訓練集和開發集中出現的欺騙語音生成算法。

Table 1 Number comparison of real speech and spoofed speech in PA and LA表1 各數據集中真實語音和欺騙語音數量對比
使用ASVspoof 2019 組織者提供的CQCC-GMM 和LF?CC-GMM 作為基線系統,更多詳細信息可以參考官方主頁。官方基線系統是基于20 維LFCC 和30 維CQCC 的,兩種方法都提取了靜態系數、增量系數和雙增量系數,后端是一個二分類的GMM,有512 個分量。
使用等錯誤率(Equal Error Rate,EER)作為本次實驗的評估指標。在選定某個閾值之后,對作為CNN 輸出結果的得分可計算出兩種錯誤率,即錯誤拒絕率和錯誤接受率。通過調整閾值可以得到這兩種錯誤率相等或最接近的一個操作點,即EER。
由于本次數據中欺騙語音數量遠大于真實語音數量,因此在每個batch 的數據采樣中會隨機選擇和真實語音同等數量的欺騙語音進行網絡訓練,以通過提高epoch 的數量來使用所有數據。
為了適應MobileNet 的網絡輸入尺寸,使用裁剪長話語或復制短話語的方法得到一個固定大小為224×224 的頻譜圖,裁剪剩余數據作為一個新的數據加入到原有數據中,在最開始使用1×1 的卷積得到一個3 通道的輸入。GhostV?LAD 實驗則是把網絡的最后一個池化層替換成GhostVLAD層,使用文獻[14]中效果最好的參數設置,即vlad clusters設為8,ghost clusters 設為2。使用卷積核(即過濾器)的數量來控制vladclusters 和ghostclusters 的數目。
最后的分類層中只有兩個節點,表示為真實語音和欺騙語音。在交叉熵損失監督下以端到端的方式優化整個檢測系統,最終的話語水平得分可以直接從最后一層輸出中獲取。
表2 展示了幾個配置不同的模型和基線算法在開發集和測試集上的EER 情況。該方法暫時沒有對得分進行融合,只是進行了幾個單系統的性能比較。表2 第1-6 行展示在PA 數據集上的實驗結果,由最后一列數字可以看出,4 種單系統性能均超過了兩種基線系統。性能最好的單系統在第5 行,EER 是6.84,相比基線最好的結果11.04 降低了38%。然而GhostVLAD 方法并沒有表現出期望的結果,原因需要進一步探究。
圖1 展示了不同配置條件下CQCC 和spec 兩種特征在PA 測試集上的性能曲線。橫軸為9 種不同的配置,縱軸為EER。模型結構使用的是MobileNetV3-large,聚合方法為Average。每個配置用兩個字母命名,第一個字母代表錄音設備與真實說話人之間的距離,“A”表示10-50cm,“B”表示50-100cm,“C”表示>100cm;第二個字母表示重放設備的質量,其中A 表示質量非常高,B 表示高,C 表示低。結果表明,隨著距離的減小和重放設備質量的提高,反欺騙任務變得越來越困難,在設置“AA”時會獲得最差的結果。
表2 中第7-12 行展示了在LA 數據集上的實驗結果。由最后兩列數字比較可知,開發集的結果與測試集結果相差較大,這可能是由于測試集中包含了更多的未知欺騙類型。在LA 條件下,GhostVLAD 方法要比PA 情況下效果好很多。第12 行含有GhostVLAD 方法的模型在測試集上得到了最佳的EER 7.04,相比基線最好的結果8.09 降低了13%。由于不同的語音轉換或語音合成方法可能對不同特征造成不同程度的損失,故需要進一步區分具體情況研究不同的欺騙方法。

Fig.1 Model performance curves under different playback configurations圖1 不同重放配置條件下模型性能曲線
總的來說,經過數據增廣后,本文模型在PA 條件下比LA 條件下表現得更好,這可能是由于在PA 中特征來自于錄制環境或重放設備,更易于學習和泛化。而在LA 中,特征的不同部分被不同的算法修改,再加上測試數據集中的大多數欺騙類型是未知的,在訓練集中沒有出現過,因而更增加了模型的挑戰性。

Table 2 Score comparison of different model configurations表2 不同配置的得分對比
本文將MobileNet 和GhostVLAD 方法應用于欺騙音頻檢測,可同時適用于PA 情況和LA 情況。結合兩種不同的特征對模型性能進行比較。根據ASVspoof 2019 測試集上的結果可知,該模型對重放語言欺騙(PA)將EER 指標降低了38%,針對語音合成或語音轉換欺騙(LA)將EER 指標降低了13%。對于GhostVLAD 的超參數選擇還需進行更多實驗。后續研究方向是如何更好地提高模型對未知欺騙類型的泛化能力。可能的方法有:①使用特征融合技術,把互補的特征拼接起來再輸入網絡;②對不同的網絡進行集成,這樣可以訓練網絡相互協作,獲得更好的融合效果。