AI_聲紋識別綜述

聲紋識別,也稱作說話人識別,是一種通過聲音判別說話人身份的技術【比如:微信的語音登錄】。從直覺上來說,聲紋雖然不像人臉、指紋的個體差異那樣直觀可見,但由於每個人的聲道、口腔和鼻腔也具有個體的差異性,因此反映到聲音上也具有差異性。如果說將口腔看作聲音的發射器,那作爲接收器的人耳生來也具備辨別聲音的能力。

最直觀的是當我們打電話給家裏的時候,通過一聲“喂?”就能準確地分辨出接電話的是爸媽或是兄弟姐妹,這種語音中承載的說話人身份信息的唯一性使得聲紋也可以像人臉、指紋那樣作爲生物信息識別技術的生力軍,輔助甚至替代傳統的數字符號密碼,在安防和個人信息加密的領域發揮重要的作用。本文意在和讀者一起分享聲紋識別中主流的技術以及優圖實驗室在聲紋識別的研發積累中取得的成果,希望能讓讀者對於聲紋識別這個糅合語音信號處理+模式識別,且理論研究與工程背景兼具的領域有一個基本又全面的認識。

基本原理

聲紋識別是通過對一種或多種語音信號的特徵分析來達到對未知聲音辨別的目的,簡單的說就是辨別某一句話是否是某一個人說的技術。

該項技術最早是在40年代末由貝爾實驗室開發,主要用於軍事情報領域。隨着該項技術的逐步發展,60年代末後期在美國的法醫鑑定、法庭證據等領域都使用了該項技術,從1967年到現在,美國至少5000多個案件包括謀殺、強姦、敲詐勒索、走私毒品、賭博,政治腐敗等都通過聲紋識別技術提供了有效的線索和有力的證據。特別強調的是,聲紋鑑別目前已經是公安部的標準,是可以作爲證據進行鑑定的。

聲紋識別的理論基礎是每一個聲音都具有獨特的特徵,通過該特徵能將不同人的聲音進行有效的區分。

這種獨特的特徵主要由兩個因素決定:

  1. 第一個是聲腔的尺寸,具體包括咽喉、鼻腔和口腔等,這些器官的形狀、尺寸和位置決定了聲帶張力的大小和聲音頻率的範圍。因此不同的人雖然說同樣的話,但是聲音的頻率分佈是不同的,聽起來有的低沉有的洪亮。每個人的發聲腔都是不同的,就像指紋一樣,每個人的聲音也就有獨特的特徵。
  2. 第二個是發聲器官被操縱的方式,發聲器官包括脣、齒、舌、軟齶及齶肌肉等,他們之間相互作用就會產生清晰的語音。而他們之間的協作方式是人通過後天與周圍人的交流中隨機學習到的。人在學習說話的過程中,通過模擬周圍不同人的說話方式,就會逐漸形成自己的聲紋特徵。

因此,理論上來說,聲紋就像指紋一樣,很少會有兩個人具有相同的聲紋特徵。

美國研究機構已經表明在某些特點的環境下聲紋可以用來作爲有效的證據。並且美國聯邦調查局對2000例與聲紋相關的案件進行統計,利用聲紋作爲證據只有0.31%的錯誤率。目前利用聲紋來區分不同人這項技術已經被廣泛認可,並且在各個領域中都有應用。

聲紋識別是個寬泛的概念,技術方面有分爲兩類:即說話人確認技術說話人辨認技術,說話人確認技術是用於判斷未知說話人是否爲某個指定人;後者則是用於辨認未知說話人是已記錄說話人中的哪一位。

我們通常理解的都是說話人辨認技術,常常應用於刑偵破案、罪犯跟蹤、國防監聽、個性化應用等等,說話人確認技術常常應用於證券交易、銀行交易、公安取證、個人電腦聲控鎖、汽車聲控鎖、身份證、信用卡的識別等。 

目前來看,聲紋識別常用的方法包括模板匹配法、最近鄰方法、神經元網絡方法,VQ聚類法等。

這些方法雖然處理手段不同,但基本原理是類似的,比如剛開始給大家展示的語譜圖。語譜圖是聲音信號的一種圖像化的表示方式,它的橫軸代表時間,縱軸代表頻率,語音在各個頻率點的幅值大小用顏色來區分。說話人的聲音的基頻及諧頻在語譜圖上表現爲一條一條的亮線,再通過不同的處理手段就可以得到不同語譜圖之間的相似度,最終達到聲紋識別的目的。

目前公安部聲紋鑑別就採用類似方法,而且語譜圖還是用的灰度來表示。主要抽取說話人聲音的基音頻譜及包絡、基音幀的能量、基音共振峯的出現頻率及其軌跡等參數表徵,然後再與模式識別等傳統匹配方法結合進行聲紋識別。

美國和國內都有不少企業生產聲紋識別的設備,公安部爲採購這些設備還正式頒佈了《安防聲紋識別應用系統技術要求》的行業標準。但是這種方法是一種靜態檢測的方法,存在很大的弊端,實時性不好,動態檢測聲紋的需求實際上更大。

聲紋識別技術的三個分水嶺

