本發明涉及一種基于DBSCAN算法的聲紋識別方法,通過計算機對說話人進行識別,屬于語音識別技術領域。
背景技術:
隨著網絡和通信的發展以及智能手機的普及,電子商務及移動支付迅速興起。由于網絡的不安全性因素,信息安全成了當今社會關注的焦點問題,身份認證作為信息安全的一種重要手段也越來越受到人們的重視。
目前使用最廣泛的身份認證方式屬于密碼驗證存取行為,此類認證方式存在著密碼遺忘、易被破解等諸多問題,一旦被非法用戶獲取,將會對個人或單位造成巨大損失。因此人們試圖尋找一種更為安全可靠的身份認證方式,而人體所固有的生物特征為此提供了更為便捷的途徑。
人體有許多固有特征,比如指紋、虹膜等,這些生物識別技術已經得到了一定程度的開發和利用。聲紋同樣也是我們人類每個人都獨有的特征,每個人的聲音特點都是獨一無二的,與指紋一樣,聲紋是說話人獨一無二的語音特征,即使說出同一句話,在能量、頻譜、語調等等方面都是不一樣的。但是,在聲紋識別領域目前的利用程度較低,聲紋識別必將是生物識別領域的下一片藍海。
技術實現要素:
本發明所要解決的技術問題是:提供一種基于DBSCAN算法的聲紋識別方法,該方法不需要很龐大的訓練集,只需要經過篩選的訓練語音作為訓練集即可,識別準確率較高。
本發明為解決上述技術問題采用以下技術方案:
一種基于DBSCAN算法的聲紋識別方法,包括如下步驟:
步驟1,獲取檢驗語音和某說話人的訓練集語音,訓練集語音包含預設的偶數個訓練語音,利用mel倒譜系數分別對訓練集語音和檢驗語音進行語音特征提取,得到各自對應的語音特征向量;
步驟2,對步驟1得到的訓練集語音的語音特征向量,利用基于余弦相似度的分組篩選方法進行篩選,當經過篩選后得到的語音特征向量的個數少于步驟1的預設值時,繼續獲取訓練語音,并進行語音特征提取和篩選,直至最后得到的語音特征向量的個數滿足步驟1的預設值;
步驟3,利用改進的DBSCAN算法對檢驗語音進行識別,在改進的DBSCAN算法中,利用距離參數計算檢驗語音與訓練語音是否相似的閾值時,定義距離參數為利用區間估計計算該閾值時的置信區間的大小。
作為本發明的一種優選方案,所述步驟1的具體過程為:根據奈奎斯特采樣定律對訓練語音進行依次采樣并存儲,得到訓練集語音;利用mel倒譜系數分別對訓練集語音和檢驗語音進行語音特征提取,得到各自對應的特征系數,將特征系數矢量化,從而得到各自對應的語音特征向量。
作為本發明的一種優選方案,步驟2所述對步驟1得到的訓練集語音的語音特征向量,利用基于余弦相似度的分組篩選方法進行篩選的具體過程為:將步驟1得到的訓練集語音的語音特征向量按順序標號,并以標號的奇偶分為兩組,計算每組中各語音特征向量與其他語音特征向量的余弦相似度,并將余弦相似度轉化為角度值,判斷每組中各角度值與其他角度值之間的差值,當差值小于等于固定閾值時,則將該角度值對應的語音特征向量保留;否則,不保留。
作為本發明的一種優選方案,所述步驟3的具體過程為:利用檢驗語音的語音特征向量與步驟2得到的各訓練語音的語音特征向量,計算檢驗語音與各訓練語音的余弦相似度,并將余弦相似度轉化為角度值;當判斷檢驗語音與其中一條訓練語音是否相似時,利用距離參數計算檢驗語音與該訓練語音是否相似的閾值,該閾值表示為其中,Y表示閾值,a表示距離參數對應于標準正態分布的橫坐標,μ、σ分別表示該訓練語音與其他訓練語音之間的余弦相似度對應的角度值的平均值和標準差,判斷檢驗語音與該訓練語音的余弦相似度對應的角度值是否小于等于該訓練語音對應的閾值,如果是,則認為檢驗語音與該訓練語音相似,否則不相似;當相似的訓練語音個數大于等于設定閾值時,認為檢驗語音與訓練語音的說話人匹配,否則不匹配。
作為本發明的一種優選方案,所述余弦相似度的計算公式為:
其中,Ai表示第一個語音特征向量第i維的數值,Bi表示第二個語音特征向量第i維的數值,θ表示要計算的兩條語音之間的余弦相似度對應的角度值,m表示各語音特征向量的維度。
本發明采用以上技術方案與現有技術相比,具有以下技術效果:
1、本發明基于DBSCAN算法的聲紋識別方法,不需要很龐大的訓練集,只需要一些經過篩選的訓練語音作為訓練集即可,并且利用這些訓練語音的分布特性對檢驗語音進行判別。
2、本發明基于DBSCAN算法的聲紋識別方法,在實際使用過程中,靈活方便,使用快捷,具有十分良好的用戶體驗和較高的識別率。
附圖說明
圖1是本發明基于DBSCAN算法的聲紋識別方法的整體架構圖。
圖2是本發明中DBSCAN算法的一般模型圖。
圖3是實施例中采用本發明基于DBSCAN算法的聲紋識別方法進行識別的流程圖。
圖4是本發明中利用正態分布的區間估計計算閾值的示意圖。
具體實施方式
下面詳細描述本發明的實施方式,所述實施方式的示例在附圖中示出。下面通過參考附圖描述的實施方式是示例性的,僅用于解釋本發明,而不能解釋為對本發明的限制。
一種基于DBSCAN算法的聲紋識別方法,包括:語音特征的提取,訓練集語音的篩選,對檢驗語音的判斷算法。所述語音特征提取采用mel倒譜系數進行特征提取;訓練語音的篩選采用“基于余弦相似度的分組篩選”方法進行篩選;對檢驗語音的判斷利用改進的DBSCAN算法進行判斷。
進一步地,所述語音特征提取過程中,根據經典的奈奎斯特采樣定律,以高于兩倍普通人所能發出的聲音的最高頻率進行采樣并存儲,并且利用經典的mel倒譜系數對所獲取的語音信號進行特征提取,并把所獲得一系列特征系數矢量化,得到一組多維向量。
進一步地,所述訓練語音篩選,一共篩選2n個語音片段數據。篩選方法采用“基于余弦相似度的分組篩選”方法。首先,我們需要對訓練集語音之間的相似度進行評價,采用余弦相似度的方法,計算兩組語音信號之間的相似度,并且轉化成角度值,角度值約束在[0,180]度。
其中,Ai表示第一個語音特征向量第i維的數值,Bi表示第二個語音特征向量第i維的數值,θ表示兩條語音之間的余弦相似角度,m表示各語音特征向量的維度。
進一步地,對這些語音片段按順序標號,然后以標號的奇偶性分為兩組,以固定閾值12度來約束組內的訓練語音,要求每個語音片段與其他語音片段的余弦相似度不能超過12度,進而排除組內的離群點。12度為實驗的經驗值,實際應用中這個值可以有所變化。如果組內的訓練集語音不能滿足這個條件,則需要重新訓練,直到組內的語音能夠滿足這個條件。如圖1所示,訓練集語音的篩選對應于系統框架圖核心算法層里的語音篩選模塊,并且篩選工作做完后,把篩選后的訓練集語音存儲在圖1中的數據層中。如圖3所示,給出了n=3時,對訓練集語音進行訓練的方法。訓練集語音數目里的n可以為任意數字,但數字太小誤差較大,數字太大訓練集的獲取比較麻煩,適當的大小較為合適。
“基于余弦相似度的分組篩選”方法通過對訓練集進行分組,即可以讓訓練集組間具有一定的差異性;組內通過固定閾值的約束,可以把過分離群的點去除,保證訓練集數據一定的一致性。利用基于余弦相似度的分組篩選方法篩選之后的訓練集語音,基本能夠覆蓋說話人語音的大部分特征,具有較高的代表性。
進一步地,在對檢驗語音的識別判斷上,采用改進的DBCSAN算法。如圖1所示,需要先將數據層里的訓練集語音讀取出來,然后將檢驗語音與2n條訓練語音片段進行比對,如果與大于等于n條(也可以是其他數值)語音片段相似則認為該檢驗語音是訓練語音說話人發出的,即比對成功。
其中改進的DBSCAN算法,把距離參數Eps重新定義為利用區間估計計算閾值時的置信區間的大小,如上文所述,該大小可選。同時我們默認特定說話人所發出的語音為同一個簇族,如果檢驗語音在該簇族的核心區和邊界上,則認為檢驗語音是該說話人所發出的,否則,則認為該檢驗語音不是該說話人所發出的。如圖2所示,展示了DBSCAN算法的一般思想。圖2中取Eps=1,并且設定對某個特定的點,在Eps距離范圍內有0~2個近鄰點,則這個點為噪聲點;有3~4個近鄰點,則這個點是邊界點;有5個近鄰點及以上,則這個點為核心點。
進一步地,判斷一條語音是否和另一條語音是否相似,仍采用余弦相似度的方法計算出兩者的余弦角度,當這個角度小于某個閾值時認為這兩條語音是相似的,反之不相似。通過不斷實驗,發現一個說話人某個語音片段和其他語音片段之間的余弦相似角度的分布近似滿足正態分布特性,所以在計算閾值的時候,采用正態分布的單邊估計進行計算。
首先,計算出某條訓練語音和別的訓練語音之間的余弦相似角度,并計算出這些角度值的平均值和方差,得到一個正態分布的概率分布密度函數。
其中,μ表示上述一系列角度值的平均值,σ表示上述一系列角度值的標準差,f(θ)表示θ的概率密度。
進一步地,如圖4所示,利用正態分布的單邊區間估計,得到一個上限閾值。通過多次試驗,發現這些語音的正態分布概率密度函數在[-∞,0]區間內的概率近似為零。首先查標準正態分布的概率分布表,得到左邊區間為97.5%的點為1.96,然后再把這個點轉化為本項目的非標準正態分布上對應的點:
其中,Y表示所計算出的判斷是否相似的閾值,a表示該置信度對應于標準正態分布的橫坐標,μ與σ的含義與前文一致。此處Y閾值的選取上,標準正態分布可以選擇100%處的點進行轉化,也可以選擇90%處的點進行轉化,但是拒絕識別率和錯誤識別率存在差異。如圖3所示,給出了n=3時,以1號語音為例時,對應于1號語音的新的閾值的計算流程。
進一步地,某條檢驗語音和該訓練語音的角度值設為X,我們用計算出來的該訓練語音的Y值與X比較,如果X≤Y,則認為檢驗語音與該訓練語音是相似的,否則檢驗語音和該訓練語音不相似。如果一共有n及以上條訓練語音和檢驗語音相似,則認為檢驗語音和訓練語音的說話人是匹配的,否則不匹配。
如圖3所示,我們用sum進行計數近鄰點個數。當sum=0~2時,這個檢驗語音為噪聲點;當sum=3~4,這個檢驗語音為邊界點;當sum=5~6時,這個檢驗語音為核心點。我們取邊界點和核心點都為比對成功。根據具體情況不同,不一定需要n及以上條訓練語音和檢驗語音相似才認為比對成功,可以為其他數值。其中數值越大,錯誤識別率越低,拒絕識別識別率越高。
本發明基于DBSCAN算法的聲紋識別方法可對應如圖1所示的架構圖,主要分為三個層次,包括交互層、核心算法層和數據層。
其中交互層包括訓練集語音錄入、檢驗語音錄入和輸出結果顯示三個模塊。前兩個模塊主要是完成訓練集語音和檢驗語音的采樣和錄入工作。輸出結果顯示模塊用來輸出顯示訓練集語音的篩選結果,包括是否篩選成功,如果篩選不成功,用戶需要把第幾號語音重新錄制等信息。同時該模塊還要把核心算法層的最終的語音識別的結果顯示出來,判別成功與否等信息。
核心算法層包括特征提取、語音篩選、閾值計算、判別算法四個模塊。特征提取模塊用來提取由交互層錄入的語音的mel倒譜系數并且進行矢量化操作。語音篩選模塊采用“基于余弦相似度的分組篩選”的方法,用來對訓練集語音進行篩選,并將篩選結果交由交互層顯示,如果篩選成功,將篩選后的語音送入數據層進行存儲。閾值計算模塊從數據層讀取訓練集語音,并且利用正太分布的單邊區間估計重新計算閾值。判別模塊利用閾值計算模塊得到的閾值,將檢驗語音與訓練集語音進行比對,采用改進的DBSCAN算法,并將判別的結果交由交互層進行顯示。
數據層,主要是用來存儲核心算法層篩選出來的訓練集語音,用來與核心算法層進行數據的交互。
如圖3所示,是取n為3,以第1號訓練語音為主體,判斷檢驗語音和第1號語音是否相似的系統流程圖。
首先確定訓練語音的大小,如取n=3,即需要說話人Z首先錄入一共6條相同的語音片段,如“你好”,并按照先后順序標號。然后按照標號的奇偶性進行分組,其中1,3,5為一組,2,4,6為一組。以奇數組為例,如果組內兩兩之間的余弦相似角度都大于12,則認為該組數據無效,需要重新錄制,否則需要分別對每個語音進行判斷,某條語音與其他兩條語音之間的余弦相似角度均小于等于12,則認為該條語音數據是合格的,否則需要重新錄制,直至滿足要求為止。
以1號語音為例,用1號語音分別與2,3,4,5,6號語音進行余弦相似度的計算得到5個角度值,計算出這組數據的平均值和標準差,從而得到說話人每次說“你好”與1號語音之間的角度分布。然后利用該概率分布密度函數,做左邊區間估計,置信區間可以為90%、95%、100%(可選),得到一個角度閾值Y。
用檢驗語音和1號語音做相似度計算,得到一個角度值X,如果X≤Y,我們就認為檢驗語音和1號語音是相似的,否則不相似。
如果檢驗語音和1,2,3,4,5,6號語音一共有超過n條(這里預設閾值為n,也可以是其他數值)語音相似,則認為該訓練語音是說話人Z所發出的語音,反之不是說話人Z所發出的。如果判斷結果認為是說話人Z所發出的,則系統返回比對成功,否則系統返回比對失敗。訓練語音的錄入只需要進行一次,不需要每次進行比對前都錄入一遍訓練語音。
以上實施例僅為說明本發明的技術思想,不能以此限定本發明的保護范圍,凡是按照本發明提出的技術思想,在技術方案基礎上所做的任何改動,均落入本發明保護范圍之內。