目錄
- 語音活性檢測(Speech/Voice Activity Detection, SAD/VAD)
- 分割(Segmentation)
- 聚類(Clustering)
- 再分割(resegmentation)
有沒有想過人類如何能從一段語音中聽出有幾個説話者,他們又分別説了什麽?人的大腦可以輕而易舉地做到,但是要教會電腦做這件事就需要費一番波折。
説話者分辨(speaker diarization)就是用來解決這個問題的,它可以從一段語音中辨識説話者以及他們説話的片段。
其實speaker diarization早已有之,過去主要是作爲ASR的前處理部分(更多關於ASR的介紹請看自動語音辨識 ASR 的前世今生)。而後,speaker diarization在語音導航、檢索和更高階人機互動應用中,逐漸成爲關鍵技術。
現今,不同的應用場景所面臨到的不同問題,促進了speaker diarization的不同發展。例如在上世紀90年代末至本世紀初期,新聞廣播業界用speaker diarization自動注釋每天在全世界範圍内傳播的電視和廣播節目;2002年起,隨著歐盟M4、AMI等一些相關的項目成立,會議方面的speaker diarization需求猛烈增加,關於多峰態(在會議情境中就是有多個説話者)的語音資料的識別的研究也相應增多了。
簡單來説,speaker diarization可以從一段語音中,識別出是誰在説話,他/她又説了些什麽。
圖一 speaker diarization的流程[1]
試想現在有記錄某次會議的一段音頻材料,材料裏有幾個與會人的聲音交替出現,中間可能夾雜著背景音、噪音,但是我們只想關注當中有人説話的片段而已。所以首先,我們要從該材料中提取有人説話的語音信號,而去除背景噪聲信號和靜音信號,以利後續處理。這個前處理步驟,我們稱之爲語音活性檢測(Speech/Voice Activity Detection, SAD/VAD)。
VAD包含以下兩個主要步驟[2]:
判斷該幀是話音還是噪音 對於一個特徵向量 x" role="presentation" style="font-size: 113%; position: relative;">x ,默認話音和噪音可以叠加,那麽有兩個假設
上述的判斷問題即可轉化爲比較後驗概率 P(H|x)" role="presentation" style="font-size: 113%; position: relative;">P(H|x) 大小的問題:
進行VAD以後,該音頻材料只留下有人説話的語音片段了。下一步是將它根據説話者轉化點進行切割,使得每一小語音段落從聲學信息上看是同一個説話者説的,這個步驟叫分割(Segmentation)。
分割的實現主要是通過滑窗的方式,取相鄰的兩個segment計算差異度,再與閾值比較,如果相鄰的兩segment差異度大於閾值,那就判斷前後兩段的説話者不同。
圖二 d-vector(左)和x-vector(右)[1:1]
計算之前需要先提取segment的説話人特徵,常見的表徵方法有[11]:
i-vector(identity vector) i-vector是基於GMM-UBM所訓練的説話人的聲學特徵。 高斯混合模型(Gaussian mixture models, GMM)是利用多個高斯分佈來加權擬合一個分佈,可以平滑地表達任意形狀的密度分佈,但同時也表示參數會隨著高斯分佈的增加而增加,實作上需要更多的數據才能有效訓練一個GMM模型。 而通用背景模型(universal background model, UBM)是用很多不同説話者的聲音資料預先訓練好的GMM模型,可以減少訓練目標説話人的GMM所需的語音資料,所以GMM-UBM算是對GMM的一種改進。 每一個高斯分佈都有參數:
經驗發現,取GMM中的平均矢量拼接而成的超矢量(或稱均值超矢量)對一位説話者的表徵效果最佳,超矢量表達式如下:
一個GMM-UBM的超矢量參數就表達爲:
其中,為UBM的超矢量,是表徵不同説話人和説話環境的變化矩陣,是隱變量,也就是i-vector。
d-vector[12] 比起GMM這樣常規的因素分析模型(Factor Analysis model),Ehsan Variani等人想到用深度學習網絡(deep neural network, DNN)訓練一個分類器,如圖二(a)所示,以每一幀語音資料作爲輸入,輸出為該語音幀説話者的概率向量,維度就是説話者的數量。d-vector是取DNN模型的最後一個隱藏層來作説話人向量。
x-vector[13] Snyder等人提出了利用TDNN提取説話人特徵,網絡拓撲如圖二(b)所示,將frame level的隱藏層通過statistic pool映射到segment level。取statistic pool之後的隱藏層作表徵向量x-vector,即圖中的embedding a和b。不考慮最後一層,因爲最後一層與説話者數量相關,汎化性不高。
上述提取説話者的特徵也稱爲speaker embedding,它是説話者識別(speaker identification)的基礎,後者是在前者的基礎上再聚類識別的。
根據所提取的説話人特徵向量,我們就能計算差異度(也稱兩個segment的距離)了。主要的度量方式有以下幾種[14][15]:
the Bayesian Information Criterion(BIC)[16]
假設一段語音可以被表示為個維的向量
符合高斯分佈,其中是平均值向量,是共變異數向量。
用假説檢定,我們可以推論得出這段語音中是否有説話者的轉換。
設虛無假設為該語音段内無説話者轉換,則個向量應該都符合同一個分佈;而對立假設則認爲該語音段有説話者轉換,所以到爲止的向量符合一個分佈,第至第個向量符合另一個分佈。
表示如下:
兩個假設的BIC值表示為
其中,為最大似然比,表示為,懲罰係數,為懲罰項
若在該段語音中有一幀的BIC值大於0,表示該處有説話者的轉換。 由於懲罰項的設置會大大影響模型,也不一定適合每一種情景,所以後續有一些改進的算法,像是懲罰項自適應的modified BIC criterion[16:1]或將模型整體的懲罰項一同考慮的其他變式[17]。但總體上,基於BIC的差異度度量計算量還是比較大的。
Generalized Likelihood Ratio(GLR)[14:1]
GLR和BIC類似,是基於假説檢定的算法,不過BIC是移動時間點,而GLR是以兩個固定長度的語音段做説話者轉換偵測。GLR測量距離的式子如下
和分別是兩段相鄰的語音的幀向量,當越小,兩段語音越可能是不同的説話者説的。
這個方法的缺點是閾值比較難定義。
Kullback-Leibler divergence(KL)[18]
也稱相對交叉熵,數值上等於以分佈A的編碼方式對分佈B進行編碼所產生的額外的編碼率,是基於信息理論的一種量度,用來衡量兩個概率分佈的差異情況[19]。
要描述一個系統A所含的資訊量,我們通常用夏農熵(Shannon entropy),它計算A中各個事件的資訊量(self-information)的期望值,定義為
其中,表示求以為目標分佈的期望值,為事件的概率;是要表示事件所需的編碼個數,當時,單位為bit;當時,單位為nat;當時,單位為Hart[20]。
兩個分佈的KL散度定義爲
其中,即、兩個概率分佈的交叉熵。
KL值越大表示分佈和分佈的差異越大。在speaker diarization中,我們就可以用兩個segment分別在特徵向量中的分佈的KL散度來衡量兩個segment的差異。
然而,KL散度不具有對稱性:KL(A;B)和KL(B;A)不一樣,我們希望A、B之間的差異不管是從A算還是從B算都要是一樣的。所以有改進版KL2表示爲
Information Change Rate(ICR)[21]
顧名思義,ICR度量的是若將兩段合爲一段所需改變的信息量,以各語音段的特徵的平均對數似然度來表徵,表示如下
其中、是兩段語音的幀數或是兩個類的特徵數,是兩個段語音合成以後的特徵表達。顯然,合併不同說話者的語音比合併同一說話者的語音增加更多的熵,實作中也是根據ICR值是否超過閾值來判斷説話者轉換的。
ICR的計算量小,且ICR受特徵量的影響較小,因而更加能適應不同語音來源(更robust)。
得到很多的語音小片段之後,我們需要知道那些片段是同一個人講的,哪些是另一位與會者講的。由於不同的人聲學特徵不一樣,根據聲學信息,我們就能將分散的語音片段聚類,一名説話者對應一類,從而標注出每個片段的説話者,這個處理過程就是聚類(Clustering)。
圖三 聚類方法和流程[14:2]
一般是通過計算語音小片段的相似度,進而迭代做層次聚類(Hierarchical clustering)的[15:1]。主要分爲自頂向下、自底向上兩種,前者步驟如下:
自頂向下的做法容易有overfit的情況,在Johnson, S.和Woodland, P的論文中有實現[22],但是比較少用到。
自底向上(agglomerative hierarchical clustering, AHC)的步驟則是:
自底向上的做法容易有underfit的情況,常見的演算法有CURE[23]、ROCK[24]和CHAMELEON[25]。
最後會有再分割(resegmentation)[26]步驟進行修正。分割之後,可能結果會有一些錯誤,例如,在VAD階段拿掉的non-speech語音段可能包含説話者的轉換,導致分割的時候沒有辨識出該轉換點,而將實際上有兩個説話者的語音片段看成只有一個説話者。一般,再分割是引入一個HMM模型來擬合説話者的過渡[26:1],然後重複整個流程。
至此,speaker diarization的流程就依次包含VAD、segmentation、clustering、resegmetation,如圖一所示。下一篇將介紹 speaker diarization的近期發展。