李稀敏將近年來聲紋識別技術的發展總結爲3個分水嶺。

 

  • 第一個分水嶺是2000年。在2000年以前,進行聲紋識別驗證,主要是基於模板匹配,這種算法基於信號比對,通常要求比對雙方的內容相同,比如要驗證說“牀前明月光”的人是誰,那驗證人也必須要說“牀前明月光”才能驗證,如果他說“疑似地上霜”的話,驗證就不能完成。2000年以後,開始出現基於高斯混合模型的聲紋識別算法,高斯混合模型是典型基於統計學習理論的方法,該算法採用大量數據爲每個說話人訓練模型,使用高斯混合模型驗證已經與文本無關了,即要驗證“牀前明月光”的說話人時,說“疑似地上霜”也能夠驗證成功。之後產生的許多主流研究方法都是在高斯混合模型的基礎上改進的,但高斯混合模型註冊語音的時間過長,無法滿足實際應用場景的需求,因此需要新的技術來突破限制。
  • 第二個分水嶺是2010年左右,這時候出現了iVector/PLDA算法。iVector最大的亮點在於,把語音映射到了一個固定的且低維的向量上,這意味這所有機器學習的算法都可以用來解決聲紋識別的問題了,因此這是一個巨大的進步。PLDA是一種信道補償算法,因爲在iVector中,既包含說話人的信息,也包含信道信息,而我們只關心說話人的信息,所以才做信道補償,目前PLDA是最好的信道補償算法,但噪聲對結果依然有很大的影響。
  • 第三分水嶺是在2011年,在第十一屆全國人機語音通訊學術會議上,鄧力分享了他在微軟DNN-based speech recognition的研究結果,將識別率提升了30%,這將聲紋識別的準確率一下子提升了一個層次。DNN能從大量樣本中學習到高度抽象的說話人特徵,並對噪聲有很強的免疫力,至此深度學習被引入業界,國內對聲紋識別技術的關注點也放到了深度學習上。

侷限

現在的大部分研究都是有關動態實時檢測方面的,動態檢測的方法自然要利用靜態檢測的各種原理方法,同時也需要增加其他很多算法, 比如VAD、降噪、去混響等。VAD的目的是檢測是不是人的聲音,降噪和去混響是排除環境干擾,這不僅對於聲紋檢測很中重要,對於語音識別更加重要。    

VAD常用兩個方法,基於能量檢測和LTSD(Long-Term Spectral Divergence),當前用的較多是LTSD,另外特徵提取方面還需要:動態時間規整 (DTW)、矢量量化 (VQ)、支持向量機 (SVM),模型方面則需要隱馬爾可夫模型 (HMM)和高斯混合模型 (GMM)。

這是聲紋識別常用算法的結構圖,所有的聲紋識別,不管是用傳統算法還是深度學習,都需要事先建立聲紋庫,目前最全的應該是公安部的聲紋鑑別庫。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

從上面模型不難看出,聲紋識別還是一種基於數據驅動的模式識別問題,因爲所有模式識別存在的問題聲紋都存在,而且聲紋識別還有一些不太好解決的物理和計算問題。

雖然聲紋識別的唯一性很好,但實際上我們現有的設備和技術仍然很難做出準確分辨,特別是人的聲音還具有易變性,易受身體狀況、年齡、情緒等的影響。剛纔也提到,若在環境噪音較大和混合說話人的環境下,聲紋特徵也是很難提取和建模的。

雖然深度學習帶給模式識別極大的提升,甚至還有開源的相關算法,但是聲紋識別的研究進展仍然不大,這仍然受制於聲紋的採集和特徵的建立。

另外就是真實環境下的各種影響,包括:

  • 1、噪音問題
  • 2、多人說話
  • 3、音樂噪聲
  • 4、身體狀況
  • 5、情緒影響

先看噪聲問題,下圖是Mitchell McLaren在論文中做的研究,噪聲對不同模型的聲紋識別影響。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

從這個圖中可以看出,混響和噪聲對各類模型和方法都有非常大的影響,這和人類似,嘈雜環境中確實很難分辨出某個人的聲音,但是人耳比較奇特,我們可以很好的處理這種“雞尾酒會”效應,但是目前機器還做不到。

音樂噪聲很好理解,因爲音樂通常是寬帶信號,完全覆蓋了人聲的頻段,這會非常影響聲紋的特徵表現,動態檢測的時候更是難以提取,我們目前在語音識別中採用的是回聲抵消的方法(嚴格來說是自噪聲去除),同樣也可以用到聲紋識別,但是面對其他設備音樂也很難處理,當前僅有波束形成這一方法。

多人說話是聲紋識別和語音識別都面臨的問題,當前的所有模型都無法盲分離兩個以上的人聲並且同時進行識別。

身體狀況和情緒影響是我們每個人的主要個體差異,這種差異是基於時間變化的,所以聲紋特徵會出現某些變化,聲紋鑑別可以通過反覆取樣避免這個問題,但是動態檢測目前還沒有好辦法。

從上面幾點分析,也和我們主題相關,就是華帝的小V機器人,通過記錄歌手的聲紋信息進行判斷歌手,理論上是沒有問題的。但是難的就是,這是聲紋識別最複雜的情況,不僅是要保證實時性,還要解決噪聲問題、音樂干擾、兩人識別以及歌手刻意隱藏的問題,至少目前來看,這項技術還遠遠沒有成熟。

即便從應用來看也是這樣,除了聲紋鑑別,聲紋識別基本上就是在應用中充當娛樂的功能。另外,聲紋可以作爲認證手段,但是不應該放在第一位獨立使用,而是配合其他認證手段同時使用。 

詳情

1. 撥雲見日 – 聲紋的基礎“姿勢”

我們常常會用“花言巧語”來形容一個嘴皮子不靠譜的人,但其實這個成語用來形容語音信號也是十分貼切的。人臉、指紋都是基於圖像的二維信號,而語音是一種時變的一維信號,語音承載的首先是語意的信息,即我們說了什麼內容,在語意信息的背後纔是身份信息的體現。我們講的話可以對應到成百上千個字詞信息,但是這背後卻只對應了一個不變的身份。

圖1. 說話人A對應“四”的語音波形
圖2. 說話人B對應“四”的語音波形
圖3. 說話人A對應“九”的語音波形


