聲紋識別演算法、資源與應用(一)

年初我開了一個名字霸氣的專欄,準備扯扯聲紋識別應用實踐的蛋,可事情一忙就把這事給耽誤了。近幾年語音識別這一波大的發展,大家都被吸引過去搞ASR了。應公司要求擴招聲紋識別團隊,翻了一遍行業內的各種資源,目前仍在做聲紋的寥寥無幾,就連我以前那些做聲紋方向的同學師兄師弟,都幾乎沒有再搞這個方向的了,只好招募一些機器學習的童鞋臨時培養了。無奈只能先來替聲紋識別暖暖場子了。

一、演算法

Speaker recognition以2012年為分水嶺,由statistics-based machine learning,跨到了以deep learning為主線的演算法。隨後,bottleneck feature、d-vector、x-vector、j-vector等DNN-based的系統陸續出現,隨後attention mechanism、Learning to rank等思想被用於改良訓練過程。

對這些演算法按照3類分別做簡要闡述:1)iVector-based;2)dnn-based;3)基於attention mechanism、Learning to rank等思想的改良演算法。

圖1.1 演算法分類

1.1. iVector-based

2011年,第十一屆全國人機語音通訊學術會議(NCMMSC2011)上,大神鄧力給夥計們開了小灶,分享了他在微軟DNN-based speech recognition研究結果(30% relative improvement),群情激奮。就在前一年,ABC(Agnitio/BUT/CRIM)在NIST SRE 2010 workshop上分享了JFA(Joint Factor Analysis,聯合因子分析)的改良版(即iVector[1][16]),群情激奮。

iVector中Total Variability的做法(M = m + Tw),將JFA複雜的訓練過程以及對語料的複雜要求,瞬間降到了極致,尤其是將Length-Variable Speech映射到了一個fixed- and low-dimension的vector(identity vector,即iVector)上。於是,機器學習愛好者群情激奮,所有機器學習的演算法都可以用來解決聲紋識別的問題了。

PLDA(Probabilistic Linear Discriminant Analysis,概率形式的LDA[17])是生成型模型(generated model),被用於對iVector進行建模、分類,實驗證明其效果最好。PLDA是一種信道補償演算法,因為iVector中,既包含說話人的信息,也包含信道信息,而我們只關心說話人信息,所以才需要做信道補償。在聲紋識別訓練過程中,我們假設訓練語音由I個說話人的語音組成,其中每個說話人有J段不一樣的語音,並且我們定義第i個說話人的第j段語音為Xij。那麼,我們定義Xij的生成模型為:

F、G是矩陣,包含了各自假想變數空間中的基本因子,這些因子可以看做是各自空間的基底(basis)。 F的每一列,相當於類間空間的特徵向量;G的每一列,相當於類內空間的特徵向量。而向量Hi和Wij可以看做是該語音分別在各自空間的特徵表示。如果兩條語音的hi特徵相同的似然度越大,那麼它們來自同一個說話人的可能性就越大。

PLDA的模型參數包括4個,mean、F和G、sigma,採用EM演算法迭代訓練而成。通常,我們採用簡化版的PLDA模型,忽略類內特徵空間矩陣的訓練[18],只訓練類間特徵空間矩陣F。即:

打分過程可以參考文獻[17]。

1.2. DNN-based

早期DNN-based Speaker Recognition,用DNN代替GMM去計算Posterior Statistics,延續了DNN-based Speech Recognition的研究成果。2014年,Google提出d-vector[3]後,一系列的DNN-based方法被提出,如x-vector、j-vector等[2][8][9]。下面分別介紹下此類演算法的基本思路。

  • d-vector

DNN訓練好後,提取每一幀語音的Filterbank Energy 特徵作為DNN輸入,從Last Hidden Layer提取Activations,L2正則化,然後將其累加起來,得到的向量就被稱為d-vector。如果一個人有多條Enroll語音,那麼所有這些d-vectors做平均,就是這個人的Representation。DNN的網路結構如圖1.2所示。

圖1.2 用於提取d-vector的DNN模型

因為d-vector是從Last Hidden Layer提取的,通過移除Softmax Layer,可以縮減Model Size。而且,這也可以讓我們在不改變Model Size的情況下,在訓練過程中使用更多的說話人數據來做訓練(因為Softmax Layer被移除了,不用考慮Softmax Layer的節點數)。DNN的訓練過程,可以詳細閱讀參考文獻[3]。

開源代碼:https://github.com/rajathkmp/speaker-verification

  • x-vector

x-vector是Daniel Povey教授在論文[13]中提出的概念,用於描述從TDNN網路中提取的embeddings特徵,如圖1.3所示。

圖1.3 TDNN-based Segment-Level embeddings Diagram

