中文語者識別(聲紋)
Chinese Speaker Recognition
找到描述特定對象的聲紋特徵;生物識別技術的一種,通過聲音判別說話人身份的技術
借助不同人的聲音,在語譜圖的分佈情況不同這一特徵,去對比兩個人的聲音,來判斷是否為同一個人
Call for Partner or POC (Proof of Concept) Contact: TonTon ( at ) TWMAN.ORG / InteractionX.Co (at) gmail.com
Interaction Exploration Technologies (Interaction X, 探索互動科技)
看見你的聲音,聽懂你的文字
本文由 Gui-Ru Li & Hsiang Hsu 撰寫初稿後再進行編修,且持續更新中
1. 應用場景
1:1驗證(驗證:Verification):已知對象打電話來,你確認他的身份
1:n驗證(識別:Identification):未知對象打電話來,你判斷他的身份
2. Features:
聽覺特徵(Auditory feature):人耳可以鑑別和描述的聲音特徵
聲學特徵(Acoustic features):利用數學方法計算出的描述參數(向量)
特徵可以輔助縮小1:n驗證的檢索範圍對象
短時特徵:最常使用
長時特徵:通常是短時特徵的平均(基礎頻率/頻譜特徵),較不會受到說話語氣或說話者身體情況變化的影響
3. 鑑別方法好壞
Interclass Varience:從不同聲紋對象提取的不同特徵向量的區分度
Intraclass Varience:從相同聲紋對象在不同時間提取的特徵向量間的相似度
Ex:胎記:Interclass大, Intraclass小
將聲紋向量與已註冊的聲紋向量計算歐氏距離,大於某值則這是源自不同人,反之則為同一人
4. 特徵擷取方法
傳統方法:可用精確數學模型對聲音進行分析,得到的特徵有較好的可解釋性,需要的資料量小。
模板匹配
高斯混合模型(GMM)
聯合因子分析法(JFA)
深度神經網路:一種資料驅動方法,需要大量資料進行訓練,若有夠多與夠好的資料即可預期較好的結果。
5. 公開數據集:aishell 1, aishell 2, CMDS, TIMIT, voxcelab 1, voxcelab 2, CN-celab
常見特徵工程
GMM-JFA
UBM-MAP-GMM為一種確認發話者技術的系統
在JFA模型下,可將模型擴展為說話人空間(V)與環境空間(U)
為了克服訓練資料不夠的狀況因此引入UBM,但是實際應用中U, V無法完美分離
Dehak提出從GMM super-vector中提取更好的向量作為改良方法,稱為I-Vector(Identity-Vector)
iVector-based:Dehak, 2009
利用GMM高斯混合模型提取i-vector
採用Total Variability Space(T),即包含了說話者間的差異與空間上的差異(代表不用嚴格區分是說話者的影響還是空間的影響)
PLDA:用來弱化空間影響的方法
需要較長的(數十秒到數分鐘)的語音,不適用於Text-Dependent Speaker Verification Task (因為語音很短)
DNN-based
d-vector:Google, 2014 ; 中文翻譯
從DNN提取最後一層hidden layer作為embedding
訓練好DNN後,把每一幀語音的Filterbank Energy特徵作為DNN輸入,從Last Hidden Layer提取Activations,做完L2正規化後累加起來得到的向量稱為d-vector;若有多條Enroll語音則將所有d-vectors取平均作為此人的Representation
在不改變model size的前提下使用更多的資料進行訓練:因softmax layer被跳過了因此不考慮softmax layer的節點數
x-vector:Snyder, D, 2018
從TDNN網路中提取embedding進行plda scoring
Utterance-Level的特征计算Loss
Statistics Pooling Layer: 將Frame-level Layer Map到Segment-Level Layer以便計算frame-level Layer的Mean和standard deviation
在短語音上表現較強:TDNN是時延架構,Output Layer可學到Long-Time feature,所以x-vector可以利用短短的10s左右的語音抓到聲紋訊息
提取x-vector,LDA降维,然后以PLDA作为back-end,便可以做Verification
訓練速度非常快,在訓練資料量大時可有較低的EER
j-vector:j-vector, 2015;j-vector join Bayesian, 2017
為了解決Text-Dependent Speaker Verification而提出的,此任務同時要驗證身份也要驗證語音內容,屬於multi-task
j-vector从Last Hidden Layer提取。相比于Cosine Similarity、Joint PLDA,使用Joint Gaussian Discriminant Function作为back-end时,实验效果最佳
適用文本相關的說話者驗證
End-to-end:希望能直接輸入兩段語音來判斷是否來自同一人。
Triplet-Loss-based:實際使用:Google FaceNet, Baidu Deep Speaker
概念:直接使用embeddings間的相似度作為Loss Function
建構一個三元組:anchor, positive, negative
用大量標記好的三元組作為DNN輸入以學習參數
anchor, positive為同一人的不同聲音
anchor, negative為不同人的聲音
目標為最大化ap相似度, 最小化an相似度
相似度:
cosine:愈大相似度愈高(Baidu Deep Speaker)
歐幾里德距離:愈小相似度愈高(Google FaceNet)
改進方向:嘗試使用不同神經網路架構
為什麼NN比i-vector好?
對NN來說資料愈多愈能避免overfitting; i-vector使用UBM/T(無監督訓練),當資料愈多就需要一直調整cluster中心
NN使用多類別cross-entropy進行分類,因此若遇到失真(distorsions)問題DNN都能學到invariant;資料的失真會對i-vector的斜方差矩陣帶來影響,此時就需要做data cleaning或back-end補償
短語音會對NN有影響,因為訓練時長變少了
i-vector的back-end補償NN也可以使用
E2E和Representation的差別
不同的模型結構: E2E包含speaker embedding(front-end) 和 scoring(back-end);Representation只有front-end
不同的訓練目標: E2E是直接輸入兩段語音來判斷是否來自同一人;Representation是判斷在訓練集中的說話者。
不同的訓練方法: E2E使用一對對的語音進行訓練,語音選取好壞會很影響訓練結果;Representation是one-hot的訓練方法,較容易。
不同的泛化能力: E2E只能用在聲紋識別任務中;Representation應用較廣。
技術指標
錯誤拒絕率(False Rejection Rate, FRR):同類的兩人被系統判別為不同類。FRR為誤判案例在所有同類匹配案例中的比例
錯誤接受率(False Acceptance Rate, FAR):不同類的兩人被系統判為同類。FAR為接受案例在所有異類匹配案例中的比例
等錯誤率(Equal Error Rate, EER):調整threshold,當FRR=FAR時,FRR和FAR的數值稱為等錯誤率
準確率(Accuracy,ACC):ACC=1-min(FAR+FRR)
速度:
Real Time Factor 實時比:衡量提取時間跟音頻時長的關係,ex:1秒可以處理80s的音頻,實時比=1:80
驗證比對速度:平均每秒能進行的聲紋比對次數
ROC曲線:描述FAR和FRR間變化的曲線,X軸為FAR,Y軸為FRR。
閥值:當分數超過閥值才做出接受決定。
Multi-Resolution Multi-Head Attention in Deep Speaker Embedding
提出一種pooling方式來計算attentive weight,使得輸入的語音在時間軸上能更好的聚合,進而使end-to-end neural network 在語者識別上獲得更好的效能
General Pooling
Average pooling: 計算多個frame vectors的平均作為整個音檔的d-vector表示
Statistics pooling: 計算多個frame vectors的平均和標準差,再拼接在一起作為整個音檔的d-vector表示
Attentive pooling: 將frame vector做attention計算,並將得到的結果作為weight,再乘上sequence作為整個音檔的d-vector表示
Multi-head attentive pooling: 基於attentive pooling的計算再加上multi-head的設計,產生多組的weight並將各自結果拼接作為輸出
Proposed Pooling:Multi-resolution multi-head attentive pooling: 基於Global multi-head attentive pooling,並增加一個resolution參數T,對不同head的訓練結果做不同程度的稀釋。此參數介於1~無限大,趨近於1表示高度採信訓練結果,趨近於無限大則代表直接使用average pooling,意即完全不採用訓練出的weight
SincNet:Speaker Recognition from Raw Waveform with SincNet
AutoSpeech: Neural Architecture Search for Speaker Recognition
Robust Speaker Recognition Based on Single-Channel and Multi-Channel Speech Enhancement
VAE-based Regularization for Deep Speaker Embedding
PLDA 模型的設計是基於 i-vector 的高斯分佈性質情況下能有最佳表現,但 d-vector 或 x-vector 並沒有這項特性,因此 PLDA 未必能有效發揮;此篇論文提供一個事後 Normalize 的方式,使用 VAE 的向量分布轉換特性將原本已生好的 x-vector (d-vector 同理) 轉換至高斯分佈,並套用新 loss (Cohesive loss) 使向量更向中心點靠攏;根據實驗經此方法 Normalize 的向量在EER上會比原始 x-vector 表現更好
VAE簡述: Variational Auto Encoder 原始 AutoEncoder (AE) 為將輸入 encode 至隱藏空間中的一個向量點,再經 decoder 做還原,而 VAE 的編碼結果便不再是單一向量,而是一個均值向量與一個標準差向量,簡單可理解為將輸入編碼成隱藏空間中的一個高斯分佈
總結: 以理論而言可能會是一個有效的方法 且因這是一個後置的Normalize 對原始模型不會有太大影響 可做為方向之一
Improving End-to-End Single-Channel Multi-Talker Speech Recognition