如果上方的時域波形不夠直觀的話,那下方的短時語譜圖從二維圖像的角度能提供更多的直觀信息。似乎圖1和圖2的相似度更高一些,圖3因爲對應了不同的語意,因此和圖1,2差別更明顯,但實際上圖1和圖3來自於同一個說話人,按照需求,1和3應該被分在同一類別! 似乎有點難,那我們乾脆不要比較九了,只比較四好了。

因此,從語音字典是否受限的角度上來區分,聲紋識別可以分爲:

  1. 文本無關識別:文本無關,顧名思義就是說系統對於輸入的語音的內容並不做限制,識別系統應當可以克服語音中字典信息(亦或語意信息)的多變性和差異性,對語音背後的身份做出準確判斷;
  2. 文本相關識別:而文本相關識別,意思是我們預先會限制語音的字典集合的規模。

再往細了區分又有兩種常用的應用場景:

  1.  一種是固定口令,用戶必須要說“天王蓋地虎”,系統纔會去識別聲紋,你說“寶塔鎮河妖”,對不起,不管你是誰,一概不行;
  2. 一種是有限搭配的字典集合,系統會隨機搭配一些數字或符號,用戶需正確念出對應的內容纔可識別聲紋,這種隨機性的引入使得文本相關識別中每一次採集到的聲紋都有內容時序上的差異。

相較於指紋和人臉等靜態的圖像特徵,這種數序的隨機性無疑提升了安全性和防盜取能力。優圖實驗室自研的隨機數字聲紋識別方案已經應用於線上系統中,通過自主研發的人臉識別、活體檢測、語音+聲紋的多重驗證手段,在最大程度上保障了用戶的安全,杜絕了仿冒、竊取或複製用戶自身生物信息的可能性.

圖4:優圖人臉核身示意圖

 

文本相關識別因爲限制了可選的字典信息,因此在系統複雜度和識別準確率上都要遠好於文本無關的系統,只要採集相對比較短的一段語音即可實現聲紋的識別;但文本無關的識別系統在某些領域也會有重要的作用,例如刑偵比對,我們可以採集到嫌疑人的一段聲音,但是沒法對聲音對應的內容做限制,這時候文本無關識別就會派上重要的用場。

在過去的20年中,學界研究的重點大部分放在了更具挑戰性的文本無關識別上,所取得的突破也都是圍繞着文本無關的識別展開。美國國家標準技術局(National Institute of Standard and Technology,NIST)從90年代開始都會不定期地舉辦聲紋識別評測競賽(Speaker Recognition Evaluation, NIST SRE)[1],也是針對文本無關的識別進行評測,吸引了學術界和工業界的諸多重量級團隊參與。

2014年,在語音界的學術盛會interspeech上,新加坡的I2R實驗室發佈了一套用於評測文本相關識別的標準數據集RSR 2015,涵蓋了文本相關領域的多個應用場景[2]。自此,文本相關識別的研究熱度開始漸漸提升,而近幾年大熱的“深度學習”也是最先在文本相關識別上取得了比較大的突破 [3]。這裏不再過多展開,有興趣的讀者可以參考各大學術數據庫的資源,或者和我們團隊進行交流。

從識別的場景上考慮,聲紋識別又可以分爲兩個不同的應用場景:

  1. 說話人辨識(Speaker Identification,SI):SI指的是我們有了一段待測的語音,需要將這段語音與我們已知的一個集合內的一干說話人進行比對,選取最匹配的那個說話人。這方面的應用案例是刑偵比對,暗中收集到的一段嫌疑人(身份未知)的聲音,需要與數個可能的嫌疑人身份進行比對,選取最相似的那一個,則我們就可以認爲收集到的這段語音在很大程度上就是來自於鎖定的這個嫌疑人,SI是一個1對多的判別問題;
  2. 說話人確認(Speaker Verification,SV):SV指的是我們只有一個目標身份,對於一段未知的語音,我們只需要判斷這段語音是否來源於這個目標用戶即可,SV本質上是1對1的二分類問題。這方面典型的應用是手機端的聲紋鎖或聲紋驗證工具,對於一段驗證語音,系統只需要回答“通過”或者“拒絕”即可。

而SI可以間接分解爲多個SV的問題,因此對於聲紋識別系統性能的評測多是以SV的方式進行。

2. 動中取靜-從離散信號到特徵

聲紋之所以能被識別,是因爲每個人的口腔、鼻腔與聲道結構都存在唯一的差異性,但這種差異性既看不到又摸不着,更要命的是,它是一個時刻都在運動着的器官構造。我們只能通過錄音設備採集到的離散語音信號,間接去分析發聲器官的差異性。

既然語音一直在變,那我們該如何去對語音進行分析呢?答案是:語音具備了一個良好的性質,稱爲短時平穩,在一個20-50毫秒的範圍內,語音近似可以看作是良好的週期信號。

圖5:圖1中話者A“四”的發聲中截取出的30毫秒長度的信號。


這種良好的平穩性爲我們針對語音進行信號處理層面的分析提供了極大的便利。讀者都應該還記得,在音調,響度和音色這三個聲音的基本屬性中,音色是最能反映一個人身份信息的屬性。而音色上的差異在信號處理的層面可以表示爲在頻域不同頻段能量的差異,因此我們通過抽取不同頻段上的能量值,即可以表示在這個短時語音範圍內頻譜的性質。通常我們會綜合考慮人耳的聽覺屬性(人耳的一個聽覺屬性是在可聽到的頻段內,對於低頻的變化更加敏感,而對於高頻相對弱一些)、均衡不同頻段的能量差異(對於一段8KHz採樣的音頻,儘管語音會分佈於0-4KHz的範圍內,但能量更多的集中在相對比較低頻的區域)、噪聲魯棒性(我們希望特徵只對語音的變化敏感,而對其他噪聲等無關信息不變)以及後續的計算便利(係數之間儘可能要去除相關性)設計合適的短時聲學特徵,通過一系列複雜的信號處理層面的變換,一段20-50毫秒長度的語音(以8KHz採樣爲例,這個長度的語音對應着160-400個採樣點)可以映射爲一段39-60維的向量。爲了充分保留語音中的原始信息,同時不增加計算的負擔,通常會以15-20毫秒爲間隔依次取短時段語音,然後提取特徵。

