阿里巴巴安全部 王 炎
淺談聲紋識別技術與安全
阿里巴巴安全部 王 炎
在這個移動互聯網大行其道的年代,人們不用互相見面就可以完成很多事情,比如社交、購物、網上開店、金融交易等等,但是如何驗證身份變成了人和人在不見面的情況下最難的事情。傳統的解決方案就是密碼或者秘鑰,它需要你記住或者存起來,容易忘又容易丟,還容易被黑客利用各種手段攻擊。有多少人使用“123456“這種簡單密碼在網絡上行走,他們就是黑客們最喜歡的目標; 你家的路由器是不是還在用”admin”這種默認密碼,這就是物聯網領域中安全最薄弱的環節。不過,好在我們每個人身上都長滿了“活密碼”,指紋、臉、聲音、眼睛等等,都是人和人之間相互區分的獨一無二的標識,我們稱之為“生物特征”。聲音就是這種一種可以反映人身份的生物特征,參考“指紋”的命名方式,我們可以叫它“聲紋”,見圖1。

圖1 各種生物特征比較
聲紋是指人類語音中攜帶言語信息的聲波頻譜,它同指紋一樣,具備獨特的生物學特征,具有身份識別的作用,不僅具有特定性,而且具有相對的穩定性。聲音信號是一維連續信號,將它進行離散化后,就可以得到我們現在常見的計算機可以處理的聲音信號,見圖2。

圖2 計算機可以處理的離散聲音信號
聲紋識別(也稱說話人識別)技術也如同現在在智能手機上應用十分廣泛的指紋識別技術一樣,從說話人發出的語音信號中提取語音特征,并據此對說話人進行身份驗證的生物識別技術。每個人都具有獨一無二的聲紋,這是由我們的發聲器官在成長過程中逐漸形成的特征。無論別人對我們的說話模仿的多么相似,聲紋其實都是具有顯著區別的。
現實生活中的“未見其人,先聞其聲”就是人類通過聲音去識別另一個人身份的真實描述,你媽甚至通過你電話里的一個“喂”字就知道是你,而不是隔壁老王家的兒子打的電話,這是我們人類經過長期進化所獲得到的超常的能力。雖然目前計算機還做不到通過一個字就判斷出人的身份,但是利用大量的訓練語音數據,可以學出一個“智商”還不錯的“聲紋”大腦,它在你說出8-10個字的情況下可以判斷出是不是你在說話,或者在你說1分鐘以上的話后,就可以準確地判斷出你是否是給定的1000人中的一員。這里面其實包含了大部分生物識別系統都適用的重要概念:1:1 和1:N,同時也包含了只有在聲紋識別技術中存在的獨特的概念:內容相關和內容無關。
對于一個生物識別系統而言,如果它的工作模式是需要你提供自己的身份(賬號)以及生物特征,然后跟之前保存好的你本人的生物特征進行比對,確認兩者是否一致(即你是不是你),那么它是一個1:1的識別系統(也可以叫說話人確認,Speaker Verification); 如果它只需要你提供生物特征,然后從后臺多條生物特征記錄中搜尋出哪個是你(即你是誰),或者哪個都不是你,那么它是一個1:N的識別系統(也可以叫辨認,Speaker Identification),見圖3。技術上,簡單的聲紋識別的系統工作流程圖來見圖4。

圖3 說話人確認和說話人辨認

圖4 聲紋識別工作流程圖
對于聲紋識別系統而言,如果從用戶所說語音內容的角度出發,則可以分為內容相關和內容無關兩大類技術。顧名思義,“內容相關”就是指系統假定用戶只說系統提示內容或者小范圍內允許的內容,而“內容無關”則并不限定用戶所說內容。前者只需要識別系統能夠在較小的范圍內處理不同用戶之間的聲音特性的差異就可以,由于內容大致類似,只需要考慮聲音本身的差異,難度相對較小; 而后者由于不限定內容,識別系統不僅需要考慮用戶聲音之間的特定差異,還需要處理內容不同而引起的語音差異,難度較大。
目前有一種介于兩者之間的技術,可以稱之為“有限內容相關”,系統會隨機搭配一些數字或符號,用戶需正確念出對應的內容才可識別聲紋,這種隨機性的引入使得文本相關識別中每一次采集到的聲紋都有內容時序上的差異,這種特性正好與互聯網上廣泛存在的短隨機數字串(如數字驗證碼)相契合,可以用來校驗身份,或者和其他人臉等生物特征結合起來組成多因子認證手段。
具體到聲紋識別算法的技術細節,在特征層面,經典的梅爾倒譜系數MFCC,感知線性預測系數PLP、深度特征Deep Feature、以及能量規整譜系數PNCC 等,都可以作為優秀的聲學特征用于模型學習的輸入,但使用最多的還是MFCC特征,也可以將多種特征在特征層面或者模型層面進行組合使用。在機器學習模型層面,目前還是N.Dehak在2009年提出的iVector框架一統天下,雖然在深度學習大紅大紫的今天,聲紋領域也難免被影響,在傳統的UBM-iVector框架下衍化出了DNN-iVector,也僅僅是使用DNN(或者BN)提取特征代替MFCC或者作為MFCC的補充,后端學習框架依然是iVector。
圖5示出了一個完整的聲紋識別系統的訓練和測試流程,可以看到在其中iVector模型的訓練以及隨后的信道補償模型訓練是最重要的環節。在特征階段,可以使用BottleNeck特征取代或者補充MFCC特征,輸入到iVector框架中訓練模型,如圖6所示。

