張文林,劉雪鵬,牛銅,陳琦,屈丹
(信息工程大學(xué)信息系統(tǒng)工程學(xué)院,河南 鄭州 450001)
語音表示學(xué)習(xí)是指利用機(jī)器學(xué)習(xí)的方法自動(dòng)提取語音信號(hào)的高層特征表示,該高層特征表示含有音素、說話人、語種等豐富的信息[1],可用于連續(xù)語音識(shí)別、說話人識(shí)別、語種識(shí)別等多種下游任務(wù)[2]。自監(jiān)督語音表示學(xué)習(xí)利用大量無標(biāo)注數(shù)據(jù)學(xué)習(xí)語音表示,可大大降低下游任務(wù)對標(biāo)注數(shù)據(jù)的依賴。對于大部分的人類語言,標(biāo)注數(shù)據(jù)的獲取是十分困難的,一些語言甚至沒有書面文字,而無標(biāo)注語音的獲取相對容易得多,因此自監(jiān)督語音表示學(xué)習(xí)具有重要的研究意義和應(yīng)用前景。
目前,常用的自監(jiān)督語音表示學(xué)習(xí)方法主要有3 種[3-4]:基于對比預(yù)測的方法、基于掩蔽重建的方法和基于多任務(wù)學(xué)習(xí)的方法?;趯Ρ阮A(yù)測的方法采用區(qū)分性模型,以對比預(yù)測為輔助任務(wù),通過最小化某種分類損失來得到語音的表示;基于掩蔽重建的方法采用生成式模型,以語音重建為輔助任務(wù),通過最小化某種重建損失來得到語音的表示;基于多任務(wù)學(xué)習(xí)的方法將對比預(yù)測任務(wù)和語音重建任務(wù)相結(jié)合,以期達(dá)到更好的語音表示效果。從實(shí)驗(yàn)結(jié)果來看[4],基于對比預(yù)測的方法通常優(yōu)于基于掩蔽重建的方法,是目前研究語音表示學(xué)習(xí)最熱門的方法。
基于對比預(yù)測的方法需要解決的主要問題是模型坍塌問題,即模型所有的表示輸出都為一個(gè)常數(shù)。為了解決這一問題,現(xiàn)有方法往往需要精心設(shè)計(jì)某種隨機(jī)采樣機(jī)制以構(gòu)造大量的負(fù)樣本,將其與正樣本進(jìn)行對比,從而避免所有樣本的輸出都相同。目前,基于對比預(yù)測的自監(jiān)督語音表示學(xué)習(xí)方法中[5-8],由于沒有語音標(biāo)注,通常使用相鄰的語音幀作為正樣本,對來自同一批次的數(shù)據(jù)進(jìn)行隨機(jī)采樣以構(gòu)造負(fù)樣本。這種正負(fù)樣本的選擇方法沒有經(jīng)過很好的設(shè)計(jì),不能保證采樣得到的負(fù)樣本質(zhì)量,可能會(huì)出現(xiàn)錯(cuò)誤的正負(fù)樣本對,導(dǎo)致訓(xùn)練不穩(wěn)定。具體實(shí)現(xiàn)中往往需要通過增大批次大小來保證訓(xùn)練的收斂性和模型的性能,因此,這類方法在訓(xùn)練過程中需要耗費(fèi)大量的存儲(chǔ)和計(jì)算資源,計(jì)算成本很高。
近年來,眾多自監(jiān)督圖像對比表示學(xué)習(xí)的研究表明[9]負(fù)樣本并不是訓(xùn)練所必需的,特別是Chen等[10]提出的SimSiam(simple siamese)模型使用簡單的孿生網(wǎng)絡(luò)進(jìn)行自監(jiān)督訓(xùn)練,只需要正樣本進(jìn)行對比學(xué)習(xí),通過梯度停止技術(shù)有效避免了模型坍塌,在ImageNet 上訓(xùn)練100 個(gè)epoch 即可達(dá)到很好的學(xué)習(xí)效果。
在語音表示學(xué)習(xí)領(lǐng)域,目前還沒有使用正樣本對比學(xué)習(xí)方法的相關(guān)研究。本文將正樣本對比學(xué)習(xí)技術(shù)應(yīng)用于語音表示,并提出了一種結(jié)合正樣本對比和掩蔽重建的自監(jiān)督語音表示學(xué)習(xí)方法。SimSiam 模型[10]采用殘差網(wǎng)絡(luò)(ResNet,residual network)[11]作為表示學(xué)習(xí)的主干網(wǎng)絡(luò);與圖像不同,語音信號(hào)是一種連續(xù)的變長序列,因此本文方法采用Transformer[12]作為語音表示學(xué)習(xí)的主干網(wǎng)絡(luò)。本文所提語音表示學(xué)習(xí)方法僅需正樣本進(jìn)行對比學(xué)習(xí),有效避免了大量負(fù)樣本帶來的模型訓(xùn)練困難問題,結(jié)合掩蔽重建任務(wù),在低訓(xùn)練成本下得到了較好的語音表示。本文基于Librispeech 語料庫[13]進(jìn)行自監(jiān)督表示學(xué)習(xí),并在音素分類、說話人分類等下游任務(wù)上進(jìn)行了測試驗(yàn)證,結(jié)果表明與現(xiàn)有模型相比,本文方法得到的模型在所有下游任務(wù)中的性能均達(dá)到或者超過了現(xiàn)有模型的性能。
目前,自監(jiān)督語音表示學(xué)習(xí)的主要方法有基于對比預(yù)測的方法、基于掩蔽重建的方法和基于多任務(wù)學(xué)習(xí)的方法3 種。
基于對比預(yù)測的方法主要基于對比預(yù)測編碼(CPC,contrastive predictive coding)[5]的思想對模型進(jìn)行自監(jiān)督學(xué)習(xí),利用編碼器將語音映射到隱藏的表示空間,要求在表示空間可以對正負(fù)樣本進(jìn)行預(yù)測分類。這類方法的典型代表是Facebook的研究人員提出的wav2vec 系列模型[6-8]及其相關(guān)改進(jìn)模 型[14-15],其中wav2vec 2.0 模型[8]已經(jīng)在連續(xù)語音識(shí)別等多個(gè)下游任務(wù)上得到廣泛使用,性能達(dá)到甚至超過了有監(jiān)督學(xué)習(xí)的方法。HuBERT(hidden-unit bidirectional encoder representation from transformers)[14]在wav2vec 2.0 模型的基礎(chǔ)上,通過K-means 聚類迭代生成離散的偽標(biāo)簽,把預(yù)測標(biāo)簽的任務(wù)用于模型的訓(xùn)練,該方法可視為對比預(yù)測編碼的一種改進(jìn)方法,即通過聚類得到數(shù)量固定的負(fù)樣本進(jìn)行對比學(xué)習(xí)。WavLM[15]沿用了HuBERT的思想,采用了更靈活的位置編碼策略,引入更復(fù)雜的加噪和重疊語音數(shù)據(jù)擴(kuò)展方法,增大了無標(biāo)注訓(xùn)練數(shù)據(jù)的規(guī)模,使語音表示模型在13 個(gè)語音相關(guān)下游任務(wù)中達(dá)到最佳性能。上述方法的一個(gè)共同缺點(diǎn)是需要采用較大批次進(jìn)行訓(xùn)練,訓(xùn)練過程中計(jì)算復(fù)雜度高,容易發(fā)生不穩(wěn)定現(xiàn)象。
基于掩蔽重建的方法主要使用自回歸預(yù)測編碼(APC,autoregressive predictive coding)[16]或BERT(bidirectional encoder representation from transformer)掩蔽重構(gòu)任務(wù)[17]等對表示模型進(jìn)行自監(jiān)督訓(xùn)練。例如,APC和矢量量化自回歸預(yù)測編碼(VQAPC,vector-quantized autoregressive predictive coding)[18]采用自回歸模型,基于過去語音幀的編碼信息來重建未來的語音幀;Mockingjay[19]、TERA(transformer encoder representation from alteration)[20]等模型通過對語音幀進(jìn)行掩蔽重建來進(jìn)行模型訓(xùn)練;pMPC(phoneme-based masked predictive coding)[21]在音素級(jí)進(jìn)行掩蔽重構(gòu),以期模型學(xué)習(xí)到的表示能夠包含更多的音素類別信息。
基于多任務(wù)學(xué)習(xí)的方法將上述2 種自監(jiān)督學(xué)習(xí)任務(wù)進(jìn)行結(jié)合,通過多任務(wù)訓(xùn)練的方式得到更有效的語音表示模型。典型代表有Speech SimCLR[22],它借鑒了圖像自監(jiān)督表示學(xué)習(xí)中SimCLR 模型[23]的對比訓(xùn)練任務(wù),并將其與TERA 掩蔽重建任務(wù)相結(jié)合,證明了對比學(xué)習(xí)任務(wù)和掩蔽重建任務(wù)相結(jié)合的有效性。Zaiem 等[24]探索了多種自監(jiān)督學(xué)習(xí)任務(wù)相互組合的方法。上述模型在對比學(xué)習(xí)任務(wù)中需要構(gòu)建大量的負(fù)樣本對進(jìn)行對比學(xué)習(xí),因此仍需要較大的訓(xùn)練批次,訓(xùn)練復(fù)雜度較高。
在圖像表示學(xué)習(xí)中,基于孿生網(wǎng)絡(luò)的表示學(xué)習(xí)是目前研究的熱門方向。孿生網(wǎng)絡(luò)[25]通過對輸入進(jìn)行2 種不同增強(qiáng),以最大化2 個(gè)分支輸出的相似性進(jìn)行訓(xùn)練。然而,如果只是拉近相似樣本之間的距離,模型很容易得到一個(gè)退化解,即對于所有的樣本輸出都相同,這就是著名的模型坍塌問題。解決這一問題的一個(gè)自然想法是不僅要拉近相似輸入之間的距離,也要使不同輸入之間的距離變大,換句話說就是不僅要有正樣本對,也要有負(fù)樣本對。這種方法確實(shí)解決了模型崩塌的問題,但是也帶來了一個(gè)新的問題,那就是對負(fù)樣本對的數(shù)量要求較大,只有這樣才能訓(xùn)練出足夠強(qiáng)的特征表示能力。例如,MoCo(momentum contrast)[26]通過一個(gè)記憶庫來存儲(chǔ)所有樣本的特征,從而維護(hù)了一個(gè)龐大的負(fù)樣本隊(duì)列。SimCLR[23]通過9 000 以上的批次大小來保證有足夠數(shù)量的負(fù)樣本供對比學(xué)習(xí)。
然而,最新的研究結(jié)果表明,為了保證圖像表示模型不發(fā)生坍塌,負(fù)樣本并不是必需的。例如,BYOL(bootstrap your own latent)[9]基于孿生網(wǎng)絡(luò)構(gòu)造了在線網(wǎng)絡(luò)和目標(biāo)網(wǎng)絡(luò)2 個(gè)子網(wǎng)絡(luò),2 個(gè)子網(wǎng)絡(luò)分別通過反向傳播和動(dòng)量編碼器更新參數(shù),利用在線網(wǎng)絡(luò)的輸出預(yù)測目標(biāo)網(wǎng)絡(luò)的輸出,從而在不使用負(fù)樣本的情況下避免了模型坍塌。SimSiam[10]進(jìn)一步去除了動(dòng)量編碼器,將2 個(gè)子網(wǎng)絡(luò)進(jìn)行權(quán)值共享,對目標(biāo)網(wǎng)絡(luò)使用梯度停止策略,從而僅依靠正樣本使模型學(xué)習(xí)到有意義的表示。SimSiam 方法的模型構(gòu)造和訓(xùn)練過程更簡單,只需要小的訓(xùn)練批次即可進(jìn)行表示學(xué)習(xí),本文的自監(jiān)督語音表示學(xué)習(xí)中的對比學(xué)習(xí)任務(wù)即受其啟發(fā)而來。
基于正樣本對比與掩蔽重建的自監(jiān)督語音表示學(xué)習(xí)模型如圖1 所示。模型采用孿生網(wǎng)絡(luò)結(jié)構(gòu),由2 個(gè)分支組成,其中右分支包含一個(gè)用于對輸入的語音信號(hào)進(jìn)行編碼表示的編碼器(Enc)、一個(gè)用于根據(jù)編碼表示對原始語音進(jìn)行重建的預(yù)測器(Pre);左分支除了編碼器和預(yù)測器外,還包含一個(gè)映射器(Proj)。在模型訓(xùn)練過程中,首先對輸入的語音幀x進(jìn)行兩路增強(qiáng)得到正樣本對x1和x2,將其分別送入孿生網(wǎng)絡(luò)的2 個(gè)分支中。左分支對x1進(jìn)行編碼得到特征表示z1,右分支對x2進(jìn)行編碼得到特征表示z2。將z1、z2分別送入左、右分支的預(yù)測器,得到重建的語音幀分別計(jì)算重建損失函數(shù)。對于語音表示z1,還將其送入左分支的映射器得到輸出來對右分支的語音表示z2進(jìn)行預(yù)測,映射器的輸出p1的維度與語音表示z1、z2相同,計(jì)算p1與z2之間的余弦距離作為對比預(yù)測損失函數(shù),并對其進(jìn)行最小化以使兩路輸出更相似。將z1、z2的重建損失函數(shù)及對比預(yù)測損失函數(shù)進(jìn)行求和作為最終的損失函數(shù),采用梯度下降法對其進(jìn)行優(yōu)化,從而實(shí)現(xiàn)語音表示的多任務(wù)學(xué)習(xí)。
圖1 基于正樣本對比與掩蔽重建的自監(jiān)督語音表示學(xué)習(xí)模型
在圖像的正樣本表示學(xué)習(xí)中,采用ResNet[11]作為編碼器。與圖像不同,語音信號(hào)是一個(gè)連續(xù)的變長序列,具有長時(shí)相關(guān)性,因此在本文方法中左右分支的編碼器均采用多層Transformer 編碼器[12]的堆疊實(shí)現(xiàn)。其中每一個(gè)編碼器層由一個(gè)多頭自注意力層和一個(gè)前向?qū)咏M成,將編碼器的最后一層輸出視為最終的語音表示。模型中的預(yù)測器和映射器均采用兩層前向網(wǎng)絡(luò),僅在語音表示學(xué)習(xí)(即預(yù)訓(xùn)練)階段使用,表示學(xué)習(xí)結(jié)束后僅保留編碼器,將得到的語音表示作為下游任務(wù)的輸入特征。
針對語音數(shù)據(jù),本文采用加入高斯噪聲、時(shí)間掩蔽、頻率掩蔽3 種方式對輸入的語音進(jìn)行隨機(jī)擾動(dòng)獲得增強(qiáng)后的語音數(shù)據(jù),以得到孿生網(wǎng)絡(luò)2 個(gè)分支的輸入數(shù)據(jù)。考慮到在測試階段并不會(huì)對輸入模型的語音數(shù)據(jù)進(jìn)行增強(qiáng),為了減少訓(xùn)練與測試的不一致,對左右2 個(gè)分支均以概率pa進(jìn)行隨機(jī)增強(qiáng)。
具體地,對于一條輸入語音幀x,根據(jù)[0,1]上的均勻分布進(jìn)行采樣得到p∈[0,1],當(dāng)p≥pa時(shí)進(jìn)行語音增強(qiáng),否則不進(jìn)行語音增強(qiáng)。增強(qiáng)后的語音數(shù)據(jù)為
其中,Aug(x)表示對輸入語音x進(jìn)行隨機(jī)擾動(dòng),實(shí)驗(yàn)中通過Specaugment 工具箱[27]實(shí)現(xiàn)。
在模型訓(xùn)練過程中,左右2 個(gè)分支的編碼器和預(yù)測器共享相同的權(quán)值。最終總的損失函數(shù)由重建損失和預(yù)測損失兩部分組成。其中,重建損失為使用左右2個(gè)分支編碼輸出z1和z2對原始語音幀x進(jìn)行重建的誤差。借鑒TERA 模型[20]中的做法,本文使用L1 距離來衡量語音幀的重建誤差,總重建損失為
其中,l1為L1 距離分別為左右2 個(gè)分支的重建語音幀。
預(yù)測損失由左右2 個(gè)分支的語音特征表示z1、z2進(jìn)行相互預(yù)測計(jì)算得到。由于z1、z2分別對應(yīng)同一個(gè)輸入語音幀x的不同增強(qiáng)x1和x2,可視為正樣本對,因此在訓(xùn)練預(yù)測任務(wù)時(shí)只需要最大化預(yù)測值與預(yù)測目標(biāo)之間的余弦相似度即可。
為防止模型坍塌,在反向傳播過程中,對右分支執(zhí)行梯度停止操作,不對其模型參數(shù)進(jìn)行梯度計(jì)算。圖像自監(jiān)督學(xué)習(xí)方法SimSiam[10]從實(shí)驗(yàn)驗(yàn)證和理論證明2個(gè)角度證明了梯度停止在僅采用正樣本進(jìn)行對比學(xué)習(xí)中的重要性。從理論上看,梯度停止操作相當(dāng)于將語音表示視為隱藏變量,引入除模型參數(shù)之外的第二組參數(shù),采用EM(expactation maximization)算法,通過兩組參數(shù)的迭代更新得到表示模型參數(shù)的近似最優(yōu)估計(jì)。
綜上所述,采用梯度停止技術(shù)后,根據(jù)z1對z2進(jìn)行預(yù)測的損失函數(shù)為
其中,stopgrad(?)表示梯度停止操作;Proj(z1)表示z1經(jīng)過預(yù)測器后的輸出;cos(?)表示矢量間的余弦距離,其計(jì)算式為
實(shí)際中由于左右2 個(gè)分支的編碼器參數(shù)完全相同,為了更高效地利用訓(xùn)練樣本,可同時(shí)計(jì)算根據(jù)z2對z1進(jìn)行預(yù)測的損失函數(shù),得到對稱的總預(yù)測損失函數(shù)為
結(jié)合式(2)和式(5),最終訓(xùn)練總損失函數(shù)為
TERA 模型[20]中,將重建損失函數(shù)和對比預(yù)測損失函數(shù)的權(quán)重均設(shè)置為1。采用上述損失函數(shù)進(jìn)行梯度下降訓(xùn)練,最終將學(xué)習(xí)到的編碼器Enc 作為語音表示模型。
實(shí)驗(yàn)中使用公開數(shù)據(jù)集Librispeech[13]訓(xùn)練語音表示模型。為了驗(yàn)證不同數(shù)據(jù)量下模型的性能,分別使用其中的100 h 無標(biāo)注數(shù)據(jù)(train-clean-100)和960 h 無標(biāo)注數(shù)據(jù)(包括train-clean-100、train-clean-360、train-other-500)進(jìn)行自監(jiān)督訓(xùn)練。編碼器為3 層Transformer 編碼器,隱含層維度為768,注意力頭為12 個(gè),前向?qū)泳S度為3 072,dropout 概率為0.1。預(yù)測頭和投影頭均由2 個(gè)線性層構(gòu)成,隱含層維度為768。編碼器的輸入為80 維美爾譜,幀長為25 ms,幀移為10 ms。
將最后一層編碼器的輸出作為最終的語音表示,后接一個(gè)任務(wù)相關(guān)的分類器或預(yù)測器用于下游任務(wù)。在下游任務(wù)訓(xùn)練中,語音表示模型有2 種使用方式:一種是將編碼器參數(shù)凍結(jié),僅作為特征提取器使用;另一種是將編碼器參數(shù)與下游任務(wù)相關(guān)的模型參數(shù)共同在下游任務(wù)的標(biāo)注數(shù)據(jù)上進(jìn)行微調(diào)訓(xùn)練。預(yù)訓(xùn)練模型經(jīng)過微調(diào)后更適應(yīng)具體下游任務(wù)的需要,因此在測試中具有更好的效果。
實(shí)驗(yàn)中測試了音素分類、說話人分類及連續(xù)語音識(shí)別等下游任務(wù)的性能。其中,音素分類任務(wù)遵循CPC[5]的實(shí)驗(yàn)設(shè)置,使用CPC 給出的數(shù)據(jù)集劃分方式將train-clean-100 劃分為訓(xùn)練集和測試集,分別比較了使用單層線性層的分類器和含一個(gè)隱含層的分類器的識(shí)別性能,下文中將上述2 種分類器的實(shí)驗(yàn)結(jié)果分別記為lib-plin和lib-phid;同時(shí)實(shí)驗(yàn)中也測試了在TIMIT(Texas Instruments/Massachusetts Institute of Technology)數(shù)據(jù)集[28]上使用單層線性層作為分類器的實(shí)驗(yàn)結(jié)果,記為timit-plin。訓(xùn)練過程中預(yù)訓(xùn)練模型參數(shù)被凍結(jié)。
在說話人分類任務(wù)中,同樣遵循CPC[5]的實(shí)驗(yàn)設(shè)置,使用CPC 給出的數(shù)據(jù)集劃分方式將train-clean-100 劃分為訓(xùn)練集和測試集,使用單層線性網(wǎng)絡(luò)作為分類器,測試模型的幀級(jí)說話人分類準(zhǔn)確率,記為spk-fr。訓(xùn)練過程中預(yù)訓(xùn)練模型參數(shù)被凍結(jié)。
在連續(xù)語音識(shí)別任務(wù)中,將語音表示作為特征輸入,以 Conformer 模型[29]為聲學(xué)模型,以Transformer 解碼器為語言模型構(gòu)建連續(xù)語音識(shí)別系統(tǒng),分別使用Librispeech的100 h和960 h的有標(biāo)注數(shù)據(jù)作為訓(xùn)練集對模型進(jìn)行訓(xùn)練,測試系統(tǒng)在test-clean 子集上的詞錯(cuò)誤率(WER,word error rate)。訓(xùn)練過程中預(yù)訓(xùn)練模型參數(shù)與語音識(shí)別系統(tǒng)一起微調(diào)訓(xùn)練。
本節(jié)使用train-clean-100 對表示模型進(jìn)行預(yù)訓(xùn)練,測試其在音素分類和說話人分類任務(wù)上的性能。同時(shí)采用加入高斯噪聲、時(shí)間掩蔽和頻率掩蔽3 種數(shù)據(jù)增強(qiáng)方式,對圖1 中左右2 個(gè)分支的輸入均以概率pa進(jìn)行隨機(jī)增強(qiáng)。模型訓(xùn)練過程中使用4 個(gè)1080Ti GPU,總的訓(xùn)練批次大小為8(約12 s 語音數(shù)據(jù)),訓(xùn)練總步數(shù)為200 000 步。在訓(xùn)練下游任務(wù)時(shí),語音表示模型的參數(shù)被凍結(jié),僅作為特征提取器使用。
首先,對不同的數(shù)據(jù)增強(qiáng)概率pa進(jìn)行了對比實(shí)驗(yàn),分別測試了pa=0.5、pa=0.8、pa=1.0 時(shí)的模型性能。不同數(shù)據(jù)增強(qiáng)概率時(shí)模型在下游任務(wù)中的實(shí)驗(yàn)結(jié)果如表1 所示。表1 中還給出了僅對左分支輸入進(jìn)行增強(qiáng)(單路增強(qiáng))的效果。
表1 不同數(shù)據(jù)增強(qiáng)概率時(shí)模型在下游任務(wù)中的實(shí)驗(yàn)結(jié)果
從表1 可知,在音素分類任務(wù)上,pa= 0.5時(shí)模型性能最佳;在說話人分類任務(wù)中,單路增強(qiáng)的模型結(jié)果最佳,pa= 0.5時(shí)模型準(zhǔn)確率與之接近,僅相差0.04。因此,在后面的實(shí)驗(yàn)中,取pa= 0.5進(jìn)行增強(qiáng)。
進(jìn)一步地,分別測試了本文模型在僅使用重建損失、僅使用正樣本對比損失及使用多任務(wù)學(xué)習(xí)時(shí)的性能,同時(shí)還對比測試了使用相同訓(xùn)練數(shù)據(jù)的Mockingjay、TERA 模型的性能。100 h 無標(biāo)注數(shù)據(jù)下的實(shí)驗(yàn)結(jié)果如表2 所示。
表2 100 h 無標(biāo)注數(shù)據(jù)下的實(shí)驗(yàn)結(jié)果
表2中,sia 表示本文模型,100 表示訓(xùn)練數(shù)據(jù)為100 h,rec、con和mt 分別表示僅使用重建損失、僅使用正樣本對比損失和使用多任務(wù)學(xué)習(xí)時(shí)的實(shí)驗(yàn)結(jié)果。例如,sia100-rec 表示本文模型在100 h 訓(xùn)練數(shù)據(jù)、僅使用重建損失時(shí)的實(shí)驗(yàn)結(jié)果。
僅使用重建損失的模型(sia100-rec)可以看作對TERA 模型進(jìn)行了數(shù)據(jù)增強(qiáng),從表2 可知,其在各下游任務(wù)中的性能均優(yōu)于TERA 模型。僅使用正樣本對比損失的模型(sia100-con)能夠?qū)W習(xí)到一定的信息,但是性能相對較差,本文推測這是由于模型在訓(xùn)練過程中僅對單個(gè)語音幀進(jìn)行對比,可供利用的信息較少,導(dǎo)致模型無法得到充分訓(xùn)練。使用正樣本對比和重建損失進(jìn)行多任務(wù)學(xué)習(xí)的模型(sia100-mt)在所有下游任務(wù)的測試中性能均達(dá)到最佳,驗(yàn)證了本文模型的有效性。
本節(jié)進(jìn)一步在960 h 無標(biāo)注數(shù)據(jù)上對模型進(jìn)行訓(xùn)練,參數(shù)設(shè)置與3.2 節(jié)實(shí)驗(yàn)基本相同??偟挠?xùn)練批次大小設(shè)置為8(約12 s 語音數(shù)據(jù)),訓(xùn)練總步數(shù)為1000 000。實(shí)驗(yàn)結(jié)果如表3 所示。
從表3 可知,本文模型(sia960-mt)在所有下游任務(wù)中性能均優(yōu)于TERA 模型。在說話人分類任務(wù)(spk-fr)和TIMIT 數(shù)據(jù)集上的音素分類任務(wù)(timit-plin)中,本文模型(sia960-mt)的準(zhǔn)確率超過了wav2vec 2.0-Base 模型;在librispeech的音素分類任務(wù)(lib-plin和lib-phid)中,性能略低于wav2vec 2.0-Base 模型。出現(xiàn)這一結(jié)果的原因在于,本文模型參數(shù)量較少,學(xué)習(xí)的語音表示復(fù)雜性相對大模型來說較低,具有更好的線性可分性,因此音素分類任務(wù)在單層線性分類器上表現(xiàn)更優(yōu),而在使用多層線性層作為分類器時(shí),測試的準(zhǔn)確率相比wav2vec 2.0-Base 模型略低。
表3 960 h 無標(biāo)注數(shù)據(jù)的測試結(jié)果
本文進(jìn)一步增大了模型訓(xùn)練的批次大小,將總的訓(xùn)練批次增大到32,訓(xùn)練總步數(shù)為1 000 000 步,表示為sia960-mt-bs32。從實(shí)驗(yàn)結(jié)果看,增大訓(xùn)練批次能進(jìn)一步提高語音表示模型的性能,在所有下游任務(wù)測試中均取得了更好的結(jié)果。
由于本文模型參數(shù)數(shù)量僅為wav2vec 2.0-Base模型的且僅使用正樣本進(jìn)行對比學(xué)習(xí),因此可以在僅使用4 個(gè)2080Ti GPU、總的訓(xùn)練批次大小為32(相當(dāng)于48 s 語音數(shù)據(jù))時(shí)即取得較好的訓(xùn)練效果,模型訓(xùn)練所需時(shí)間約為9.5 天。與之相比,相同訓(xùn)練數(shù)據(jù)量條件下,wav2vec 2.0-Base 模型在訓(xùn)練過程中使用了64 個(gè)V100 GPU,總的訓(xùn)練批次大小為1.6 h。如表4 所示,在不考慮不同GPU 性能的情況下,本文模型的預(yù)訓(xùn)練時(shí)間相當(dāng)于使用單個(gè)GPU 預(yù)訓(xùn)練38 天,wav2vec 2.0-Base 模型則相當(dāng)于使用單個(gè)GPU 預(yù)訓(xùn)練102 天。因此,本文方法訓(xùn)練更高效,所需計(jì)算資源更少,實(shí)際中更有利于模型的推廣應(yīng)用。表4 中,下游任務(wù)訓(xùn)練速度和推理速度為歸一化結(jié)果。在推理時(shí)間上,使用單層線性層進(jìn)行音素分類任務(wù)的測試時(shí),wav2vec 2.0-Base 模型在測試集上的推理時(shí)間為3.8 min,本文模型僅需要1.7 min,推理速度是wav2vec 2.0-Base 模型的2.2 倍。
表4 本文模型與wav2vec 2.0-Base 模型參數(shù)量、訓(xùn)練資源比較
連續(xù)語音識(shí)別任務(wù)使用ESPnet 工具箱[30]實(shí)現(xiàn),使用960 h 無標(biāo)注數(shù)據(jù)對表示模型進(jìn)行預(yù)訓(xùn)練,本節(jié)分別在100 h和960 h 有標(biāo)注數(shù)據(jù)條件下對連續(xù)語音識(shí)別模型進(jìn)行微調(diào),以分別模擬低資源和高資源訓(xùn)練條件,分別測試模型在test-clean 子集上的WER,測試結(jié)果如表5 所示。聲學(xué)模型采用Conformer 模型,Trans 表示語言模型采用Transformer 解碼器結(jié)構(gòu),4-gram 表示采用四元文法語言模型。
從表5的實(shí)驗(yàn)結(jié)果可知,在使用100 h 有標(biāo)注數(shù)據(jù)進(jìn)行微調(diào)時(shí),與相同規(guī)模參數(shù)量的模型相比,sia960-mt 與Speech SimCLR的WER 最低,為5.7%;進(jìn)一步將訓(xùn)練批次大小增加至32 后,sia960-mtbs32的WER 進(jìn)一步降低,為5.5%。這一實(shí)驗(yàn)結(jié)果與相同訓(xùn)練數(shù)據(jù)量(100 h 有標(biāo)注數(shù)據(jù))下的wav2vec 2.0-Base和HuBERT-Base 相比還有一定的差距。使用960 h 有標(biāo)注數(shù)據(jù)進(jìn)行微調(diào)后,sia960-mt與wav2vec 2.0-Base和HuBERT-Base 模型相比,WER 僅差0.3%和0.2%,而參數(shù)量僅約為它們的增大訓(xùn)練批次大小后,sia960-mt-bs32 模型的性能進(jìn)一步提高,WER 降低到2.3%。
表5 語音識(shí)別任務(wù)測試結(jié)果
SUPERB[4]是一個(gè)語音處理通用性能基準(zhǔn)排行榜,旨在為語音社區(qū)提供一個(gè)標(biāo)準(zhǔn)和全面的測試平臺(tái),用于評估預(yù)訓(xùn)練模型在涵蓋語音所有方面的各種任務(wù)上的可推廣性,通過10 多個(gè)任務(wù)來測試語音表示對語音內(nèi)容、說話人、語義和副語言4 個(gè)方面的表達(dá)能力。
本節(jié)主要在SUPERB的6 個(gè)任務(wù)上對本文模型進(jìn)行測試,具體如下。
音素識(shí)別(PR,phoneme recognition)任務(wù)。使用LibriSpeech 數(shù)據(jù)集的train-clean-100、dev-clean、test-clean 子集分別作為訓(xùn)練集、驗(yàn)證集、測試集,測試的評價(jià)指標(biāo)為音素錯(cuò)誤率(PER,phone error rate)。
關(guān)鍵詞識(shí)別(KS,keyword spotting)任務(wù)。使用Speech Commands v1.0 數(shù)據(jù)集,包含10 種關(guān)鍵詞、靜音和未知,評價(jià)指標(biāo)為準(zhǔn)確率(ACC,accuracy)。
意圖分類(IC,Intent classification)任務(wù)。在話語級(jí)對說話人的意圖進(jìn)行分類,使用Fluent Speech Commands 數(shù)據(jù)集[31],評價(jià)指標(biāo)為ACC。
說話人辨認(rèn)(SID,speaker identification)任務(wù)。在話語級(jí)進(jìn)行分類,使用VoxCeleb1 數(shù)據(jù)集[32]進(jìn)行訓(xùn)練和測試,評價(jià)指標(biāo)為ACC。
實(shí)例查詢口語術(shù)語檢測(QbE,query by example spoken term detection)任務(wù)。采用QUESST 2014[33]挑戰(zhàn)賽中的英語子集,評估指標(biāo)是最大項(xiàng)加權(quán)值(MTWV,maximum term weighted value),能更好地平衡漏檢和虛警。
說話人確認(rèn)(SV,speaker verification)任務(wù)。使用VoxCeleb1 數(shù)據(jù)集,采用x-vecter[34]作為下游模型,評價(jià)指標(biāo)為等錯(cuò)誤率(EER,equal error rate)。
實(shí)驗(yàn)中采用SUPERB 默認(rèn)的測試方法對上述6 個(gè)任務(wù)進(jìn)行測試,其中預(yù)訓(xùn)練模型僅作為前端的特征提取器,參數(shù)保持凍結(jié)。
表6中展示了多種自監(jiān)督預(yù)訓(xùn)練模型在SUPERB 基準(zhǔn)上的測試結(jié)果。從表6 中可以看出,當(dāng)使用本文自監(jiān)督語音表示模型學(xué)習(xí)的表示作為下游任務(wù)的輸入時(shí),在絕大多數(shù)任務(wù)上相比log-Mel譜均有明顯提升。本文模型與參數(shù)量相近的模型相比,在所有任務(wù)上性能都達(dá)到最佳;與參數(shù)量大得多的wav2vec 2.0-Base和HuBERT-Base 模型相比,在多數(shù)任務(wù)上也有相當(dāng)?shù)谋憩F(xiàn),特別是在SID 任務(wù)上,性能甚至超過了wav2vec 2.0-Base和HuBERT-Base模型。
表6 多種自監(jiān)督預(yù)訓(xùn)練模型在SUPERB 基準(zhǔn)上的測試結(jié)果
本文提出了一種新的自監(jiān)督語音表示學(xué)習(xí)方法,該方法基于孿生網(wǎng)絡(luò)結(jié)構(gòu),將僅使用正樣本的對比學(xué)習(xí)任務(wù)和掩蔽重建任務(wù)相結(jié)合,以多任務(wù)學(xué)習(xí)的方式實(shí)現(xiàn)自監(jiān)督語言表示學(xué)習(xí)。與現(xiàn)有方法相比,本文方法僅使用了正樣本進(jìn)行對比學(xué)習(xí),通過梯度停止策略防止模型坍塌,僅需要較小的批次大小即可進(jìn)行訓(xùn)練。在音素分類、說話人分類和連續(xù)語音識(shí)別等下游任務(wù)中的實(shí)驗(yàn)測試表明,與TERA等同等參數(shù)量下的其他模型相比,本文方法具有更好的性能;同時(shí),與wav2vec2.0-Base 等參數(shù)量大得多的表示學(xué)習(xí)方法相比,本文方法在大大降低模型訓(xùn)練的存儲(chǔ)和計(jì)算開銷的同時(shí)達(dá)到甚至超過了其性能,具有良好的應(yīng)用推廣價(jià)值。