圖6:短時聲學特徵的提取


在聲紋識別,包括語音識別領域,傳統的聲學特徵包括梅爾倒譜系數MFCC、感知線性預測係數PLP、近幾年的逐漸受到關注的深度特徵Deep Feature [4]、以及15年公開發表的能量規整譜系數PNCC [5]等,都能作爲聲紋識別在特徵提取層面可選且表現良好的聲學特徵。

綜上,一段語音就被映射爲時間軸上一系列的向量集合,這些集合再通過一些規整的操作後,即可成爲反映語音特性的特徵集合。但僅靠這些特徵集合還難以實現聲紋識別的目標,聲學特徵可以理解爲時間軸上爲聲道拍攝的一系列快照,它直接映射的仍然是語意的內容,如何從一堆變化的特徵中提取出不變的身份特性呢?接下來,就是統計建模發揮威力的時候了。

3. 化繁爲簡-聲紋模型的進化路

既然希望計算機能夠識別一個用戶的聲紋,那首先得讓計算機“認識”這個用戶的身份。典型的聲紋識別的系統的框架如下圖所示:

圖7:典型的說話人確認系統流程圖


聲紋識別系統是一個典型的模式識別的框架,爲了讓計算機認識一個用戶的身份,需要目標用戶首先提供一段訓練語音,這段語音經過特徵提取和模型訓練等一系列操作,會被映射爲用戶的聲紋模型。在驗證階段,一個身份未知的語音也會經過一系列的操作被映射爲測試特徵,測試特徵會與目標模型進行某種相似度的計算後得到一個置信度的得分,這個得分通常會與我們人工設定的期望值進行比較,高於這個期望值,我們認爲測試語音對應的身份與目標用戶身份匹配,通過驗證;反之則拒絕掉測試身份。因此,識別性能好壞的關鍵在於對語音中身份信息的建模能力與區分能力,同時對於身份無關的其餘信息具有充分的抗干擾能力和魯棒性。

儘管每個人的語音看起來千變萬化,但也不是完全沒有規律可循。儘管我們每天會說很多話,但常用的字詞至多隻有數千個左右的級別;另外我們也做不到和家裏的旺財發出一模一樣的叫聲。這也引出了聲紋識別,同時也是傳統的語音識別框架下的一個很合理的假設:將語音拆分到音素(phone)的級別,狹義的現代漢語只需要32個音素就已經足夠用了。

如果考慮到每個音素的形態還會受到前後音素的影響,構建三音素模型(tri-phone)的話,那至多也只有幾千個備選的三音素集合(不是簡單的32的三次方,我們也會去掉一些稀有的和根本不會出現的搭配),而不同說話人的三音素樣本儘管有明顯的差異,但都能在空間中的某個區域內聚類。由語音和對應的聲學特徵的這些性質啓發,1995年DA Reynolds首次將混合高斯模型(Gaussian Mixture Model,GMM)成功地應用於文本無關的聲紋識別任務,至此之後的20多年,奠定了GMM在聲紋識別中地基的地位,後續聲紋的發展演進都是以GMM作爲基礎進行改進和拓展的。

在繼續深入瞭解建模之前,我們有必要明確聲紋識別,或者把範圍再縮小一些,明確文本無關聲紋識別任務,它的難點在哪裏?在前文也提到過,聲紋識別是一個兼具理論研究價值與工程應用背景的領域,聲紋的難點主要在以下幾個方面:

如何在語音多變性的背後,挖掘不變的身份信息。

實際應用中,從用戶體驗和成本的角度上考慮,針對目標用戶可採集到的語料是極其有限的(按照學術上的定義,實際可用的語音是稀疏(sparse)的),如何在有限的數據中完成穩定的建模與識別。

對於同一個用戶,即便採集到的兩段語音內容都是相同的,但由於情緒、語速、疲勞程度等原因,語音都會有一些差異性。如何補償這種說話人自身語音的差異性。

聲音是通過錄音設備進行採集的,不同的型號的錄音設備對語音都會造成一定程度上的畸變,同時由於背景環境和傳輸信道等的差異,對語音信息也會造成不同程度的損傷,一般在研究中將這些外界影響語音的效應稱爲信道易變性(Channel Variability)。我們難以做到針對每一種信道效應都開發對應專屬的聲紋識別系統,那麼如何補償這種由於信道易變性帶來的干擾。

明確了需要解決的問題之後,再回過來看GMM,它的優勢在哪裏?首先GMM是什麼,它是一大堆形狀不定的高斯分量的加權組合。有研究表明,當GMM中高斯分量的數量足夠多的時候,GMM可以模擬任意的概率分佈。

圖8:我們只利用了七個葫蘆娃就擬合出了一座山


從模式識別的相關定義上來說,GMM是一種參數化(Parameterized)的生成性模型(Generative Model),具備對實際數據極強的表徵力;但反過來,GMM規模越龐大,表徵力越強,其負面效應也會越明顯:參數規模也會等比例的膨脹,需要更多的數據來驅動GMM的參數訓練才能得到一個更加通用(或稱泛化)的GMM模型。

假設對維度爲50的聲學特徵進行建模,GMM包含1024個高斯分量,並簡化多維高斯的協方差爲對角矩陣,則一個GMM待估參數總量爲1024(高斯分量的總權重數)+1024×50(高斯分量的總均值數)+1024×50(高斯分量的總方差數)=103424,超過10萬個參數需要估計!

