聲紋識別之I-Vector

在深度學習的路上,從頭開始瞭解一下各項技術。本人是DL小白,連續記錄我自己看的一些東西,大家可以互相交流。

本文參考:https://blog.csdn.net/u014688145/article/details/53046765?locationNum=7&fps=1

https://blog.csdn.net/qq_27292549/article/details/79128964

https://blog.csdn.net/yifeng4321/article/details/54572536

https://blog.csdn.net/xmu_jupiter/article/details/47281211

話者確認中信道和時長失配補償研究_胡羣威

以及實驗室同學的PPT,感謝!

 

這篇文章算是對GMM-UBM系統框架的後續處理,默認大家已經熟悉了GMM-UBM模型,如果沒有的話,可以參考我之前的文章:https://blog.csdn.net/weixin_38206214/article/details/81084456

一、前言

在上篇文章中,已經大致的闡述了GMM-UBM系統框架。但是在實際應用中,由於說話人語音中說話人信息和各種干擾信息摻雜在一起,不同的採集設備的信道之間也具有差異性,會使我們收集到的語音中摻雜信道干擾信息。這種干擾信息會引起說話人信息的擾動。傳統的GMM-UBM方法,沒有辦法克服這一問題,導致系統性能不穩定。

在GMM-UBM模型裏,每個目標說話人都可以用GMM模型來描述。因爲從UBM模型自適應到每個說話人的GMM模型時,只改變均值,對於權重和協方差不做任何調整,所以說話人的信息大部分都蘊含在GMM的均值裏面。GMM均值矢量中,除了絕大部分的說話人信息之外,也包含了信道信息。聯合因子分析(Joint Factor Analysis, JFA)可以對說話人差異和信道差異分別建模,從而可以很好的對信道差異進行補償,提高系統表現。但由於JFA需要大量不同通道的訓練語料,獲取困難,並且計算複雜,所以難以投入實際使用。由Dehak提出的,基於I-Vector因子分析技術,提出了全新的解決方法。JFA方法是對說話人差異空間以與信道差異空間分別建模,而基於I-Vector的方法是對全局差異進行建模,將其二者作爲一個整體進行建模,這樣處理放寬了對訓練語料的限制,並且計算簡單,性能也相當。

由於I-Vector矢量中不僅包含說話人差異信息,同時也存在信道差異信息,不光需要去除I-Vector矢量中的信道干擾,同時還需要信道補償技術來消除信道干擾。

關於信道補償算法會在明天的文章中發出,發出之後會貼上鍊接。

在I-Vector的計算中,涉及到隱馬爾可夫模型和Baum-Welch算法,這部分會在之後有空補上,大家可以先參考博客:

https://blog.csdn.net/u014688145/article/details/53046765?locationNum=7&fps=1

二、均值超矢量

均值超矢量(supervector)是GMM-UBM模型的最終結果。在GMM-UBM框架下,說話人模型是從UBM模型自適應得到的,過程中只改變了均值的大小,因此說話人之間的區別信息都蘊含在GMM的均值矢量中。將說話人GMM模型的每個高斯成分的均值堆疊起來,形成一個高維的超矢量,即爲均值超矢量。假設語音聲學特徵參數的緯度爲P,GMM的混合度爲M(M個高斯成分),那麼這個GMM的均值超矢量的維度爲MP。均值超矢量生成過程如下圖:

由於均值超矢量的維度非常高,一般情況都會高達上萬維,會有一定程度的冗餘信息存在,爲此我們需要使用因子分析對其進行降維,提取具有區分性的特徵。

三、因子分析的簡介

信息冗餘是高維數據分析常見的問題,使用因子分析方法,可以將一些信息重疊和複雜的關係變量簡化爲較少的足夠描述原有觀測信息的幾個因子,是一種數據降維的統計方法。本文介紹JFA和I-vector都爲因子分析方法。

設P維的觀察矢量x可以用n個因子組合得到,它們之間的關係k

其中,μ爲觀測矢量x的均值,即E[x] = μ (期望);

矢量z爲不可觀測的變量,稱爲隱藏因子;

矩陣A爲因子荷載矩陣;

矢量e爲誤差矢量。

可以理解爲,因子分析法認爲高維數據樣本實際上是由低維數據樣本經過線性變化,疊加誤差擾動生成的。

另一個版本的因子分析概念

è¿éåå¾çæè¿°

è¿éåå¾çæè¿°

這個版本與第一個版本的公式相同,只是更詳細的介紹了因子分析構成原理,從數學的角度而言,更容易看懂。

 

四、聯合因子分析(JFA)

在傳統的基於GMM-UBM的識別系統中,由於訓練環境和測試環境的失配問題,會導致系統性能不穩定。聯合因子分析(Joint Factor Analysis,JFA)認爲,說話人的GMM模型的差異信息,是由說話人差異和信道差異這兩個不可觀測的部分組成的,公式如下:

其中,s爲說話人相關的超矢量,表示說話人之間的差異;

c爲信道相關的超矢量,表示同一個說話人不同語音段的差異;

