編者註:本文內容來自聲智科技創始人陳孝良在雷鋒網硬創公開課的分享,由雷鋒網旗下欄目「新智造」整理。
嘉賓簡介:陳孝良,博士,聲智科技創始人,曾任中科院聲學所副研究員和信息化辦公室主任,中科院上海高等研究院客座,北京市公安局首屆網絡應急專家,主要從事聲學信號處理和 GPU 深度學習算法研究工作。
聲紋識別還是一個比較窄的學科,應用也相對較少,在此之前,先給大家看幾個聲紋的例子。
1個月大嬰兒的哭聲聲紋
男人的口哨聲聲紋
下雨打雷聲聲紋
接吻聲聲紋
人聲和槍聲聲紋
每個例子都代表了不同的聲音特徵,從表面上來看還是非常容易區分的。直觀就是看亮色的曲線差別,具體就是基音頻譜及包絡、基音幀的能量、基音共振峰的出現頻率及其軌跡,有條件的可以實時看自己的聲紋。
現狀
那我們就從聲紋識別的基本原理談起,聲紋識別是通過對一種或多種語音信號的特徵分析來達到對未知聲音辨別的目的,簡單的說就是辨別某一句話是否是某一個人說的技術。
該項技術最早是在40年代末由貝爾實驗室開發,主要用於軍事情報領域。隨著該項技術的逐步發展,60年代末後期在美國的法醫鑑定、法庭證據等領域都使用了該項技術,從1967年到現在,美國至少5000多個案件包括謀殺、強姦、敲詐勒索、走私毒品、賭博,政治腐敗等都通過聲紋識別技術提供了有效的線索和有力的證據。特別強調的是,聲紋鑑別目前已經是公安部的標準,是可以作為證據進行鑑定的。
聲紋識別的理論基礎是每一個聲音都具有獨特的特徵,通過該特徵能將不同人的聲音進行有效的區分。
這種獨特的特徵主要由兩個因素決定,第一個是聲腔的尺寸,具體包括咽喉、鼻腔和口腔等,這些器官的形狀、尺寸和位置決定了聲帶張力的大小和聲音頻率的範圍。因此不同的人雖然說同樣的話,但是聲音的頻率分布是不同的,聽起來有的低沉有的洪亮。每個人的發聲腔都是不同的,就像指紋一樣,每個人的聲音也就有獨特的特徵。
第二個決定聲音特徵的因素是發聲器官被操縱的方式,發聲器官包括唇、齒、舌、軟顎及顎肌肉等,他們之間相互作用就會產生清晰的語音。而他們之間的協作方式是人通過後天與周圍人的交流中隨機學習到的。人在學習說話的過程中,通過模擬周圍不同人的說話方式,就會逐漸形成自己的聲紋特徵。
因此,理論上來說,聲紋就像指紋一樣,很少會有兩個人具有相同的聲紋特徵。
美國研究機構已經表明在某些特點的環境下聲紋可以用來作為有效的證據。並且美國聯邦調查局對2000例與聲紋相關的案件進行統計,利用聲紋作為證據只有0.31%的錯誤率。目前利用聲紋來區分不同人這項技術已經被廣泛認可,並且在各個領域中都有應用。
聲紋識別是個寬泛的概念,技術方面有分為兩類:即說話人確認技術和說話人辨認技術,說話人確認技術是用於判斷未知說話人是否為某個指定人;後者則是用於辨認未知說話人是已記錄說話人中的哪一位。
我們通常理解的都是說話人辨認技術,常常應用於刑偵破案、罪犯跟蹤、國防監聽、個性化應用等等,說話人確認技術常常應用於證券交易、銀行交易、公安取證、個人電腦聲控鎖、汽車聲控鎖、身份證、信用卡的識別等。
目前來看,聲紋識別常用的方法包括模板匹配法、最近鄰方法、神經元網絡方法,VQ聚類法等。
這些方法雖然處理手段不同,但基本原理是類似的,比如剛開始給大家展示的語譜圖。語譜圖是聲音信號的一種圖像化的表示方式,它的橫軸代表時間,縱軸代表頻率,語音在各個頻率點的幅值大小用顏色來區分。說話人的聲音的基頻及諧頻在語譜圖上表現為一條一條的亮線,再通過不同的處理手段就可以得到不同語譜圖之間的相似度,最終達到聲紋識別的目的。
目前公安部聲紋鑑別就採用類似方法,而且語譜圖還是用的灰度來表示。主要抽取說話人聲音的基音頻譜及包絡、基音幀的能量、基音共振峰的出現頻率及其軌跡等參數表徵,然後再與模式識別等傳統匹配方法結合進行聲紋識別。
美國和國內都有不少企業生產聲紋識別的設備,公安部為採購這些設備還正式頒布了《安防聲紋識別應用系統技術要求》的行業標準。
但是這種方法是一種靜態檢測的方法,存在很大的弊端,實時性不好,動態檢測聲紋的需求實際上更大。
局限
現在的大部分研究都是有關動態實時檢測方面的,動態檢測的方法自然要利用靜態檢測的各種原理方法,同時也需要增加其他很多算法, 比如VAD、降噪、去混響等。VAD的目的是檢測是不是人的聲音,降噪和去混響是排除環境幹擾,這不僅對於聲紋檢測很中重要,對於語音識別更加重要。
VAD常用兩個方法,基於能量檢測和LTSD(Long-Term Spectral Divergence),當前用的較多是LTSD,另外特徵提取方面還需要:動態時間規整 (DTW)、矢量量化 (VQ)、支持向量機 (SVM),模型方面則需要隱馬爾可夫模型 (HMM)和高斯混合模型 (GMM)。
這是聲紋識別常用算法的結構圖,所有的聲紋識別,不管是用傳統算法還是深度學習,都需要事先建立聲紋庫,目前最全的應該是公安部的聲紋鑑別庫。
從上面模型不難看出,聲紋識別還是一種基於數據驅動的模式識別問題,因為所有模式識別存在的問題聲紋都存在,而且聲紋識別還有一些不太好解決的物理和計算問題。
雖然聲紋識別的唯一性很好,但實際上我們現有的設備和技術仍然很難做出準確分辨,特別是人的聲音還具有易變性,易受身體狀況、年齡、情緒等的影響。剛才也提到,若在環境噪音較大和混合說話人的環境下,聲紋特徵也是很難提取和建模的。
雖然深度學習帶給模式識別極大的提升,甚至還有開源的相關算法,但是聲紋識別的研究進展仍然不大,這仍然受制於聲紋的採集和特徵的建立。
另外就是真實環境下的各種影響,包括:
1、噪音問題2、多人說話3、音樂噪聲4、身體狀況5、情緒影響
先看噪聲問題,下圖是Mitchell McLaren在論文中做的研究,噪聲對不同模型的聲紋識別影響。
從這個圖中可以看出,混響和噪聲對各類模型和方法都有非常大的影響,這和人類似,嘈雜環境中確實很難分辨出某個人的聲音,但是人耳比較奇特,我們可以很好的處理這種「雞尾酒會」效應,但是目前機器還做不到。
音樂噪聲很好理解,因為音樂通常是寬帶信號,完全覆蓋了人聲的頻段,這會非常影響聲紋的特徵表現,動態檢測的時候更是難以提取,我們目前在語音識別中採用的是回聲抵消的方法(嚴格來說是自噪聲去除),同樣也可以用到聲紋識別,但是面對其他設備音樂也很難處理,當前僅有波束形成這一方法。
多人說話是聲紋識別和語音識別都面臨的問題,當前的所有模型都無法盲分離兩個以上的人聲並且同時進行識別。
身體狀況和情緒影響是我們每個人的主要個體差異,這種差異是基於時間變化的,所以聲紋特徵會出現某些變化,聲紋鑑別可以通過反覆取樣避免這個問題,但是動態檢測目前還沒有好辦法。
從上面幾點分析,也和我們主題相關,就是華帝的小V機器人,通過記錄歌手的聲紋信息進行判斷歌手,理論上是沒有問題的。但是難的就是,這是聲紋識別最複雜的情況,不僅是要保證實時性,還要解決噪聲問題、音樂幹擾、兩人識別以及歌手刻意隱藏的問題,至少目前來看,這項技術還遠遠沒有成熟。
即便從應用來看也是這樣,除了聲紋鑑別,聲紋識別基本上就是在應用中充當娛樂的功能。另外,聲紋可以作為認證手段,但是不應該放在第一位獨立使用,而是配合其他認證手段同時使用。
趨勢
聲紋識別也和其他識別一樣,也向著深度學習的方向發展,但是又和語音識別稍有差異,傳統算法和模型在聲紋識別中還佔有相當大的比重。
下圖是Fred Richardson在論文中提出的聲紋識別的深度學習模型示意
深度學習的效果還是有的,下圖就是各種方法的一種比較,也就說,將來實時聲紋識別將會有比較大的突破。
但是難度也很大,因為深度學習是基於數據驅動的模型,需要龐大的數據,這些數據最好是真實場景的數據,以及對數據的精確標註,這些都是很費錢很費人的事情。而且聲紋識別訓練庫的建立,至少要保證性別比例分布為50%±5%,包含有不同年齡段、不同地域、不同口音、不同職業。同時,測試樣本應該涵蓋文本內容是否相關、採集設備、傳輸信道、環境噪音、錄音回放、聲音模仿、時間跨度、採樣時長、健康狀況和情感因素等影響聲紋識別性能的主要因素。
也就是說,聲紋識別對數據的要求其實比語音識別還要高很多,這本身就是個很大的門檻,也是突破聲紋識別,真正能讓聲紋識別落地千家萬戶的核心因素。
讀者提問:
現在的聲紋識別能夠做到多人的同時識別嗎?比如一個場景有一群人,可以識別區分出有哪些人或者人數嗎?
聲紋識別和語音識別從技術上目前都還無法做到多人同時識別,上面第二個問題是聲紋區分,這是可以做到的,不同人說話的聲紋是不一樣的,採用傳統的方法即可區分出來,當然也可計算人數,但是有的聲音仍然可能會被漏過。人耳有個掩蔽效應,簡單說就是強的聲音會淹沒弱的聲音,當前的聲學模型還無法很好的解決。
微信的搖一搖功能的電視語音識別技術使用的什麼技術?
微信搖一搖是聲波通信技術,這和識別差異較大,聲波通信和無線通信類似,特別是在水中,基本只能依賴聲音進行信息傳輸。
Adobe VoCo利用ml合成的音頻,聲紋識別是否還有效?
合成的音頻仍然是可以鑑別的,公安部的檢測首先就要排除是否合成,但是當前動態檢測的方法,特別是DNN訓練的模型可能無法區分。
根據語譜圖使用CNN提取特徵,會比使用常用的短時聲學特徵組合更有效嗎? 長時聲學特徵,比如常用語,語速,口音特徵,詞法特徵等,一般會被用來輔助進行聲紋識別嗎?
長時特徵比短時特徵效果會提升,但是目前來看,計算的壓力會非常大,所以長時特徵現在實時檢測中用的還較少,聲紋鑑別基本都是20秒以上,而實時檢測每幀還是20毫秒居多。
剛剛在分享中有提到聲波是有機器學習的,如果黑客一開始就去誘騙資料庫怎麼辦?
這個問題非常好,是所有深度學習都無法迴避的問題,如果保證採樣數據的真實性,將來肯定是大問題,但是現在連如何保證數據的完整性都還沒做到。實際上,我們採集的數據問題就非常多,標註的數據準確性就更難保證了,這是個困擾深度學習,也是深度學習研究人員儘量避免談及的問題。
做聲紋識別這類聲學研究,需要用到哪些基礎的軟硬體環境才能快速上手?能否推薦一些給初學者。
聲學研究因為偏物理一些,所以需要一些物理實驗環境,比如聲學方面的消聲室,混響室,這可以幫助更好地理解聲音,另外還需要精密的採集設備,軟體方面倒是要求不高,有一些聲學方面計算模擬的軟體,信號處理方面的就是matlab為主。