這種規模的變量別說目標用戶幾分鐘的訓練數據,就算是將目標用戶的訓練數據量增大到幾個小時,都遠遠無法滿足GMM的充分訓練要求,而數據量的稀缺又容易讓GMM陷入到一個過擬合(Over-fitting)的陷阱中,導致泛化能力急劇衰退。因此,儘管一開始GMM在小規模的文本無關數據集合上表現出了超越傳統技術框架的性能,但它卻遠遠無法滿足實際場景下的需求。

時間來到了2000年前後,仍然是DA Reynolds的團隊,提出了一種改進的方案:既然沒法從目標用戶那裏收集到足夠的語音,那就換一種思路,可以從其他地方收集到大量非目標用戶的聲音,積少成多,我們將這些非目標用戶數據(聲紋識別領域稱爲背景數據)混合起來充分訓練出一個GMM,這個GMM可以看作是對語音的表徵,但是又由於它是從大量身份的混雜數據中訓練而成,它又不具備表徵具體身份的能力。

那它有什麼用呢?

學術圈的人就會告訴你:從貝葉斯框架的角度上來說,這個四不像GMM可以看作是某一個具體說話人模型的先驗模型。形象的比方就是說你準備去相親,媒人給你看了小莉的照片,你耳邊浮現的肯定是小莉各種可能的溫柔的聲音,而不是你家旺財的叫聲。

這個混合GMM就是起到了類似的作用,它對語音特徵在空間分佈的概率模型給出了一個良好的預先估計,我們不必再像過去那樣從頭開始計算GMM的參數(GMM的參數估計是一種稱爲EM的迭代式估計算法),只需要基於目標用戶的數據在這個混合GMM上進行參數的微調即可實現目標用戶參數的估計,這個混合GMM也有一個很洋氣的名字,叫通用背景模型(Universal Background Model,UBM)。

UBM的一個重要的優勢在於它是通過最大後驗估計(Maximum A Posterior,MAP)的算法對模型參數進行估計,避免了過擬合的發生。MAP算法的另外一個優勢是我們不必再去調整目標用戶GMM的所有參數(權重,均值,方差)只需要對各個高斯成分的均值參數進行估計,就能實現最好的識別性能。 這下子待估的參數一下子減少了一半還多(103424 -> 51200),越少的參數也意味着更快的收斂,不需要那麼多的目標用戶數據即可模型的良好訓練。

圖10:基於UBM的MAP用戶模型訓練算法


但GMM-UBM框架夠好了嗎?並沒有 ,至少有兩個問題GMM-UBM框架仍然沒法解決:

(1)待估的參數仍然還是太多了。在NIST SRE的標準測試中,一個目標用戶的可用語音約在5min左右,去掉靜音段和停頓,大約只能保留1分半到2分半左右的有效長度,看起來已經挺短了,但是你能想象在在實際產品中一個用戶對着手機連續讀五分鐘進行註冊嗎?這個長度的有效語音對於一個1024個高斯分量組成的GMM模型來說還是太短了,MAP算法只能對其中一部分落在某些高斯分量上的特徵進行相應的高斯分量進行參數優化,而另外相當一部分得不到觀測數據的高斯分量怎麼辦?那就只能老老實實待在原地不動了。這就造成了目標用戶GMM某些區域具備良好的目標用戶身份表達能力,而另外一些GMM區域則基本和UBM的參數相同,這無疑降低了文本無關識別應用中模型的表達能力;

(2)GMM-UBM缺乏對應於信道多變性的補償能力,直白點說就是它不抗干擾,你拿愛瘋手機在雲端註冊模型,換個小米手機拿來做識別,不通過!。但了不起的科學家們總有改進的辦法,WM Campbell將支持向量機(Support Vector Machine,SVM)引入了GMM-UBM的建模中,通過將GMM每個高斯分量的均值單獨拎出來,構建一個高斯超向量(Gaussian Super Vector,GSV)作爲SVM的樣本,利用SVM核函數的強大非線性分類能力,在原始GMM-UBM的基礎上大幅提升了識別的性能,同時基於GSV的一些規整算法,例如擾動屬性投影(Nuisance Attribute Projection, NAP),類內方差規整(Within Class Covariance Normalization,WCCN)等,都在一定程度上補償了由於信道易變形對聲紋建模帶來的影響,這裏也不多過多展開,有興趣的讀者們也可以查閱相關文獻或與我們一起討論。

時間繼續前進,爲了解決GMM-UBM待估參數過多的問題,學界與工業界可謂費盡心思,忽然有一天,學者們發現了:在MAP框架下,我們都是單獨去調整GMM的每一個高斯分量,參數太多太累了,那有沒有辦法同時調整一串高斯分量呢?我們玩街霸也不用給每個關節都配備一個按鈕,四個按鍵照樣也能發出波動拳啊。

那有沒有這樣一種方法,讓我們只能用少量的參數就能控制GMM中所有高斯成分的變化呢?答案當然是有,我們藉助一種稱爲因子分析(Factor Analysis,FA)的算法框架,只用數百個基向量的線性組合(每個基向量的權重就可以看作是在這個基座標上的座標點),就足夠能表徵全體高斯超向量的變化了,也就是說,我們現在只需要幾百個變量(通常爲400-600),就足夠表示一個50000維度的高斯分量均值集合!