M爲GMM均值超矢量,表述爲說話人相關部分s和信道相關部分c的疊加。

如上圖所示,聯合因子分析實際上是用GMM超矢量空間的子空間對說話人差異以及信道差異進行建模,從而便可以去除信道的干擾,得到對說話人身份更精確的描述。

JFA定義公式如下:

其中,s爲說話人相關的超矢量,表示說話人之間的差異;

m爲與說話人以及信道無關的均值超矢量;

V爲低秩的本徵音矩陣;

y爲說話人相關因子;

D爲對角的殘差矩陣;

z爲殘差因子;

c爲信道相關的超矢量,表示同一個說話人不同語音段的差異;

U爲本徵信道矩陣;

x爲與特定說話人的某一段語音相關的因子。

這裏的超參數集合{V,D,U}即爲需要評估的模型參數。

有了上面的定義公式,我們可以將均值超矢量重新改寫爲如下形式:

爲了得到JFA模型的超參數,我們可以使用EM算法訓練出UBM模型,使用UBM模型提取Baum-Welch統計量。具體的計算可以參考論文:話者確認中信道和時長失配補償研究_胡羣威

五、I-Vector矢量

JFA(聯合因子分析)方法的思想是使用GMM超矢量空間的子空間對說話人差異和信道差異分別建模,從而可以方便的分類出信道干擾。然而,Dehak注意到,在JFA模型中,信道因子中也會攜帶部分說話人的信息,在進行補償時,會損失一部分說話人信息。所以Dehak提出了全局差異空間模型,將說話人差異和信道差異作爲一個整體進行建模。這種方法改善了JFA對訓練語料的要求,和計算複雜度高的問題,同時性能也與JFA相當,逐漸流行起來。

給定說話人的一段語音,與之對應的高斯均值超矢量可以定義爲如下:

其中,M爲給定語音的高斯均值超矢量;

m爲通用背景模型(UBM)的高斯均值超矢量,該超矢量與具體說話人以及信道無關;

T爲全局差異空間矩陣,低秩;

w爲全局差異空間因子,它的後驗均值,即爲I-Vector矢量,它先驗地服從標準正態分佈。

相對於JFA而言,I-Vector的計算量大大降低,可以應對大規模數據,同時因爲I-Vector本身具有不錯的跨信道能力和PLDA信道補償法的引入,I-Vector對信道的魯棒性也比JFA更好。

六、I-Vector的矩陣估計過程

在給定的公式(如下)中,M和m是我們可以計算的出的,而全局差異空間矩陣(T)和全局差異空間因子(w)是我們需要估計的,接下來爲大家介紹以下這兩個參數的估計方法。

1、全局差異空間矩陣T的估計

全局差異空間矩陣(T)認爲所有給定的數據都來自不同的說話人,即使是一個說話人的多段語音也同樣認爲是來自不同人。

估計步驟如下:

計算每個說話人對應的Baum-Welch統計量

在後續計算中需要用到的Baum-Welch的一階中心統計量

爲了方便計算,可以將統計量擴展爲矩陣形式:

         

通過上式計算每一段語音的Baum-Welch統計量,使用EM算法迭代進行T矩陣的訓練:

1> 訓練之前,先對T矩陣進行隨機初始化;

2> E步驟:計算說話人因子的方差和均值

3> M步驟:進行最大似然值重新估計

並對所有語音,更新模型參數矩陣T

4> 按照上述算法步驟,不斷重複2>,3>步驟,循環迭代,直到達到終止條件,最後得到最終的模型參數,即爲全局差異空間矩陣T,一般迭代次數在10次左右。

2、全局差異空間因子w的估計

I-Vector矢量定義爲全局差異空間因子w的極大後驗點估計,也就是隱藏因子w的後驗均值。我們在估計獲得全局差異空間矩陣T後,對給定的說話人的一句話,先提取零階、一階Baum-Welch統計量(在T矩陣估計中已提取),即可計算I-Vector的估計值,公式如下:

如果目標說話人的語音有h條,通過上述公式可以獲得h條I-Vector矢量,一般情況下I-Vector的維度在400-600之間。該矢量可以代表說話人的身份,具有較強的區分性,而且維度相對較低,可以大幅減少計算量。

總結而言:

JFA因子分析是對於GMM-UBM系統框架,在信道干擾方面提出的一個解決方案,通過分別建模並信道補償的方法,消除信道的干擾。而I-Vector是對JFA因子分析訓練語料要求高,計算複雜的一個解決方案,在整體建模的情況下,使用UBM+對應語音的特定因子的方式,對每一段語音進行補償。

本人的一些理解,說的不一定對,大家可以跳過:

在聲紋識別的進化史中,可以看到前輩們是通過一個又一個的解決方案,把聲紋識別這個難題解決掉。從GMM的語料不夠,提出UBM;在GMM-UBM中,又發現了信道干擾,於是提出JFA;在JFA的計算複雜和語料不夠的情況下,提出了I-Vector。讓我真實的看到了聲紋識別的進步是多麼的曲折艱難,也看到了前輩們的努力和汗水。話不多說,大家一起加油吧!

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