王 泳,蘇卓藝,朱錚宇,2
(1.廣東技術師范大學 網絡空間安全學院,廣東 廣州 510665;2.華南理工大學 音頻、語音與視覺處理實驗室,廣東 廣州 510641)
語音欺騙可以分為兩類[1]:① 假冒欺騙,即利用某種手段產生或獲得被假冒的目標人物的語音,從而令識別系統誤判該語音為被假冒人所說,主要包括語音轉換(Voice Conversion,VC)、語音合成(Speech Synthesis,SS)和語音重播等操作;② 隱藏欺騙,即通過變換說話人的聲音(沒有模仿任何目標人物)令識別系統無法判斷該說話人的身份,此類操作一般也統稱為語音變換(Voice Transformation,VT)欺騙。已有研究[2-3]表明,兩類欺騙均可輕易騙過目前的說話人識別(Automatic Speaker Recognition,ASR)系統,對社會安全構成威脅。
目前相關的安全研究主要集中在假冒欺騙的檢測上[4-21],而對VT欺騙的檢測研究則相對非常不足。文獻[22-24]提出利用梅爾頻率倒譜系數特征和支持向量機分類器的VT檢測算法,跨數據庫的識別率低于90%,且該方法計算量非常大。LIANG等人提出一種基于卷積神經網絡(Convolutional Neural Network,CNN)[25]的VT檢測方法,但準確率小于95%,表明實際應用中仍需要改進。
事實上,假冒欺騙通常需要大量的目標說話人的語音信息,實現成本相對較高;而隱藏欺騙不需要任何額外的信息,且已有成熟的算法產生自然度極高的欺騙語音,已集成在眾多的音頻、語音處理工具中,相較假冒欺騙更多地運用在各種欺詐案件之中。因此,研究VT隱藏欺騙的檢測具有重要的理論和實用價值。另一方面,目前已有的檢測方法一般采用人工設計特征和分類識別結合的傳統機器學習方法,特征設計比較困難且不穩定,影響檢測效果。綜合以上情況,并鑒于深度學習框架具有自動提取深度特征的功能,筆者提出了一種基于密集卷積神經網絡的VT欺騙檢測方法,總共包含135層的網絡層,該網絡通過最大化短路徑的連接強化數據傳輸,可同時利用深層和淺層邊緣特征進行分類,抑制退化現象。
語音欺騙操作涉及改變信號的頻域成分。由傅里葉變換性質可知,頻域的變化會帶來信號的時長(節奏)變化。但通常情況下,欺騙操作希望保持時長(節奏)不變。另外,由于頻域的離散化,離散傅里葉變換得到的系數一般并非真實頻率,而是與真實頻率有一定誤差。為此,眾多音頻處理工具中的VT操作是基于相位-聲碼器原理,即利用短時傅里葉變換(STFT)中的相位信息估計信號的真實頻率(瞬時頻率),并進而修改瞬時頻率。此方法既能提高頻率估計精度,從而得到聽覺更自然的變換語音,同時亦打破由傅里葉變換造成的時域和頻域之間的關聯,在伸縮瞬時頻率的同時保持節奏不變。VT操作[26]的一般過程如下。
(1) 對信號x(n)分幀、加窗(窗函數可采用漢寧窗或海明窗):
(1)
(2) 計算瞬時幅值:
(2)
(3) 通過本幀與前一幀的相位關系計算瞬時頻率:
(3)
其中,Fs是抽樣頻率,Δ是相對中心頻率的偏移頻率。具體計算過程與文中內容無關,不再贅述;若有興趣則請參閱文獻[26]。
(4) 頻譜伸縮。首先是瞬時幅值線性插值:
|F(k′)|=μ|F(k)|+(1-μ)|F(k+1)|, 0≤k (4) 接著進行頻線搬移: ω′(kα)=ω(k)α, 0≤k (5) 在不會引起誤會的前提下,仍記搬移之后的瞬時頻率為ω(k)。 (5) 由瞬時頻率計算瞬時相位φ(k),獲得變換后的快速傅里葉變換系數: F(k)=|F(k)|exp[jφ(k)] 。 (6) (6) 對F(k)進行快速傅里葉變換反變換,即可獲得變換后的信號。 根據語音學原理,α可以表示為以半音s為自變量的方程[27],其表達式為 α(s)=2s/12, (7) 其中,可以取[-12,+12]范圍內的任何整數值,代表不同的偽裝程度。偽裝程度過低,會與原始語音非常接近;偽裝程度過高,容易引起不自然的聽覺效應,這兩種情況均不容達到欺騙目的。因此,文中考慮的偽裝程度為s取[-8,-4]和[+4,+8]兩個范圍內的值,這兩個范圍具有最強的欺騙效果。 根據前面描述的VT欺騙原理,VT操作會向語音信號的頻譜引入變化,這些頻率成分的變化可以作為區別原始語音和偽裝語音的依據。另外,直接的時域采樣數據的特征分布通常非常稀疏,并不適用于卷積神經網絡,而時頻圖的語音特征分布則相對密集,更有利于神經網絡提取特征。因此,筆者將時頻圖作為網絡的輸入數據。 常規的卷積神經網絡為前一層網絡的輸出Xl-1傳送到下一層作為輸入,經過非線性操作Hl輸出Xl,即 Xl=Hl(Xl-1) 。 (8) 此非線性操作一般包括卷積、池化以及激活函數。 一般情況下,為了提取到更深層的特征用于分類,會設計出層數較多的模型。但隨著網絡層數的加深,網絡在訓練過程中的前傳信號和梯度信號在經過若干層之后會逐漸消失,從而會出現訓練到一定程度時,訓練精度隨著訓練次數的增加而緩慢升高,而測試精度卻反而下降的情況,稱為退化現象。為解決退化問題,殘差網絡(ResNets)[28]、高速公路網絡(Highway Networks)[29]和分形網絡(FractalNets)[30]中都提出了一種數據短路徑(Skip-Layer)技術來使得信號可以在輸入層和輸出層之間高速流通。核心思路是通過創建一個跨層連接來連通網絡中的前后層,從而抑制退化現象,即 Xl=Hl(Xl-1)+Xl-n, (9) 其中,Xl-1代表短路徑。 然而,這種連接方式導致許多網絡層貢獻很小,卻占用大量計算。為此,筆者進一步拓展加入短路徑這種思路,提出了一種改進結構的密集卷積神經網絡(DenseNet)。具體做法是:為了最大化網絡中所有層之間的信息流,將網絡中的所有層兩兩進行連接,使得網絡中每一層都接受它前面所有層的特征作為輸入[31]。即在此結構中,任何層都直接連接到網絡中的所有后續的層,其表達式為 Xl=Hl([X0,X1,…,Xl-1]) , (10) 其中,X0,X1,…,Xl-1表示l層前面所有層的輸出,[…]表示連續操作。此外,密集卷積神經網絡中每個網絡層都有k個特征映射,得到k個特征圖,k通常設置為一個較小的值。 這種密集連接方式相對于前面提到的網絡具有顯著的優勢:① 每層的輸出特征圖都是之后所有層的輸入,保證了層間最大的信息流,增強了特征傳播;② 網絡層變得更窄(即k值變小),減少了參數數量,減輕了退化問題,并且支持有限神經元的復用。另外,參數數量減少亦產生正則化效果,對過擬合有一定的抑制作用;③ 不需要重新學習冗余的特征圖,更利于模型的訓練。 基于2.1節介紹的網絡結構,筆者進一步構建135層密集神經網絡分類模型(135-DenseNet),結構如圖1所示。輸入是語音信號的時頻圖,圖片大小為90×88。本網絡使用長寬等長的卷積核和池化,較適合長寬等長的輸入圖片。利用Matlab中的spectrogram計算時頻圖,當片段長度為1 s、采樣率為8 kHz且窗長度取127時,獲得的視頻圖大小為90×88,最接近正方形,故輸入時頻圖取90×88。網絡由1個初始化層(initial layer)、3個密集模塊(dense block)、2個轉換層(transition layer)、1個全局池化層(global pooling layer)以及1個線性層(linear layer)組成。3個密集模塊分別由6層、12層和48層瓶頸層(bottleneck layer)組成。線性層是一個完整的全連接層,利用softmax輸出“真實”和“欺騙”兩個概率。 各層的內部結構如圖2所示。圖2中k表示的是卷積核的數量。每個卷積瓶頸層包含2個卷積層,每個轉換層包含1個卷積層,這樣整個網絡總共包含2×(6+12+48)+1+1+1=135個卷積層。值得注意的是,瓶頸層包含1個1×1卷積層和1個3×3卷積層,對比一般的兩個3×3的卷積層減少了計算。轉換層的作用是連接兩個相鄰的模塊且可以減少特征圖的大小。 筆者以其中一段語音作為例子,其原始語音及欺騙語音的時頻圖以及圖1中模塊1的特征映射在圖3中給出。筆者知道,通常原始語音的時域特征分布過于稀疏,不利于卷積神經網絡提取特征。而從圖3(a)中可以看出,時頻圖具有相對集中的紋理結構,意味著特征相對集中,更有利于神經網絡的特征提取。從圖3(b)和(c)中可以看出,該神經網絡能有效地捕獲有用特征。 實驗中使用了3種語料庫,分別是Timit(6 300個片段,630個說話人)、NIST(3 560個片段,356個說話人)和UME(4 040個片段,202個說話人)。語料庫都是WAV格式,8 kHz采樣率,16 bit量化和單聲道。每個語料庫分為以下兩組: (1) 訓練集:Timit-1(3 000個片段),NIST-1(2 000個片段),UME-1(2 040個片段); (2) 測試集:Timit-2(3 300個片段),NIST-2(1 560個片段),UME-2(2 000個片段)。 每個片段被進一步切割成多個1 s的片段。每組1 s片段的數量如表1所示。 (a) 原始語音時頻圖 (b) 欺騙語音(變換工具Audacity,偽裝程度系數S取+6)時頻圖 (d) 欺騙語音時頻圖經由神經網絡模塊1后的特征映射 表1 每個語料庫中的1 s片段數 本實驗考慮Audacity、Cool Edit、PRAAT和RTISI等4種常見的欺騙方法(工具),偽裝因子在[-8,-4]和[+4,+8]之間。由于欺騙樣本的數量是真實樣本的40倍,為解決此數據不平衡的問題,在計算真實語音的時頻圖時,每次移動200個采樣點計算一個頻譜圖,使真實樣本的數量與欺騙樣本的數量相等。 筆者使用ADAM優化器來訓練帶有L2正則化的密集卷積神經網絡損失函數,其中β1和β2分別為第1指數和第2指數衰減率估計,大小為0.900和0.999。學習率和舍棄率分別設置為0.000 1和0.300 0。訓練批次數為100 000次,批次大小為64個。采用檢測準確率d來測量模型的性能,即 d=(Gd+Sd)/(G+S) , (11) 其中,G和S分別為測試集中真實和欺騙片段的數量,Gd和Sd分別為從G中正確檢測到的真實片段和從S中正確檢測到的欺騙片段的數量。 測試集和訓練集來自同一個語料庫。該方法的檢測結果和其他方法的結果如表2所示。從表2可以看到,筆者方法的平均檢測準確率比LIANG等人采用傳統CNN模型的方法高2.58%,比WU等人提出的MFCC-SVM方法高3.66%。 筆者提出的方法優于另外兩種方法,是因為DenseNet模型比常規的CNN擁有更多的網絡層,它可以提取更多更深層次的特征以作分類。此外,在常規的CNN中,決策僅僅是由深度特征決定的。但在DenseNet中,由于連接方式密集,決策既具有深度特征又參考了早期的邊緣特征,從而進一步提高了檢測的準確率。 表2 同源語料庫測試的檢測準確率 % 在現實場景中,測試語音和訓練語音可能有不同的來源,所以它們可能具有不同的特征。因此,筆者進行了跨語料庫的評估,以測試所提方法的泛化能力。實驗選取3個語料庫中的一個作為測試數據集,另外兩個庫作為訓練數據集,實驗結果如表3所示。筆者可以看到,實驗1和實驗2具有優良的結果,但實驗3并不理想。筆者分析的原因是NIST的數據量遠大于表1所示的另外兩組,其訓練得到的模型具有更好的泛化能力。在LIANG等人的方法[25]中,實驗1的準確率約為94.37%,而筆者的準確率約為96.45%,說明筆者提出的方法優于LIANG等人的方法。其他兩個方案的結果沒有在LIANG等人的實驗中顯示。 表3 跨語料庫檢測準確率 % 在實際應用中,錄音和傳輸過程可能會引入噪聲,影響檢測的準確率。在這部分,筆者將高斯白噪聲加入到數據集中以評估其對噪聲的魯棒性。具體來說,筆者在每個干凈的語音訓練集上分別加入10 dB、20 dB和30 dB的高斯噪聲,然后利用加噪數據集和干凈數據集對網絡進行訓練。 在測試中,筆者在每個干凈測試集上分別加入10 dB、15 dB、20 dB和30 dB的高斯噪聲,然后測試每個加噪測試集和每個干凈測試集的正確率,如表4所示。從表4第4列可以看出,即使在加入10 dB信噪比噪聲的情況下,準確率基本保持在90%左右,說明筆者的方法對噪聲攻擊具有良好的魯棒性。需要注意的是,15 dB噪聲的數據集是沒有出現在訓練集中的,其測試結果在第4列的數據中顯示。筆者可以看到,與第3、5、6、7列中的其他條件相比,即使沒有15 dB的訓練樣本,亦獲得較高的測試準確率。 表4 噪聲條件下的檢測準確率 % 由于音頻壓縮在存儲與傳輸中幾乎是必需的,在本節中測試文中方法對MP 3壓縮的魯棒性。筆者分別對訓練集和測試集進行MP 3壓縮,壓縮比為16∶1,實驗準確率如表5所示。在壓縮情況下,平均準確率約為92%,與非壓縮情況相比,經過壓縮的語音檢測準確率只有輕微的下降,說明該方法具有較強的抗壓縮能力。 表5 在壓縮和非壓縮情況下的檢測準確率 % 筆者提出了一種基于密集卷積神經網絡的欺騙語音檢測方法。所設計的135層密集神經網絡能自動提取淺層的特征以及深層的邊緣特征并用于分類。實驗結果表明,其檢測性能優于目前已有的方法。并且通過對卷積核的優化和瓶頸層的使用提高了計算效率。未來的工作將集中在應用更深層次的網絡結構來提取更深層次的特征,進一步提高準確率。
2 模型框架說明
2.1 密集神經網絡
2.2 135層密集神經網絡
3 實驗結果
3.1 實驗語料庫和設置




3.2 同源語料庫測試

3.3 跨語料庫評估

3.4 噪聲魯棒性

3.5 壓縮魯棒性

4 結束語