圖5 聲紋識別算法的完整訓練和識別框架

圖6 使用BottleNeck特征訓練iVector模型
在系統層面,不同的特征及模型,可以從不同的維度刻畫說話人的聲音特征,加上有效的分數規整,將各子系統融合能有效的提高系統的整體性能。
聲紋識別作為一種安全身份認證手段,不可避免的要面臨非法用戶的攻擊風險。聲紋識別算法目前技術水平有限,很難識別聲音十分相似的兩人:現在大部分的算法都可以控制在誤識率在千分之一,即隨機1000個不同人的刻意攻擊,有可能會有一個人因聲音過于相似而通過。
2.1 熟人模仿攻擊
你身邊熟悉你的人模仿你的聲音,去攻擊你的聲紋賬戶,通過的概率比上述隨機攻擊會更大一些。當然,人與人之間的聲音本身有本質的不同,即便人耳不一定能聽出來,聲紋識別系統對這種差異是非常敏感的,模仿很難成功攻擊。
2.2 重放攻擊
如果你的聲音被某些別有用心的人錄下來,然后在聲紋登錄時播放你的聲音。當前,技術上對這種攻擊可以有兩種防范手段:活體檢測和隨機內容聲紋,活體檢測技術可以有效的識別出當前認證的聲音來自于真人還是錄音設備,而隨機內容聲紋在每次登錄的時候會提示用戶必須說隨機顯示出來的內容,只要說的內容不一致,認證就會失敗,這樣,讓提前錄好的聲音失效。
2.3 特定人聲音合成或聲音轉換
利用機器學習、深度學習等技術,通過對目標人的一段錄音進行建模,學習出目標人的聲音特質并將其參數化,然后將非目標人的聲音合成并轉化為目標人的聲音進行攻擊; 在深度學習技術流行之前,傳統的機器學習技術合成的聲音在真實度上比較差,但是近年類似google的WavNet,以及Adobe Project VoCo等技術,極大的提高了聲音合成的真實度,對聲紋識別算法造成了潛在的威脅。

圖7 聲紋驗證信號處理
聲紋識別技術使用便捷,受限制較少。硬件設備簡單,只需要有麥克風即可; 不受語種、方言、性別和年齡的影響。并且適合遠程使用,可適用于遠程控制與識別領域; 在用戶正常說話中,即可后臺遠程進行聲紋識別。用戶接受程度高:不易遺忘,防偽性能好、不易偽造或被盜。隨身“攜帶”,隨時隨地使用。
但是它同樣也有一些缺點,比如同一個人的聲音具有易變性,易受身體狀況、年齡、情緒等的影響。不同的麥克風和信道對識別性能有影響,環境噪音和混合說話人對識別有干擾,并且在部分公共場合,用戶不方便說話。
目前看來聲紋識別技術是未來的發展趨勢,隨著聲音合成技術的發展,對聲音活體檢測技術也提出了更高的要求。在大數據條件下,利用部分準確或不準確的說話人標注,自動建立說話人模型,具有重要的實際應用意義。
隨著數據資源的增多,對聲紋識別系統的檢索要求的相應時間也越來越短。充分利用移動互聯網時代產生的大量語音數據,發揮深度學習的數據驅動威力,可以將聲紋識別算法的準確率和魯棒性大幅提升。
12月份舉辦的阿里聚安全攻防挑戰賽中,聲紋身份驗證攻防閃亮登場。參賽者可以嘗試用聲音攻擊一套聲紋驗證系統,通過設計攻擊用的音頻騙過聲紋驗證系統,讓系統驗證成功。這是阿里聚安全在安全挑戰賽模式上的一大創新,相信未來會有更多新穎的安全攻防技術出現在各類挑戰賽中。