陳宙斯,胡文心
華東師范大學(xué) 計算中心,上海 200062
傳統(tǒng)參數(shù)語音合成方法是基于統(tǒng)計學(xué)習(xí)和決策樹的隱馬爾科夫-高斯混合模型[1](HMM)。HMM對聲音特征的適應(yīng)性和魯棒性高、需要較小的計算代價[2]和在訓(xùn)練數(shù)據(jù)較少的時候有更好的表現(xiàn)[3]等諸多優(yōu)點(diǎn),使其長期成為語音合成方法的主流技術(shù)。但其合成質(zhì)量和泛化能力卻落后于近年興起的神經(jīng)網(wǎng)絡(luò)模型。原因在于馬爾科夫假設(shè)長度的制約和生成過程的規(guī)則是離散的。
神經(jīng)網(wǎng)絡(luò)是更為泛用的數(shù)值型計算模式,根據(jù)應(yīng)用場合使用不同的網(wǎng)絡(luò)。前向網(wǎng)絡(luò)模型建立樣本到標(biāo)簽的一對一映射,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在序列間建立映射,全部計算均為連續(xù)數(shù)值空間,沒有HMM離散規(guī)則跳轉(zhuǎn)。長短期記憶神經(jīng)網(wǎng)絡(luò)[4](LSTM)克服了普通循環(huán)神經(jīng)網(wǎng)絡(luò)梯度消散或爆炸問題[5],以狀態(tài)自鏈接的形式描述序列動態(tài)的變化規(guī)律,從序列整體上得到更精確的映射關(guān)系。神經(jīng)網(wǎng)絡(luò)在大數(shù)據(jù)學(xué)習(xí)上獲得了精度優(yōu)勢,但當(dāng)映射維度和層數(shù)多時,計算耗時隨著門限矩陣運(yùn)算的復(fù)雜度迅猛增加。
在英文語音處理上,文獻(xiàn)[3]驗證數(shù)據(jù)集大小對聲學(xué)模型影響明顯,這是神經(jīng)網(wǎng)絡(luò)慢學(xué)習(xí)算法的普遍特征;文獻(xiàn)[6]使用兩個LSTM網(wǎng)絡(luò)分別預(yù)測音素發(fā)音時長和該音素倒頻譜,提出了一個可實(shí)施的流式參數(shù)化語音合成方法。文獻(xiàn)[7]使用BDLSTM計算順向和逆向序列狀態(tài),損失了流式輸出。
本文討論LSTM的門限簡化和信息擴(kuò)展。利用輸入門和遺忘門的邏輯互補(bǔ)性進(jìn)行合并,移除輸出門,減少單向計算量。通過滑動窗口和前向網(wǎng)絡(luò),在增加網(wǎng)絡(luò)輸入信息的同時壓縮輸入維度,使其效果接近更高質(zhì)量的BDLSTM。在實(shí)驗中對比HMM、DNN、BDLSTM,驗證簡化的LSTM在語音合成上有效性和質(zhì)量的提升。
文本音素信息到倒頻譜之間的映射關(guān)系是語音合成系統(tǒng)的核心部分(圖1)。傳統(tǒng)HMM模型為一對多映射,時長參數(shù)不會被顯示給出以控制每個狀態(tài)持續(xù)時間,而是由轉(zhuǎn)移矩陣決定生成若干幀倒頻譜。神經(jīng)網(wǎng)絡(luò)一次輸入對應(yīng)一次輸出,需要訓(xùn)練兩個模型[6]:(1)音素時長模型;(2)倒頻譜模型。
圖1 神經(jīng)網(wǎng)絡(luò)音素到倒頻譜映射
音素信息是包含發(fā)音與語言相關(guān)的向量序列。預(yù)測時長后,使用時長擴(kuò)展音素信息為多個描述幀,對應(yīng)預(yù)測倒頻譜幀。時長模型決定韻律,倒頻譜決定音色音調(diào),兩者都對合成質(zhì)量有很大影響,分別訓(xùn)練不同的模型有利于針對性地提高最終聽感。
音素信息序列和幀序列都是一系列配對向量。使用深度神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)都可以對輸入和輸出進(jìn)行映射。由于計算結(jié)構(gòu)的不同,兩種網(wǎng)絡(luò)會得到不同的輸出精度。
前向網(wǎng)絡(luò)將輸入空間向量直接仿射到輸出空間。由于不受上下文音素的影響,前向網(wǎng)絡(luò)的預(yù)測是受到限制的。例如音節(jié)中輔音和元音常常出現(xiàn)的拼音連讀現(xiàn)象,預(yù)測單個音素很難達(dá)到理想的質(zhì)量。
作為神經(jīng)網(wǎng)絡(luò)基本的構(gòu)成元素,前向網(wǎng)絡(luò)作為隱層應(yīng)用在各種復(fù)雜的網(wǎng)絡(luò)之中,如疊加而成的深度神經(jīng)網(wǎng)絡(luò)(DNN)和一些門限(gate)。隱層對于提升學(xué)習(xí)能力是必要的。一方面,增加網(wǎng)絡(luò)層數(shù)會增加數(shù)據(jù)的抽象表示,獲得更強(qiáng)的泛化能力;另一方面,增加隱層節(jié)點(diǎn)使網(wǎng)絡(luò)有更豐富的“記憶”,讓輸出在有限范圍內(nèi)無限逼近大部分非線性函數(shù)。但過分增加隱層使模型學(xué)習(xí)了不必要的訓(xùn)練集噪音,即過擬合。目前通過多種規(guī)范化和Dropout[8]可減輕或避免這種情況的發(fā)生。
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)是序列上前向網(wǎng)絡(luò)的簡單擴(kuò)展,其輸入來源于外界輸入和網(wǎng)絡(luò)自身的狀態(tài)。因此,當(dāng)前輸出會受上一次前饋計算的影響,而當(dāng)前輸出后的網(wǎng)絡(luò)狀態(tài)又繼續(xù)影響下一次輸出。
ht是網(wǎng)絡(luò)當(dāng)前狀態(tài),由上一狀態(tài)ht-1、當(dāng)前輸入xt和激活函數(shù)f共同影響。時序后向傳播算法(BPTT)逆向計算整條序列的誤差更新權(quán)值矩陣Whh與Whx。通過累計序列誤差項求解權(quán)值矩陣更新量,但累乘非線性激活函數(shù)導(dǎo)數(shù)f′導(dǎo)致誤差傳導(dǎo)趨零或暴增,模型局限于短序列。
為此,LSTM提出獨(dú)立的網(wǎng)絡(luò)狀態(tài)C并設(shè)置包含輸入、遺忘、輸出三個前向網(wǎng)絡(luò)門限。通過與門限輸出點(diǎn)乘⊙與點(diǎn)加⊕控制狀態(tài)大小,分離了狀態(tài)與輸出。對應(yīng)在BPTT中形成了常數(shù)誤差流[4](CEC),誤差累加不再造成消失或暴增,形成模型長程記憶。至此,算上新狀態(tài)生成所需要的矩陣,LSTM包含4個輸入到狀態(tài)轉(zhuǎn)換矩陣和4個內(nèi)部狀態(tài)更新矩陣,在計算上有較大的開銷。
近年的變體在增加網(wǎng)絡(luò)輸入、簡化網(wǎng)絡(luò)結(jié)構(gòu)和網(wǎng)絡(luò)疊加上做了研究。BDLSTM[7]加入了逆向序列特征,提高了預(yù)測質(zhì)量,但需待序列輸入完成時才能輸出;GRU[9]將輸出放入CEC,合并輸入門和遺忘門為更新門,相對LSTM減少約1/4計算量;DPLSTM[10]則在多層LSTM間加入連接構(gòu)成深度模型。文獻(xiàn)[11-12]探索了LSTM的多種簡化版本,這些版本對預(yù)測質(zhì)量提升都不明顯,其中S-LSTM為僅保留最基本的門限,為計算量最小的一個版本,但精度也較低。未簡化的LSTM近年開始應(yīng)用于語音識別[3]、情感分析[13]、手寫識別[14]等領(lǐng)域,以下討論簡化LSTM在中文語音合成上的應(yīng)用。
LSTM包含輸入門(IG)、遺忘門(FG)和輸出門(OG)將狀態(tài)傳遞變?yōu)槔奂?。輸入門控制新狀態(tài)(NI)加到當(dāng)前狀態(tài)中的比例,遺忘門決定保留多少舊狀態(tài),輸出門將狀態(tài)映射到最終輸出。三個門限各自有的功能,不能簡單地去掉。
3.1.1 合并輸入門與遺忘門
因計算機(jī)數(shù)據(jù)精度的限制,狀態(tài)量不應(yīng)該單調(diào)增加或縮小,否則將出現(xiàn)和普通循環(huán)神經(jīng)網(wǎng)絡(luò)一樣的精度溢出狀況。因此,輸入門和遺忘門對狀態(tài)的控制行為應(yīng)該有很強(qiáng)的互補(bǔ)性。本文使用以輸入門(IG)代替遺忘門(FG),前饋計算使用FG=1-IG代替原有FG輸出,而后向誤差傳播公式變?yōu)椋?/p>
存在t-1時:
存在t+1時:
σ為門限激活函數(shù),C為當(dāng)前狀態(tài),peepIG與peepOG為輸入門和輸出門的peephole連接,+=為累加操作。在不處于序列首尾時,BPTT累加誤差。由于原FG梯度與IG相差因子-1,式(4)為累加負(fù)誤差。簡化遺忘門的LSTM如圖2所示。
圖2 簡化遺忘門的LSTM
3.1.2 簡化輸出門
輸出門的作用類似一層前向網(wǎng)絡(luò)。去掉輸出層可能會使模型刻畫數(shù)據(jù)能力下降。由于輸出門與其他門限有著相同的計算量,可以考慮在后序網(wǎng)絡(luò)中加入代價較小的前向網(wǎng)絡(luò)進(jìn)行代替。但這種替代依然可能會使數(shù)據(jù)中難以被模型描述的區(qū)域增加,造成局部噪聲點(diǎn)增加,因此還需要配合適當(dāng)?shù)膬?yōu)化算法來進(jìn)行訓(xùn)練。
移除輸出門,修改式(2)如下:
最速梯度下降法(SGD)是簡單且常用的一階導(dǎo)數(shù)下降算法。其學(xué)習(xí)率依賴經(jīng)驗,并且容易使模型陷入局部最優(yōu)。配合動量法(Momentum)加速下降過程,依靠設(shè)置動量來掠過部分局部最優(yōu)點(diǎn)。在大多數(shù)情況下,這兩種方法依然無法擺脫局部解。為了配合去除輸出門的改動,本文驗證下面兩個算法對模型改動的適應(yīng)性。
AdaDelta[15]與Adam[16]均為啟發(fā)式算法,在每個維度上獨(dú)立地進(jìn)行評估和調(diào)整,使用衰減系數(shù)估計近期梯度的變化。AdaDelta的更新值采用二階梯度的量綱,收斂速度快于動量SGD且不依賴于先驗知識。Adam則包含了一個類信噪比項,根據(jù)數(shù)據(jù)噪音的大小選擇合理的速度,在噪音較多的數(shù)據(jù)集上模型依然收斂。
CBOW和Skip-gram使用滑動窗口改進(jìn)神經(jīng)網(wǎng)絡(luò)語言模型,依據(jù)上下文信息建立詞向量空間[17]。
當(dāng)輸入序列[x1,x2,…,xT]對應(yīng)輸出序列[y1,y2,…,yT],使用擴(kuò)展的(xt-pre,…,xt,…,xt-post) 代替原輸入xt,包含前pre個到后post個xt的相鄰輸入?;瑒哟翱诩{入了相鄰信息,使網(wǎng)絡(luò)建立窗口到原有輸出之間的關(guān)系。
漢語音節(jié)由2個以內(nèi)音素組成,長度為2的滑動窗口可將朗讀時的連讀變音現(xiàn)象納入?;瑒哟翱诓粌H可以應(yīng)用于DNN,本文提出對LSTM的輸入加入下一個音素信息,保留了LSTM流式輸出并使預(yù)測接近BDLSTM。
當(dāng)滑動窗口與LSTM層直接連接,增加窗口長度會以內(nèi)部狀態(tài)的長度為倍率增加LSTM網(wǎng)絡(luò)參數(shù)。因此,在將窗口加入到前向網(wǎng)絡(luò)層,再與LSTM層連接可以有效控制參數(shù)增長,保持模型簡潔的同時加入一層抽象編碼的隱層。
時長模型預(yù)測每個音素的確切幀數(shù),在后續(xù)的倒頻譜模型中,本文不是將原始音素信息復(fù)制多份對應(yīng)訓(xùn)練每一幀倒頻譜,而是附加了描述音素開始和結(jié)尾的非線性時間信息記號e-t,t為幀序號。此記號在( ]0,1范圍內(nèi),以正序和反序在音素的所有幀上打上兩個記號。由于頻譜信息在發(fā)音開始和結(jié)尾變動較大且短時間內(nèi)連續(xù),選擇了自身與導(dǎo)數(shù)都單調(diào)且簡便的函數(shù)作為音素標(biāo)記,合理的非線性輸入有利于仿射運(yùn)算提高預(yù)測精度。
語音數(shù)據(jù)取自一位女性職業(yè)說話人的標(biāo)準(zhǔn)普通話朗讀,11 h錄音共16 205條語句。語音采樣由48 kHz降至16 kHz送入語音分析器,每5 ms采樣一次得到40個梅爾倒頻率系數(shù)的共振峰信息和1個基頻信息。音素信息由HMM文本分析器獲得,含有音標(biāo)、聲調(diào)、詞性、位置等信息,以one-hot方式展開為164維的向量。時長信息由人工標(biāo)記得到。
實(shí)驗以5狀態(tài)各態(tài)歷經(jīng)HMM作為基線系統(tǒng)。時長模型使用三組神經(jīng)網(wǎng)絡(luò)模型:4層256維前饋網(wǎng)絡(luò)組成的DNN、含有128個內(nèi)部狀態(tài)的LSTM和同等配置的BDLSTM。倒頻譜模型使用加窗并簡化的LSTM與簡化的BDLSTM的混合網(wǎng)絡(luò),以梅爾倒頻率失真度[2](Mel Cepstral Distortion,MCD)衡量語音合成質(zhì)量。
訓(xùn)練過程中使用L2規(guī)范化防止過擬合,分別使用:動量為0.9、學(xué)習(xí)率為10-6的SGD、默認(rèn)配置的;AdaDelta和Adam自適應(yīng)下降算法。在驗證集上30次沒有刷新?lián)p失函數(shù)新低則判定模型已收斂。為保證約10 h[3]語音訓(xùn)練量,訓(xùn)練集、驗證集和測試集按[80%,10%,10%]的比例分配并交叉驗證。實(shí)驗使用CURRENNT開源代碼、GTX 690顯示卡和STRAIGHT合成音頻文件。
4.2.1 音素時長預(yù)測
在音素時長預(yù)測對比實(shí)驗(表1)中,實(shí)驗代號0組、1組、2組和3組分別為HMM基線模型、DNN內(nèi)部實(shí)驗、LSTM內(nèi)部實(shí)驗、BDLSTM內(nèi)部實(shí)驗。輸入由3 bit表示前1個、當(dāng)前和后1個輸入向量是否包含在滑動窗口中,如“111”表示都存在,而“010”表示普通輸入。NIL表示簡化遺忘門,BNIOL表示簡化遺忘門與輸出門的雙向LSTM。
表1 音素時長模型預(yù)測
表1說明,上下文信息對提高時長預(yù)測質(zhì)量是必要的。DNN與LSTM在加窗后誤差顯著降低。加窗保留了LSTM的流式輸出,代價是增加了模型大小(2b,2c)。DNN模型雖然龐大,結(jié)果卻不及后序?qū)嶒?。DNN與HMM一樣,缺失對整條序列變化規(guī)律的建模,這導(dǎo)致了在時長預(yù)測上與LSTM模型的差距。
第2、3組實(shí)驗中,簡化LSTM模型的有效降低時長預(yù)測平均誤差,較HMM基線模型降低約1/4。簡化對時長預(yù)測質(zhì)量影響不大,特別是合并輸入門和遺忘門時,單向與雙向LSTM都沒有受到明顯影響。再移除遺忘門后,相對原模型平均誤差增加仍不超過6%,移除遺忘門使模型刻畫能力降低,帶來更多噪音。
優(yōu)化算法AdaDelta與Adam均明顯優(yōu)于動量SGD。在移除遺忘門(2ef,3ef)以外的實(shí)驗中,它們之間的差異不大。Adam的信噪比估計項對噪音有更好的抑制,效果優(yōu)于AdaDelta。此外,SGD與AdaDelta均出現(xiàn)過學(xué)習(xí)速率設(shè)置過大導(dǎo)致不收斂的情況。因此,倒頻譜的簡化LSTM模型僅使用Adam訓(xùn)練。
4.2.2 倒頻譜預(yù)測
表2說明,簡化的LSTM模型保持了較小的MCD的同時,迭代用時和模型大小都縮減原模型的一半,適于在較低端的CUDA設(shè)備上運(yùn)行。多層LSTM頻譜預(yù)測比單層更優(yōu)秀,該趨勢符合數(shù)據(jù)維度變大時,非線性因素增加,需要多層神經(jīng)網(wǎng)絡(luò)建模的一般規(guī)律。同時,加入非線性位置描述位改善了頻譜在音素開頭和結(jié)尾的擬合效果,降低了整體MCD。
表2 倒頻譜模型預(yù)測
4.2.3 系統(tǒng)評價
12位志愿者對HMM與簡化LSTM系統(tǒng)做了主觀評分。測試包含辨析度和自然度,辨析度衡量語句中聽懂詞義和句義的占比,自然度則是測試者對語句韻律和發(fā)音上的偏好。如圖3所示,兩個系統(tǒng)均表現(xiàn)出較高的可理解性,但簡化LSTM模型的語音自然度更高。據(jù)幾位測試者反映,HMM像是逐字機(jī)械地朗讀,而LSTM的韻律更自然。
圖3 HMM系統(tǒng)與簡化LSTM系統(tǒng)的MOS評分
頻譜(圖4)顯示簡化LSTM的合成語音的共振峰變化曲線更加完滿,接近原始錄音。兩個模型中對應(yīng)音素占用時間長度也有略微差異,聽感上LSTM模型整體語調(diào)也更流暢自然,圖中“蒜”輔音s發(fā)音完整,辨識度高于HMM模型。時長誤差與MCD的減小體現(xiàn)于本節(jié)的驗證。
圖4 原始錄音、簡化LSTM與HMM模型合成語音的log頻譜
本文分析前向網(wǎng)絡(luò)與LSTM循環(huán)神經(jīng)網(wǎng)絡(luò)的特點(diǎn)與聯(lián)系,根據(jù)門限間的關(guān)系進(jìn)行了化簡并在外部結(jié)構(gòu)上彌補(bǔ),在保證語音合成質(zhì)量的情況下使計算量減半。在此之上,根據(jù)音素信息和神經(jīng)網(wǎng)絡(luò)仿射運(yùn)算的特點(diǎn),提出了滑動窗口與非線性單調(diào)的位置標(biāo)記,使得改進(jìn)模型合成質(zhì)量接近于BDLSTM,并保留了流式輸出。
此外,有待探討的方向包括:針對輸出向量中的音標(biāo)志位,可采取加大輸出門sigmoid激活函數(shù)梯度的方法[18]使輸出更加兩極化;使用簡化的DGRNN[10];通過輸入輸出錯位,使輸出建立在當(dāng)前和下一個音素上,以更簡便的方式達(dá)到提升效果;最后,L2規(guī)范化可用Dropout替代,去除衰減參數(shù)調(diào)整的依賴,去掉冗余隱層結(jié)點(diǎn)。
LSTM有著廣泛的應(yīng)用前景,以上方法還可以應(yīng)用于更多的領(lǐng)域。
[1]Rabiner L R.A tutorial on hidden Markov models and selected applications in speech recognition[J].Proceedings of the IEEE,1989,77(2):257-286.
[2]李霄寒.基于概率統(tǒng)計模型的說話人確認(rèn)的研究[D].合肥:中國科學(xué)技術(shù)大學(xué),2003.
[3]楊晉儀,張鵬遠(yuǎn),潘接林,等.小資源下基于神經(jīng)網(wǎng)絡(luò)的聲學(xué)建模[C]//中國聲學(xué)學(xué)會第十一屆青年學(xué)術(shù)會議會議.西安:中國聲學(xué)學(xué)會,2015.
[4]Hochreiter S,Schmidhuber J.Long short-term memory[J].Neural Computation,1997,9(8):1735-1780.
[5]Lipton Z C,Berkowitz J,Elkan C.A critical review of recurrent neural networks for sequence learning[J].arXiv preprint arXiv:1506.00019,2015.
[6]Zen H,Sak H.Unidirectional long short-term memory recurrent neural network with recurrent output layer for low-latency speech synthesis[C]//IEEE International Conference on Acoustics,Speech and Signal Processing(ICASSP),2015:4470-4474.
[7]Fan Y,Qian Y,Xie F L,et al.TTS synthesis with bidirectional LSTM based recurrent neural networks[C]//Interspeech,2014:1964-1968.
[8]Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:A simple way to prevent neural networks from overfitting[J].Journal of Machine Learning Research,2014,15(1):1929-1958.
[9]Chung J,Gulcehre C,Cho K H,et al.Empirical evaluation of gated recurrent neural networks on sequence modeling[J].arXiv preprint arXiv:1412.3555,2014.
[10]Yao K,Cohn T,Vylomova K,et al.Depth-gated recurrent neural networks[J].arXiv preprint arXiv:1508.03790,2015.
[11]Wu Z,King S.Investigating gated recurrent neural networks for speech synthesis[J].arXiv preprint arXiv:1601.02539,2016.
[12]Greff K,Srivastava R K,Koutník J,et al.LSTM:A Search Space Odyssey[J].Computer Science,2015.
[13]梁軍,柴玉梅,原慧斌,等.基于極性轉(zhuǎn)移和LSTM遞歸網(wǎng)絡(luò)的情感分析[J].中文信息學(xué)報,2015,29(5):152-160.
[14]衛(wèi)曉欣.基于長短型記憶遞歸神經(jīng)網(wǎng)絡(luò)的英文手寫識別[D].廣州:華南理工大學(xué),2014.
[15]Zeiler M D.ADADELTA:An adaptive learning rate method[J].arXiv preprint arXiv:1212.5701,2012.
[16]Kingma D,Ba J.Adam:A method for stochastic optimization[J].arXiv preprint arXiv:1412.6980,2014.
[17]Mikolov T,Chen K,Corrado G,et al.Efficient estimation of word representations in vector space[J].arXiv preprint arXiv:1301.3781,2013.
[18]松山祐輔,篠田浩一.活性化関數(shù)のパラメータ制御を用いた LSTMによる音聲認(rèn)識[C]//日本音響學(xué)會2015年秋季研究発表會講演論文集,2015:1-2.