上面的網路結構中,有一個Statistics Pooling Layer,負責將Frame-level Layer,Map到Segment-Level Layer,計算frame-level Layer的Mean和standard deviation。TDNN是時延架構,Output Layer可以學習到Long-Time特徵,所以x-vector可以利用短短的10s左右的語音,捕捉到用戶聲紋信息,在短語音上擁有更強的魯棒性。TDNN的訓練方式可以參考文獻[13]。

提取x-vector,LDA降維,然後以PLDA作為back-end,便可以做Verification。

開源代碼:github.com/kaldi-asr/ka

  • j-vector

提取i-vector依賴於較長(數十秒到數分鐘)的語音,而Text-Dependent Speaker Verification任務中,語音很短(甚至只有1秒左右),所以i-vector不適用於Text-Dependent Speaker Verification。Text-Dependent Speaker Verification屬於Multi-task,既要驗證身份,又要驗證語音內容。j-vector[8]就是為了解決Text-Dependent Speaker Verification而提出的,如圖1.4所示,j-vector從Last Hidden Layer提取。

論文[8]中指出,相比於Cosine Similarity、Joint PLDA,使用Joint Gaussian Discriminant Function作為back-end時,實驗效果最佳。

圖1.4 j-vector網路結構

未完待續...

參考文獻

[1] Niko Brümmer, Doris Baum, Patrick Kenny, et al., 「ABC System description for NIST SRE 2010」, NIST SRE 2010.

[2] David Snyder, Pegah Ghahremani, Daniel Povey, 「Deep Neural Network-based Speaker Embeddings for END-TO-END Speaker Verification」, Spoken Language Technology Workshop , 2017 :165-170.

[3] Variani, Ehsan, et al. "Deep neural networks for small footprint text-dependent speaker verification." Acoustics, Speech and Signal Processing (ICASSP), 2014 IEEE International Conference on. IEEE, 2014.

[4] Liu, Yuan, et al., "Deep feature for text-dependent speaker verification." Speech Communication 73 (2015): 1-13.

[5] Heigold, Georg, et al., "End-to-end text-dependent speaker verification." Acoustics, Speech and Signal Processing (ICASSP), 2016 IEEE International Conference on. IEEE, 2016.

[6] Zhang Chunlei, and Kazuhito Koishida. "End-to-End Text-Independent Speaker Verification with Triplet Loss on Short Utterances." Proc. InterSpeech 2017 (2017): 1487-1491.

[7] Li Chao, et al., "Deep Speaker: an End-to-End Neural Speaker Embedding System." arXiv preprint arXiv:1705.02304 (2017).

[8] Nanxin Chen, Yanmin Qian, and Kai Yu, 「Multi-task learning for text-dependent speaker verificaion,」 in INTERSPEECH, 2015.

[9] Ziqiang Shi, Mengjiao Wang, Liu Liu, et al., 「A DOUBLE JOINT BAYESIAN APPROACH FOR J-VECTOR BASED TEXT-DEPENDENT SPEAKER VERIFICATION」,

[10] FARR Chowdhury,Q Wang, IL Moreno, L Wan, 「Attention-Based Models for Text-Dependent Speaker Verification」, Submitted to ICASSP 2018.

[11] C Zhang, K Koishida, 「End-to-End Text-Independent Speaker Verification with Triplet Loss on Short Utterances」, Interspeech, 2017.

[12] Arsha Nagrani, 「VoxCeleb: a large-scale speaker identification dataset」

[13] D Snyder, D Garcia-Romero, D Povey, S Khudanpur, 「Deep Neural Network Embeddings for Text-Independent Speaker Verification」, Interspeech , 2017 :999-1003.

[14] T. Fu, Y. Qian, Y. Liu, and K. Yu, 「Tandem deep features for textdependent speaker verification」, Proc. InterSpeech, 2014.

[15] Hervé Bredin, 「TristouNet: Triplet Loss for Speaker Turn Embedding」, ICASSP 2017.

[16] Najim Dehak, Reda Dehak, et al., 「Support Vector Machines versus Fast Scoring in the Low-Dimensional Total Variability Space for Speaker Verification」, InterSpeech, 2019.

[17] SJD Prince, JH Elder, 「Probabilistic Linear Discriminant Analysis for Inferences About Identity」, Proceedings, 2007 :1-8.

[18] Y Jiang, AL Kong, L Wang, 「PLDA in the i-supervector space for text-independent speaker verification」, Hindawi Publishing Corp. , 2014 , 2014 (1) :29.

未完待續...


推薦閱讀:

[貝葉斯五]之樸素貝葉斯
[貝葉斯七]之正態分布貝葉斯決策
引領深度學習革命--CNN架構全解析
使用sklearn來進行驗證碼識別
極市分享|機器視覺技術在智能檢測產品研發過程中的應用研究

TAG:聲紋識別 | 機器學習 |