其實,這種降維的思想在過去就已經廣泛應用於圖像,語音和數據的壓縮技術中,因爲真實數據總是帶着相當多的冗餘信息,我們可以做到只損失一小部分精度,甚至不損失精度,就能實現數據的壓縮與降維,而基向量的估計是通過一種稱爲基於概率的主成份分析的(Probabilistic Principal Component Analysis, PPCA)的類EM算法,基於海量的背景說話人數據學習而來。這下好了,模型參數一下子從50000一下子降到了500,簡直堪比夢中的房價走勢。這樣少量的數據就能實現GMM高斯分量的整體參數估計,隨着數據量的增加,GMM會迅速趨於一個穩定的參數估計。在上面提到的難點中,a,b,c在很大程度上得到了解決。

圖11:基於FA框架的Eigenvoice MAP用戶模型訓練算法

加拿大蒙特利爾研究所(Computer Research Institute of Montreal,CRIM)的科學家兼公式推導帝Patrick Kenny在05年左右提出了一個設想,既然聲紋信息可以用一個低秩的超向量子空間來表示,那噪聲和其他信道效應是不是也能用一個不相關的超向量子空間進行表達呢?

基於這個假設,Kenny提出了聯合因子分析(Joint Factor Analysis,JFA)的理論分析框架,將說話人所處的空間和信道所處的空間做了獨立不相關的假設,在JFA的假設下,與聲紋相關的信息全部可以由特徵音空間(Eigenvoice)進行表達,並且同一個說話人的多段語音在這個特徵音空間上都能得到相同的參數映射,之所以實際的GMM模型參數有差異,都是由特徵信道(Eigenchannel),即信道效應的干擾導致的,我們只需要同時估計出一段語音在特徵音空間上的映射和特徵信道上的映射,然後撇掉特徵信道上的干擾就可以實現更好的聲紋環境魯棒性。

而JFA兩個子空間的聯合推導簡直堪稱是Kenny大神奪目的數學表演,有興趣的讀者可以參考 [5],我估計不是聲紋圈的翻了第一頁和最後一頁就可以直接關閉pdf了。

JFA在05之後的NIST聲紋比賽中以絕對的優勢成爲了性能最優的識別系統,但JFA就足夠好了嗎?聲紋領域的天空中仍然漂浮着一小朵烏雲,儘管JFA對於特徵音空間與特徵信道空間的獨立假設看似合理,但天下沒有免費的午餐,現實世界中,儘管任何數據都存在冗餘,即數據之間都具有相關性,但絕對的獨立同分布的假設又是一個過於強的假設,你可以說你和你家旺財在長相上沒什麼相關性,但你們都有一對兒眼睛一張嘴啊…(也許都很能吃),這種獨立同分布的假設往往爲數學的推導提供了便利,但卻限制了模型的泛化能力。

那腫麼辦?時間來到了09年,Kenny的學生,N.Dehak,提出了一個更加寬鬆的假設:既然聲紋信息與信道信息不能做到完全獨立,那乾脆就用一個超向量子空間對兩種信息同時建模拉倒!回想下JFA的假設:

同一個說話人,不管怎麼採集語音,採集了多少段語音,在特徵音子空間上的參數映射都應該是相同的;而最終的GMM模型參數之所以有差別,這個鍋就丟給特徵信道子空間來背;

特徵音子空間和特徵信道子空間互相獨立。

JFA的這種“強”假設在實際使用中已經被驗證必然不會滿足。因此N.Dehak同志說:大家都是戰友,不要再分你的我的,有福同享有難同當啦。這個更寬鬆的假設就是:既然正交獨立性沒有辦法滿足,那我們就乾脆用一個子空間同時描述說話人信息和信道信息。

這時候,同一個說話人,不管怎麼採集語音,採集了多少段語音,在這個子空間上的映射座標都會有差異,這也更符合實際的情況。這個即模擬說話人差異性又模擬信道差異性的空間稱爲全因子空間(Total Factor Matrix),每段語音在這個空間上的映射座標稱作身份向量(Identity Vector, i-vector),i-vector向量通常維度也不會太高,一般在400-600左右 [6]。

這是什麼概念讀者們?折騰來折騰去聲紋還是在搞GMM,但一路走來,從最初95年採用的32個高斯分量的GMM,一路飆升到1024、2048、甚至4096(敢這麼玩的都是業界土豪)個高斯分量的GMM,模型改改改,公式推推推,折騰到最後一個說話人的聲紋模型只需要保存一個400×1的向量就夠了?

是的!就是這個樣子,這也是爲什麼我用化繁爲簡來作爲文章的副標題,i-vector是如此的簡潔優雅,它的出現使得說話人識別的研究一下子簡化抽象爲了一個數值分析與數據分析的問題:任意的一段音頻,不管長度怎樣,內容如何,最後都會被映射爲一段低維度的定長i-vector。

我們只需要找到一些優化手段與測量方法,在海量數據中能夠將同一個說話人的幾段i-vector儘可能分類得近一些,將不同說話人的i-vector儘可能分得遠一些。同時Dehak在實驗中還發現i-vector具有良好的空間方向區分性,即便上SVM做區分,也只需要選擇一個簡單的餘弦核就能實現非常好的區分性。截至今日,i-vector在大多數情況下仍然是文本無關聲紋識別中表現性能最好的建模框架,學者們後續的改進都是基於對i-vector進行優化,包括線性區分分析(Linear Discriminant Analysis, LDA),基於概率的線性預測區分分析(probabilistic linear discriminant analysis,PLDA)甚至是度量學習(Metric Learning)等。

4. 迷思-文本相關?文本無關?

既然i-vector在文本無關聲紋識別上這麼牛逼,那它在文本相關識別上一定也很厲害吧?No!在看似更簡單的文本相關聲紋識別任務上,i-vector表現得卻並不比傳統的GMM-UBM框架更好。

爲什麼?因爲i-vector簡潔的背後是它捨棄了太多的東西,其中就包括了文本差異性,在文本無關識別中,因爲註冊和訓練的語音在內容上的差異性比較大,因此我們需要抑制這種差異性;但在文本相關識別中,我們又需要放大訓練和識別語音在內容上的相似性,這時候牽一髮而動全身的i-vector就顯得不是那麼合適了。

