陳秉沃 張二華 唐振民
(南京理工大學(xué)計算機(jī)科學(xué)與工程學(xué)院 南京 210094)
傳統(tǒng)說話人識別技術(shù)是通過采集說話人語音數(shù)據(jù),然后從語音數(shù)據(jù)中提取特征參數(shù),并代入到訓(xùn)練好的高斯混合模型中進(jìn)行逐一打分,得分最高的即是所匹配的說話人。隨著說話人識別技術(shù)的廣泛應(yīng)用,說話人模型數(shù)量不斷增長,若依然采用傳統(tǒng)的說話人識別方法,就會造成兩個問題。其一是說話人識別的耗時過長,效率低下;其二是說話人識別的準(zhǔn)確性大大降低。為了解決這兩個問題,本文對不同距離定義的聚類效果進(jìn)行對比,選取一種最佳的聚類方法,將其應(yīng)用于說話人識別中。使得識別效率大大提高,識別準(zhǔn)確率也有所提高。
傳統(tǒng)的說話人識別技術(shù)分為兩個部分。第一部分是利用所有說話人的訓(xùn)練語音建立各人的高斯混合模型,作為后端模型數(shù)據(jù)庫。第二部分是前端處理,采集說話人的語音,進(jìn)而提取特征參數(shù),再將數(shù)據(jù)逐一代入后端說話人模型中,取得最高分模型,如果此模型對應(yīng)的說話人與前端所采集的說話人為同一人,則表明識別準(zhǔn)確。
大規(guī)模條件下的說話人識別,采用傳統(tǒng)的逐一匹配方式會使單人識別耗時隨后端說話人數(shù)量成正比增長,即當(dāng)說話人規(guī)模擴(kuò)大時,單人識別耗時也會隨之大幅提升,這嚴(yán)重影響系統(tǒng)的實用性。另外,隨著說話人規(guī)模的不斷擴(kuò)大,說話人識別準(zhǔn)確率也隨之降低。
本文的傳統(tǒng)說話人識別中,使用N 階高斯混合模型,其中N 為32,訓(xùn)練語音為10s,測試語音為10s。在不同規(guī)模下的說話人識別的平均單人識別耗時,以及識別的準(zhǔn)確率,如表1所示。
表1 不同說話人規(guī)模的識別耗時以及總體識別準(zhǔn)確率
由表1 可見,當(dāng)說話人規(guī)模(Speaker Count,SPKC)為數(shù)百人的時候,單人識別時長僅需數(shù)秒,總體識別耗時為數(shù)百秒,說話人識別的準(zhǔn)確率也尚可。但是當(dāng)說話人規(guī)模達(dá)到近千級別時,單人識別耗時已經(jīng)達(dá)到了十幾秒,總體識別耗時達(dá)到上萬秒,識別準(zhǔn)確率也明顯降低,這嚴(yán)重影響了說話人識別系統(tǒng)的實用性。一個好的說話人識別系統(tǒng),不僅要考慮高效性,而且需要考慮準(zhǔn)確性。在大規(guī)模說話人的背景下,顯然使用傳統(tǒng)的說話人識別系統(tǒng)無法滿足系統(tǒng)的實用性要求。因此本文考慮采用模型聚類的方法,對傳統(tǒng)識別方法進(jìn)行改進(jìn)。
簡單來說,聚類思想就是把一些相似的對象歸為到同一簇中。簇內(nèi)的對象越相似,并且不同簇之間的距離越遠(yuǎn),那么聚類的效果就越好。在說話人識別中也是如此,將聚類思想應(yīng)用于說話人識別就是進(jìn)行兩步判別,第一步,先判別待識別的說話人對象最接近哪一類的類中心,其中,類中心指的是某一類的代表。第二步,對類中所包含的說話人模型再使用傳統(tǒng)方法進(jìn)行逐一判別。由此可見,聚類的效果以及聚類的數(shù)目直接影響到說話人識別系統(tǒng)的總體性能。
由于聚類算法的局限,聚類結(jié)果中每一類的規(guī)??赡艽笮〔灰唬虼?,在識別中的第二步所對應(yīng)的最近一類的說話人規(guī)模大小也呈現(xiàn)不確定性。因此,引入搜索率的概念。搜索率,指的就是此次識別搜索的說話人規(guī)模Q1與總體說話人規(guī)模Q 的比例,那么搜索率Z如式(1)所示。
每次搜索,都由距離由近及遠(yuǎn)進(jìn)行搜索,先從距離模型最近的類開始搜索,直到搜索的說話人規(guī)模占比達(dá)到預(yù)先給定的搜索率。從林文勇[3]的論文可知,在說話人模型匹配中,有十分之一的模型得分比較高,說明每次匹配具有十分之一的模型比較相似,因此,本文設(shè)置搜索率為10%。在基于聚類的說話人識別中,聚類效果的好壞使用命中率來衡量。一次命中指的是,在一次搜索中,所搜索的說話人模型中,正好包含著與測試說話人相對應(yīng)的說話人模型。命中率(Accuracy Rate,AR)則是說話人測試集合中,命中個數(shù)的占比。命中率越高,說明聚類的效果就越好。命中率公式如式(2)所示。
其中,AR為命中率,AC為說話人測試集中命中的個數(shù)(Accuracy Count,AC),SPKC 為說話人規(guī)模(Speaker Count,SPKC)的縮寫。
基于模型聚類的說話人識別的第二步識別步驟和傳統(tǒng)說話人識別方式一樣,都是進(jìn)行傳統(tǒng)的逐一匹配,但經(jīng)過聚類后所需匹配的說話人模型規(guī)模大為減少。由此可見,第一步聚類效果的好壞直接影響到最后識別的效果。在聚類過程中,常用并且高效的算法為k-means 算法,可以適用于大規(guī)模條件下的說話人識別系統(tǒng)。因此,本文采用k-means算法作為說話人模型聚類的算法,總體流程如下:
1)初始化類,確定聚類數(shù)目,并隨機(jī)選取k 類作為初始類。
2)求剩余的說話人與每一類的類中心的距離,并并入最近的一類。
3)更新每一類的類中心Ci,并令D 等于目前的說話人數(shù)量。
4)而后隨機(jī)抽取任意一類的任意樣本,即某一說話人模型,求得模型離本類中心的距離以及和其他類的類中心的距離。如果離本類的類中心距離是最近的,則讓D 自減1,當(dāng)自減至0 時退出循環(huán)。如果不是則將此說話人歸入最近的一類中,然后跳到3)重新循環(huán)3)~4)步驟。
2.3.1 基于KL散度的聚類方法
相對熵又稱為交叉熵,Kullback-Leible 散度(即KL 散度)等。設(shè)p(x)和q(x)是兩個概率分布,則p對q的K-L散度如式(3)所示。
KL 散度是兩個概率分布P 和Q 差別的非對稱性的度量,在一定程度上可以來衡量兩個分布之間的距離。但是,盡管KL 散度從直觀上是個度量或距離函數(shù),但它實際上并不是一個真正的距離尺度,因為它并不具備對稱性,如式(4)所示。
因此在聚類中,將KL 散度運用到高斯混合模型的KL距離時,可以采用加權(quán)公式來計算,如此兩個模型之間的距離便變?yōu)楣潭ㄖ?,如式?)所示。
目前已經(jīng)有兩個多元高斯混合模型的KL散度數(shù)學(xué)解析形式。如式(6)所示。
其中,Sm和um分別是第m個說話人的一階高斯混合模型的協(xié)方差和均值向量。但是,說話人識別所用的是N 階高斯混合模型S={ai,μi,Σi},如式(7)所示。
表2 基于KL散度的模型聚類方法
由表2 可以看出,命中率并不理想,原因是KL散度并不具備對稱性,即使采用了加權(quán)的算法,也依然不是一個很好的距離定義。并且隨著聚類數(shù)目增多,命中率逐漸降低。原因是使用一個并不精準(zhǔn)的距離定義進(jìn)行聚類,隨著聚類數(shù)目越多,聚類效果就越差,因此命中率會隨著聚類數(shù)目的增多而下降。因此KL散度并不適用于作為模型聚類的距離定義。
2.3.2 基于替代模型Wasserstein distance 的聚類方法
因為KL散度不具備對稱性,所以KL散度并不適用于計算兩個分布之間的距離。通常,可以使用具有對稱性的Wasserstein 距離來計算兩個分布之間的代價距離。Wasserstein 距離也叫做推土機(jī)距離(Earth Mover's distance),這是因為該距離定義中由一個分布轉(zhuǎn)變?yōu)榱硪粋€分布所需要的代價和挖土填土的過程十分相似。目前已經(jīng)有兩個一階多元高斯混合模型之間的Wasserstein 距離的數(shù)學(xué)解析形式[16],如式(8)所示。
其中Sm和um分別是第m 個說話人的一階高斯混合模型的協(xié)方差和均值向量,F(xiàn)是Frobenius范式。
得到第m 個說話人模型S={ai,ui,Σi}的替代模型后,就可以直接使用Wasserstein distance 在多元高斯混合模型的解析公式進(jìn)行計算,解析公式見式(8)。并且在聚類過程中,某一個類的類中心同樣采用加權(quán)的算法,假設(shè)第k 類的說話人個數(shù)為Lk,那么第k 類的類中心Ck={uk,Sk}的加權(quán)平均向量uk和加權(quán)協(xié)方差Sk計算公式則如式(11)以及式(12)所示。
得到第k 類的類中心的參數(shù)后,用該參數(shù)對應(yīng)的一階多元高模型來作為該類的類中心模型,可以得到說話人替代模型與第k 類的類中心的替代模型Ck={uk,Sk}之間的距離d2(,Ck),如式(13)所示。
采用423 人份1min 訓(xùn)練時長的電話語音對N階高斯混合模型進(jìn)行訓(xùn)練,測試時長也為1min,搜索率設(shè)置為10%,基于近似模型Wasserstein distance的聚類方法的命中率如表3所示。
表3 基于替代模型Wasserstein distance的聚類方法的命中率(%)
從表3 得知,在不同的聚類數(shù)目下,命中率都相當(dāng)高且沒有太大的變化,說明基于替代模型Wasserstein distance 的聚類方法的聚類效果比較好。
本文將兩種方案進(jìn)行對比,方案一為基于KL散度的聚類方法,方案二為基于替代模型Wasserstein distance 的聚類方法。兩種方案都采用423人,信道為固定電話信道,并且設(shè)置搜索率為10%,使用的訓(xùn)練語音以及測試語音所用的時長都為1min。所得的兩種聚類方案的命中率對比如表4所示。
表4 兩種方案的聚類命中率對比(%)
從表4 可得,相對于第一種方案,第二種方案聚類效果較佳,并且計算量較小,因此本文選擇第二種方案作為說話人聚類所使用的距離定義。
實驗在Window10系統(tǒng)下,基于VS2020中MFC框架完成。主機(jī)配置為CPU 為Intel(R)Core(TM)i7-9750H CPU @ 2.60GHz,RAM 為32GB。采用的是945 人電話信道下的說話人語音。采用N 階多元高斯混合模型,其中N 為32。并且訓(xùn)練時長為10s,測試語音也為10s。為了對比傳統(tǒng)說話人識別和基于模型聚類的說話人識別的差異,首先要得出傳統(tǒng)說話人識別系統(tǒng)下的識別準(zhǔn)確率和識別耗時,如表5所示。
表5 傳統(tǒng)GMM模型說話人識別系統(tǒng)的識別準(zhǔn)確率和識別耗時
聚類后,可以得到在不同搜索率下的說話人識別準(zhǔn)確率如表6所示。
表6 不同搜索率下的說話人識別準(zhǔn)確率(%)
如表6 所示,在聚類數(shù)目一定的時候,從低往高設(shè)定遞增的搜索率,基于近似模型Wasserstein distance聚類算法的說話人識別的識別準(zhǔn)確率總能在搜索率為10%左右時達(dá)到峰值,并在達(dá)到峰值后再提升搜索率,識別準(zhǔn)確率反而下降。這是因為,設(shè)定搜索率為峰值所對應(yīng)的搜索率時,被搜索的說話人模型中正巧包含與測試說話人相對應(yīng)的說話人模型。在此基礎(chǔ)上繼續(xù)擴(kuò)大搜索范圍,就多增加了不相匹配的干擾項,因此說話人識別的準(zhǔn)確率反而降低。本文通過設(shè)置不同的聚類數(shù)目以及搜索率,可以得出當(dāng)聚類數(shù)目為100 的時候,最佳識別準(zhǔn)確率為89.81%。顯然,對比傳統(tǒng)的說話人識別,在相同的說話人規(guī)模、訓(xùn)練語音以及測試語音情況下,基于聚類方法的識別準(zhǔn)確率有著較高的提升,即從85.08%提升至89.81%。
另一方面,由于搜索率為10%左右時,識別準(zhǔn)確率達(dá)到峰值,因此,我們可以獲取在同樣實驗情況下,基于聚類算法的說話人識別耗時以及模型訓(xùn)練的耗時,如表7 所示。并且可以得到傳統(tǒng)GMM識別與聚類識別的耗時對比如表8所示。
表7 建模耗時以及識別耗時(s)
表8 傳統(tǒng)GMM識別與聚類識別的耗時對比
如表7 及表8 所示,說話人建模與說話人匹配分別需要耗時1845s 與1465s,即聚類后的識別過程一共需要耗時3310s,比起傳統(tǒng)說話人識別所需的12984s,識別效率有著顯著的提升。
本文針對傳統(tǒng)說話人識別在大規(guī)模說話人規(guī)模下的識別準(zhǔn)確率下降,以及識別耗時過長的情況,提出了一種基于模型聚類的說話人識別方法,對傳統(tǒng)的說話人識別方法進(jìn)行改進(jìn)。相比于傳統(tǒng)說話人識別方法,該方法的識別準(zhǔn)確率提升了近4.7%,并且識別耗時僅為傳統(tǒng)識別方法的25.5%,大大提升了說話人識別系統(tǒng)的實用性。