這是什么概念讀者們?折騰來折騰去聲紋還是在搞GMM,但一路走來,從最初95年采用的32個高斯分量的GMM,一路飆升到1024、2048、甚至4096(敢這么玩的都是業(yè)界土豪)個高斯分量的GMM,模型改改改,公式推推推,折騰到最后一個說話人的聲紋模型只需要保存一個400×1的向量就夠了?

是的!就是這個樣子,這也是為什么我用化繁為簡來作為文章的副標題,i-vector是如此的簡潔優(yōu)雅,它的出現(xiàn)使得說話人識別的研究一下子簡化抽象為了一個數(shù)值分析與數(shù)據(jù)分析的問題:任意的一段音頻,不管長度怎樣,內(nèi)容如何,最后都會被映射為一段低維度的定長i-vector。
我們只需要找到一些優(yōu)化手段與測量方法,在海量數(shù)據(jù)中能夠?qū)⑼粋€說話人的幾段i-vector盡可能分類得近一些,將不同說話人的i-vector盡可能分得遠一些。同時Dehak在實驗中還發(fā)現(xiàn)i-vector具有良好的空間方向區(qū)分性,即便上SVM做區(qū)分,也只需要選擇一個簡單的余弦核就能實現(xiàn)非常好的區(qū)分性。截至今日,i-vector在大多數(shù)情況下仍然是文本無關(guān)聲紋識別中表現(xiàn)性能最好的建??蚣?,學者們后續(xù)的改進都是基于對i-vector進行優(yōu)化,包括線性區(qū)分分析(Linear Discriminant Analysis, LDA),基于概率的線性預測區(qū)分分析(probabilistic linear discriminant analysis,PLDA)甚至是度量學習(Metric Learning)等。
4. 迷思-文本相關(guān)?文本無關(guān)?
既然i-vector在文本無關(guān)聲紋識別上這么牛逼,那它在文本相關(guān)識別上一定也很厲害吧?No!在看似更簡單的文本相關(guān)聲紋識別任務上,i-vector表現(xiàn)得卻并不比傳統(tǒng)的GMM-UBM框架更好。
為什么?因為i-vector簡潔的背后是它舍棄了太多的東西,其中就包括了文本差異性,在文本無關(guān)識別中,因為注冊和訓練的語音在內(nèi)容上的差異性比較大,因此我們需要抑制這種差異性;但在文本相關(guān)識別中,我們又需要放大訓練和識別語音在內(nèi)容上的相似性,這時候牽一發(fā)而動全身的i-vector就顯得不是那么合適了。
5. 進擊:我們的youtu-vector
盡管學術(shù)界喜歡更難的挑(zuo)戰(zhàn)(si),但工業(yè)界在很多時候沒法和學術(shù)界保持一致。識別穩(wěn)定,快速,用戶體驗好,才是一個聲紋系統(tǒng)能夠落地的核心評價指標。為此,首選的仍然是文本相關(guān)識別的應用,而在文本相關(guān)識別應用中,安全性最高的仍然是隨機數(shù)字聲紋識別。
盡管i-vector在文本相關(guān)上識別上似乎有點水土不服,但畢竟它在擅長的領域上已經(jīng)展現(xiàn)了強大的性能。因此,如何能將i-vector的實力應用在我們的任務中,讓隨機數(shù)字聲紋識別也能發(fā)揮出最大的能量,是優(yōu)圖實驗室一致努力的目標。
針對i-vector弱化語意建模的屬性,我們細化了i-vector的表征范圍,即我們不再用i-vector針對一整段語音進行建模,而是將i-vector拆解為針對每個數(shù)字進行建模,這樣i-vector從只表征說話人身份的一段向量細化為了表征身份+數(shù)字內(nèi)容的一個向量。

圖12:傳統(tǒng)的i-vector提取框架,并不針對文本差異進行區(qū)分

圖13:針對數(shù)字內(nèi)容的差異性進行更細粒度的i-vector提取
這種更細粒度的i-vector劃分為i-vector應用于隨機數(shù)字聲紋識別帶來了兩個明顯的改進:
為了驅(qū)動i-vector背后的UBM和全因子矩陣,我們不再需要海量的數(shù)據(jù),只需要專注于具體的數(shù)字片段切分,極大降低了驅(qū)動系統(tǒng)所需的訓練數(shù)據(jù)的規(guī)模;
由于每個i-vector只針對數(shù)字進行建模,每個數(shù)字i-vector背后的數(shù)字UBM和數(shù)字全因子矩陣,都不需要像文本無關(guān)那樣龐大的模型規(guī)模,相較于文本無關(guān)識別的任務,模型復雜度降低數(shù)十倍后,依然能在實際場景下表現(xiàn)出同樣好的性能。
模型的簡化帶來的直接優(yōu)勢就是計算復雜度和空間復雜度的壓縮,同時,盡管需要提取的i-vector數(shù)量比過去多了(目標用戶語音中包含數(shù)字的集合數(shù)就是目標用戶最終的i-vector集合數(shù)),但將提取過程并行化后,這種細化帶來的額外計算與存儲基本上是可以忽略的。