5. 進擊:我們的youtu-vector

儘管學術界喜歡更難的挑(zuo)戰(si),但工業界在很多時候沒法和學術界保持一致。識別穩定,快速,用戶體驗好,纔是一個聲紋系統能夠落地的核心評價指標。爲此,首選的仍然是文本相關識別的應用,而在文本相關識別應用中,安全性最高的仍然是隨機數字聲紋識別。

儘管i-vector在文本相關上識別上似乎有點水土不服,但畢竟它在擅長的領域上已經展現了強大的性能。因此,如何能將i-vector的實力應用在我們的任務中,讓隨機數字聲紋識別也能發揮出最大的能量,是優圖實驗室一致努力的目標。

針對i-vector弱化語意建模的屬性,我們細化了i-vector的表徵範圍,即我們不再用i-vector針對一整段語音進行建模,而是將i-vector拆解爲針對每個數字進行建模,這樣i-vector從只表徵說話人身份的一段向量細化爲了表徵身份+數字內容的一個向量。

圖12:傳統的i-vector提取框架,並不針對文本差異進行區分
圖13:針對數字內容的差異性進行更細粒度的i-vector提取

 

這種更細粒度的i-vector劃分爲i-vector應用於隨機數字聲紋識別帶來了兩個明顯的改進:

  • 爲了驅動i-vector背後的UBM和全因子矩陣,我們不再需要海量的數據,只需要專注於具體的數字片段切分,極大降低了驅動系統所需的訓練數據的規模;
  • 由於每個i-vector只針對數字進行建模,每個數字i-vector背後的數字UBM和數字全因子矩陣,都不需要像文本無關那樣龐大的模型規模,相較於文本無關識別的任務,模型複雜度降低數十倍後,依然能在實際場景下表現出同樣好的性能。

模型的簡化帶來的直接優勢就是計算複雜度和空間複雜度的壓縮,同時,儘管需要提取的i-vector數量比過去多了(目標用戶語音中包含數字的集合數就是目標用戶最終的i-vector集合數),但將提取過程並行化後,這種細化帶來的額外計算與存儲基本上是可以忽略的。

在識別性能上,我們以團隊內部真實環境下采集的數據作爲測試樣例將數字i-vector與傳統的i-vector、和RSR 2015一起發佈的HiLAM文本相關識別框架進行了比較,包括了數萬規模的目標樣本測試與數十萬規模的攻擊樣本測試,實現了等錯誤概率(EER)小於1%,千分之一錯誤率下的召回率大於95%的識別性能。我們自主研發的數字i-vector,性能要遠好於現有的聲紋識別框架。

6. 且行且思-關於聲紋的展望與反思

儘管在適配i-vector與文本相關識別中,我們的嘗試與探索有了一些突破,但我們仍然需要看到聲紋識別在應用中的侷限:動態變化的發聲器官與聲音,它們的穩定性依然還不及人臉與圖像。除非哪天中風了,很難想像會有什麼理由使得人臉識別失靈;但是感冒發燒則會改變我們的聲道結構,自己的聲音也會發生變化。

而聲紋的識別精度相較人臉與圖像還有比較明顯的差距。深度學習的浪潮中,聲紋的演進似乎也還是不溫不火,而聲紋識別的“兄弟”語音識別早已乘着深度學習的航母向前馳騁,這其中的原因有聲紋固有的難點,想啃下這塊硬骨頭,我們要做的事情還有很多。

而優圖在聲紋的深度學習推進中也從未停下腳步,除了隨機數字識別,在文本無關識別應用中,我們自研的從基於DNN的說話人分類網絡中提取的深度特徵(也稱爲瓶頸特徵(bottleneck feature)),輔助i-vector進行分數層面的融合也讓i-vector的識別性能在過去的基礎上跨進了紮實的一步。在未來,優圖團隊有信心在人工智能的這股浪潮中激流勇進,貢獻出更多更好的產品,服務大衆,讓每個人都能感受到科技爲生活帶來的便捷。

參考文獻

[1] http://www.itl.nist.gov/iad/mig/tests/spk/

[2] Larcher, Anthony, et al. "RSR2015: Database for Text-Dependent Speaker Verification using Multiple Pass-Phrases." INTERSPEECH. 2012.

[3] Fu Tianfan, et al. "Tandem deep features for text-dependent speaker verification." INTERSPEECH. 2014.

[4] Vasilakakis, Vasileios, Sandro Cumani, and Pietro Laface. "Speaker recognition by means of deep belief networks." (2013).

[5] Kenny, Patrick. "Joint factor analysis of speaker and session variability: Theory and algorithms." CRIM, Montreal,(Report) CRIM-06/08-13 (2005).

[6] Dehak, Najim, et al. "Front-end factor analysis for speaker verification." IEEE Transactions on Audio, Speech, and Language Processing 19.4 (2011): 788-798.

趨勢

聲紋識別也和其他識別一樣,也向着深度學習的方向發展,但是又和語音識別稍有差異,傳統算法和模型在聲紋識別中還佔有相當大的比重。

下圖是Fred Richardson在論文中提出的聲紋識別的深度學習模型示意

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

深度學習的效果還是有的,下圖就是各種方法的一種比較,也就說,將來實時聲紋識別將會有比較大的突破。

声纹è¯å«ææ¯çç°ç¶ãå±éä¸è¶å¿ä¸¨ç¡¬åå¬å¼è¯¾

