聲紋識別概述

GMM-UBM系統框架

2017.1.16 http://blog.csdn.net/xmu_jupiter/article/details/47209961

最初用的特徵是聲學特徵MFCC,這個東西我不太熟,只知道它是從wav或者其它格式語音文件直接提出。

有了特徵就可以建立模型了,這裏我們的模型叫做“高斯混合模型”。不同說話人的差異主要表現在其短時語音譜的差異,而這又可以用每個說話人的短時譜特徵所具有的概率密度函數來衡量。高斯混合模型GMM將空間分佈的概率密度用多個高斯概率密度函數的加權和來擬合,可以平滑地逼近任意形狀的概率密度函數,並且是一個易於處理的參數模型。在具體表示上,這個模型實際上就是把高斯混合模型的每個高斯分量的均值向量排列在一起組成一個超向量作爲某一個說話人的模型,稱爲均值超矢量。

可是,通常在實際中每一個說話人的語音數據很少,而訓練高斯混合模型又需要大量的訓練數據,怎麼辦呢?於是,UBM通用背景模型被提了出來。在訓練說話人模型的時候,由於註冊時說話人的數據稀疏,通常利用一個通用背景模型(Universal Background Model,UBM)和少量的說話人數據,通過自適應算法(如最大後驗概率MAP,最大似然線性迴歸MLLR等)得到目標說話人模型。

OK,特徵和模型都建立好了,我們怎麼測試呢?這裏用到一個對數似然比的評價指標。用測試數據分別與模型和UBM進行似然度比較,然後將這兩個似然相除再取對數,用得到的值作爲打分來評價一條測試數據是否和模型匹配。

怎麼理解這個打分標準呢?由於UBM代表了最最普遍的平凡的語音特徵,而模型代表了屬於這一個說話人的特徵。用對數似然比來表示,就是評價測試數據到底和模型更接近還是和UBM最接近。最後設定一個閥值,用來進行最後的分類判斷。

聯合因子分析

上面的GMM-UBM系統非常經典,之前一般作爲說話人識別的基線系統。但是,這個系統不能夠很好解決說話人識別領域中的一個最令人頭疼的問題,那就是信道魯棒。關於信道魯棒的複雜性問題可以查閱資料。於是,就有人提出了將因子分析應用到說話人領域。

聯合因子分析認爲,在GMM-UBM系統中的高斯模型均值超矢量,大體上可以分爲跟說話人本身有關的矢量特徵和跟信道以及其他變化有關的矢量特徵的線性疊加。也就是,將說話人GMM均值超矢量所在的空間劃分爲本徵空間,信道空間,最後還有一個殘差空間。這樣,如果我們能抽取出跟說話人本身相關的特徵而去掉和信道相關的特徵,就能很好地克服信道影響進行識別了。事實證明這種思路是對的,採用聯合因子分析後,系統的性能明顯提高。

基於I-vector特徵的說話人識別

傳統的聯合因子分析建模過程主要是基於兩個不同的空間:由本徵音空間矩陣定義的說話人空間,由本徵信道空間矩陣定義的信道空間。受聯合因子分析理論的啓發,Dehak提出了從GMM均值超矢量中提取一個更緊湊的矢量,稱爲I-Vector。這裏的I是身份(Identity)的意思,出於自然的理解,I-Vector相當於說話人的身份標識。

I-vector方法採用一個空間來代替這兩個空間,這個新的空間可以成爲全局差異空間,它即包含了說話者之間的差異又包含了信道間的差異。所以I-Vector的建模過程在GMM均值超矢量中不嚴格區分話者的影響和信道的影響。這一建模方法的動機來源於Dehak的又一研究: JFA建模後的信道因子不僅包含了信道效應也夾雜着說話人的信息。

所以到現在,我們主要用的特徵是i-vector。這玩意是通過高斯超向量基於因子分析而得到的。這玩意是基於單一空間的跨信道算法,該空間既包含了說話人空間的信息也包含了信道空間信息。相當於用因子分析方法將語音從高位空間投影到低維。

你可以把I-vector看做是一種特徵,也可以看做是簡單的模型。最後,在測試階段,我們只要計算測試語音I-vector和模型的I-vector之間的consine距離,就可以作爲最後的得分。這種方法也通常被作爲基於I-vector說話人識別系統的基線系統。

信道補償算法

其實,信道補償相關的工作從有說話人識別領域以來就一直有研究,包括上面的GMM-UBM系統和聯合因子分析系統。信道補償主要分三個層次:基於特徵的補償,基於模型的補償和基於得分的補償。由於我所研究的方面都是在I-vector特徵的基礎上的,所以這裏重點說一下基於I-vector特徵的信道補償算法。

爲啥要信道補償呢?前面說I-vector的時候說了,I-vector特徵中既包含說話者信息又包含信道信息,而我們只關心說話者信息。也就是說,由於信道信息的存在,對我們做說話人識別產生了干擾,甚至嚴重影響系統的識別準確率。於是,我們就要想辦法儘量減小這種影響。這就是所謂的信道補償。

線性鑑別分析LDA

信道補償算法有很多,先說一下LDA。關於LDA的資料很多,這裏簡單說一下爲什麼LDA能夠用在說話人識別而且是如何進行信道補償的。

首先,LDA至多可生成C-1維子空間(C爲分類類別數),LDA降維後的度區間在 [1,C-1] ,與原始特徵數n無關,因此二分類問題至多可以降維到一維,導致有些線性不可分數據分佈情況無法分類。在說話人識別中,大部分情況是二分類問題,所以這裏LDA的作用是將原始高維特徵數據降維到一維,這樣每一個樣本特徵向量映射爲一維上的一個點,這個點的數值表示該點到原點的距離。

當一個說話人有很多語音時,表現爲這些語音在說話人空間中聚集爲一簇。如果這些語音收到信道的影響,那麼就表現爲這個說話人的語音的方差很大。然後,LDA嘗試着找到一個新的方向,將原來的所有數據投影到這個方向,使得在這個方向中同一說話人的數據具有最小的類內方差,同時不同說話人之間的距離儘量大。這樣,就達到減小信道差異的影響了。

LDA其實也是一種降維方法。它儘量去移除不需要的方向,最小化類內的方差信息量。也就是,LDA尋找一個新的方向去更好地對不同的類做出分類。可見,LDA非常適合作爲說話人識別系統的信道補償算法。

當使用LDA對測試數據和模型的I-vector進行重新投影后,然後計算它們之間的cosine距離,就可以作爲最後的得分。

最後簡單說一下,LDA如何找到這個映射方向。前面不是說LDA的目的是最大化類間距離,最小化類內距離麼。我們很容易認爲只要定義一個目標函數然後去用一般的最優化方法去求近似解就好了。其實,不用這麼麻煩的,LDA是可以直接求取解析解的。具體方法就是對目標函數求導並且令導數爲零。但是在求導之前,記得對分母進行歸一化,因爲如果不歸一化的話,映射方向擴大任意倍等成立,所以不好確定映射方向的具體值。

OK,求解析解的過程中,經過一系列變化,我們最終只要求出原始樣本的均值和方差就可以最佳映射方向 w,這就是Fisher 於 1936年提出的線性判別分析。

發佈了31 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章