但是難度也很大,因爲深度學習是基於數據驅動的模型,需要龐大的數據,這些數據最好是真實場景的數據,以及對數據的精確標註,這些都是很費錢很費人的事情。而且聲紋識別訓練庫的建立,至少要保證性別比例分佈爲50%±5%,包含有不同年齡段、不同地域、不同口音、不同職業。同時,測試樣本應該涵蓋文本內容是否相關、採集設備、傳輸信道、環境噪音、錄音回放、聲音模仿、時間跨度、採樣時長、健康狀況和情感因素等影響聲紋識別性能的主要因素。也就是說,聲紋識別對數據的要求其實比語音識別還要高很多,這本身就是個很大的門檻,也是突破聲紋識別,真正能讓聲紋識別落地千家萬戶的核心因素。   
 

聲智科技創始人陳孝良-讀者提問:

  • 現在的聲紋識別能夠做到多人的同時識別嗎?比如一個場景有一羣人,可以識別區分出有哪些人或者人數嗎?

聲紋識別和語音識別從技術上目前都還無法做到多人同時識別,上面第二個問題是聲紋區分,這是可以做到的,不同人說話的聲紋是不一樣的,採用傳統的方法即可區分出來,當然也可計算人數,但是有的聲音仍然可能會被漏過。人耳有個掩蔽效應,簡單說就是強的聲音會淹沒弱的聲音,當前的聲學模型還無法很好的解決。    

  • 微信的搖一搖功能的電視語音識別技術使用的什麼技術?

微信搖一搖是聲波通信技術,這和識別差異較大,聲波通信和無線通信類似,特別是在水中,基本只能依賴聲音進行信息傳輸。

  • Adobe VoCo利用ml合成的音頻,聲紋識別是否還有效?

合成的音頻仍然是可以鑑別的,公安部的檢測首先就要排除是否合成,但是當前動態檢測的方法,特別是DNN訓練的模型可能無法區分。

  • 根據語譜圖使用CNN提取特徵,會比使用常用的短時聲學特徵組合更有效嗎? 長時聲學特徵,比如常用語,語速,口音特徵,詞法特徵等,一般會被用來輔助進行聲紋識別嗎?

長時特徵比短時特徵效果會提升,但是目前來看,計算的壓力會非常大,所以長時特徵現在實時檢測中用的還較少,聲紋鑑別基本都是20秒以上,而實時檢測每幀還是20毫秒居多。

  • 剛剛在分享中有提到聲波是有機器學習的,如果黑客一開始就去誘騙數據庫怎麼辦?

這個問題非常好,是所有深度學習都無法迴避的問題,如果保證採樣數據的真實性,將來肯定是大問題,但是現在連如何保證數據的完整性都還沒做到。實際上,我們採集的數據問題就非常多,標註的數據準確性就更難保證了,這是個困擾深度學習,也是深度學習研究人員儘量避免談及的問題。

  • 做聲紋識別這類聲學研究,需要用到哪些基礎的軟硬件環境才能快速上手?能否推薦一些給初學者。

聲學研究因爲偏物理一些,所以需要一些物理實驗環境,比如聲學方面的消聲室,混響室,這可以幫助更好地理解聲音,另外還需要精密的採集設備,軟件方面倒是要求不高,有一些聲學方面計算模擬的軟件,信號處理方面的就是matlab爲主。

應用

聲紋識別可以應用的範圍很寬,可以說聲紋識別幾乎可以應用到人們日常生活的各個角落。比如下面舉幾個例子。

(1)信息領域。比如在自動總機系統中,把身份證之聲紋辨認和關鍵詞檢出器結合起來,可以在姓名自動撥號的同時向受話方提供主叫方的身份信息。前者用於身份認證,後者用於內容認證。同樣,聲紋識別技術可以在呼叫中心(Call Center)應用中爲註冊的常客戶提供友好的個性化服務。

(2)銀行、證券。鑑於密碼的安全性不高,可以用聲紋識別技術對電話銀行、遠程炒股等業務中的用戶身份進行確認,爲了提供安全性,還可以採取一些其他措施,如密碼和聲紋雙保險,如隨機提示文本用文本相關的聲紋識別技術進行身份確認(隨機提示文本保證無法用事先錄好的音去假冒),甚至可以把交易時的聲音錄下來以備查詢。

(3)公安司法。對於各種電話勒索、綁架、電話人身攻擊等案件,聲紋辨認技術可以在一段錄音中查找出嫌疑人或縮小偵察範圍;聲紋確認技術還可以在法庭上提供身份確認(同一性鑑定)的旁證。在監獄親情電話應用中,通過採集犯人家屬的聲紋信息,可有效鑑別家屬身份的合法性。在司法社區矯正應用中,通過識別定位手機位置和呼叫對象說話聲音的個人特徵,系統就可以快速的自動判斷被監控人是否在規定的時間出現在規定的場所,有效地解決人機分離問題。

(4)軍隊和國防。聲紋辨認技術可以察覺電話交談過程中是否有關鍵說話人出現,繼而對交談的內容進行跟蹤(戰場環境監聽);在通過電話發出軍事指令時,可以對發出命令的人的身份進行確認(敵我指戰員鑑別)。目前該技術在國外軍事方面已經有所應用,據報道,迫降在我國海南機場的美軍EP-3偵察機中就載有類似的聲紋識別偵聽模塊。

(5)保安和證件防僞。如機密場所的門禁系統。又如聲紋識別確認可用於信用卡、銀行自動取款機、門、車的鑰匙卡、授權使用的電腦、聲紋鎖以及特殊通道口的身份卡,把聲紋存在卡上,在需要時,持卡者只要將卡插入專用機的插口上,通過一個傳聲器讀出事先已儲存的暗碼,同時儀器接收持卡者發出的聲音,然後進行分析比較,從而完成身份確認。同樣可以把含有某人聲紋特徵的芯片嵌入到證件之中,通過上面所述的過程完成證件防僞。

參考資料:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章