鐘巧霞,曾 碧,林鎮濤,林 偉
(廣東工業大學 計算機學院,廣東 廣州 510006)
語音合成(text to speech,TTS)也稱文語轉換,是一種將文字轉化為語音的技術。拼接式語音合成需要大量音頻語料,參數式語音合成過程非常復雜,這兩種方法生成的音頻存在諸多毛刺問題。隨著統計理論的完善和深度學習的發展,用自回歸或非自回歸方法去生成梅爾頻譜,再結合聲碼器構建語音波形的兩階段拼接方法成為目前語音合成的主流方法。但自回歸生成模型也存在著一些缺點,如訓練推理速度慢等。
本文采用一種高效融合音素和全局韻律的非自回歸方式生成梅爾頻譜,提升模型的訓練和推理速度。主要貢獻點如下:
(1)引入輕量卷積[1],獲取上下文音素的關聯性,解決生成錯誤問題。采用一個上下文相等的固定窗口通過softmax函數來確定窗口內元素的重要性。通過對每一時刻重要音素的關注,模型可以生成更加準確的發音。
(2)增加音高和能量預測,引入音高、能量預測器用于增添全局韻律信息,緩解韻律缺失問題,提升生成音頻的韻律連貫性。
(3)采用主客觀結合評價方法進行模型測驗。主觀評測方法采用平均意見得分(mean opinion score,MOS)和A/B偏好評測,客觀評測方法采用梅爾倒譜失真測度(Mel cepstral distortion,MCD)的客觀指標。
近些年來,基于神經網絡的語音合成技術飛速發展,并且取得顯著的成效。2017年,谷歌開創性地提出Tacotron模型[2]將神經網絡應用于語音合成任務,該模型應用編碼器-解碼器結構以自回歸生成方式將文本轉化為梅爾頻譜,再借用GriffinLim聲碼器進行聲音波形的合成。但存在推理速度較慢,生成音頻質量不高的問題。2018年,Tacotron2模型[3]在seq2 seq模型的基礎上,利用位置敏感注意力機制(location sensitive attention,LSA)增強上下文的位置信息和語義信息,以生成梅爾頻譜。引入注意力機制進行對齊,帶來音頻的魯棒性問題。2019年,TransformerTTS模型[4]將輸入轉化為更加細粒度的音素輸入來訓練模型,以避免測試時輸入不存在的情況,結合WaveNet聲碼器[5]解碼生成聲音波形。但仍然存在推理緩慢和自回歸誤差累計問題。
由于自回歸式模型容易出現錯誤導致文本中某些詞匯被遺漏或者重復發音問題。于是工業界和學術界開始將目光轉向非自回歸式語音合成。2019年,FastSpeech模型[6]引入時長預測器幫助文本與頻譜進行對齊,采用教師學生模型輔助訓練合成梅爾頻譜,以降低訓練的時長和減少漏詞、重復發音問題。但仍需訓練許多注意力層,訓練難度較大且較為耗時。2020年,FastSpeech2模型[7]引入方差預測器為生成語音提供盡可能多的參數信息,幫助解決語音合成任務中一對多的問題。但對訓練設備要求較高。同年,SpeedySpeech模型[8]采納教師指導學生方式,用全卷積結構進行高質量梅爾頻譜的生成,提升模型訓練速度。但生成語音韻律缺乏,聽起來較為生硬。2021年,FastPitch模型[9]為每個輸入音素預測時長和音高,調整音高以更好地合成高質量音頻。
受SpeedySpeech模型的啟發,在此提出一種融合音高、能量預測器與輕量卷積神經網絡的改進非自回歸模型LCTTS,用以生成梅爾頻譜。所提出模型的主要網絡架構如圖1所示。

圖1 LCTTS模型
LCTTS模型主要由音素編碼器Encoder、時長預測器Duration Predictor、音高/能量預測器(Pitch/Energy Predictor)、解碼器Decoder這4個模塊組成。
輕量卷積模塊用來解決非自回歸模型中缺失上下文音素的關聯造成的出錯問題。輕量卷積模塊如圖2所示。輕量卷積模塊主要由線性層、門控線性單元GLU[10]和輕量級卷積構成。該模塊能夠更好保留音素特征,從而更準確地判斷出每一個窗口內輸入音素的重要性。

圖2 輕量卷積模塊
模塊輸入首先經過線性層,將維度為N×d的輸入投影映射為N×2d的維度。接著將線性層的輸出送入GLU層。門控線性單元GLU是在卷積結構上加入門控機制,將GLU層的一半輸入作為門控單元,再將剩余的一半線性層輸出作為門控單元的輸入變量,然后計算逐個點積。GLU層運算如式(1)所示
hl(X)=X+CNN(X)?CNN(X)
(1)
式中:X表示門控單元的輸入變量,CNN表示卷積網絡,?表示矩陣之間的元素乘積。通過門控線性單元后獲得維度為N×d的輸出。接下來將隱變量送入輕量級卷積。通過輕量級卷積和線性層,模塊最終輸出為N×d的向量。
輕量級卷積具有權重共享的特性,能夠加快模型的訓練速度,提升訓練效率。輕量級卷積如圖3中所示。它在深度卷積的基礎上,引入多頭注意力機制,通過權重共享,即在同一個頭內使用相同的卷積核參數;且對每一頭內的卷積核參數進行歸一化處理。歸一化處理可以有效聚合局部信息,幫助模型更好地關注重點信息。輕量級卷積在同一時間內對不同通道采用相同卷積核參數同時進行卷積運算,極大縮減計算時間。圖3中W表示卷積核,H表示引入注意力頭數,k表示卷積核的大小,X和O分別表示輸入與輸出,N表示輸入的向量維度,d表示輸入的通道數。輕量卷積序列中第i個音素計算的輸出如式(2)所示

圖3 輕量級卷積

(2)

(3)
式(3)表示同一頭內卷積參數歸一化處理過程,其中h表示頭數,k表示卷積核的大小,W表示卷積核。
音素編碼器的作用是提取輸入音素的魯棒順序表示。通過Embedding層將輸入的音素表示為一串連續的one-hot向量。再結合輕量卷積模塊提取音素特征,提升模型的泛化能力。經由Embedding層和輕量卷積模塊構成的前置網絡生成的one-hot變量,接下來將進入殘差卷積模塊中,借用卷積神經網絡的強大特征提取能力提取出更具語義信息的音素隱藏特征。再通過由輕量卷積模塊和歸一化模塊組成的音素編碼器后置網絡進行更為細致的特征提取得到魯棒性音素序列表示,獲得音素編碼器模塊的最終輸出。音素編碼過程可以簡述為
Z=Encoder(X)
(4)
式中:輸入序列為X={x1,x2,x3,…,xN}, 其中xi表示輸入文本中第i個音素,N表示輸入的音素總長度。音素編碼器的輸出序列為Z={z1,z2,z3,…,zN}, 其中zi表示第i個隱變量,Encoder表示音素編碼器。
時長預測器用于預測每一個輸入音素的持續時間,即該音素對應的梅爾頻譜幀的數量。時長預測器由輕量卷積模塊和殘差卷積模塊組成,如圖4所示。

圖4 時長預測器
時長預測器以音素編碼器輸出的音素序列作為輸入,最終輸出一連串的音素持續時長序列。音素時長預測過程可以簡述為
Lossduration={l1,l2,l3,…,lN}
(5)
(6)
式(5)和式(6)中,輸出的音素時長序列為D={d1,d2,d3,…,dN}, 其中di表示輸入序列中第i個音素對應的預測持續時間。真實音素時長序列為T={t1,t2,t3,…,tN}, 其中ti表示每個音素的真實持續時長。Lossduration表示預測音素時長與真實音素時長的誤差集合,其中lj表示每一個音素的預測與真實值之間的誤差。
音高/能量預測器的作用是為生成音頻增添更多的韻律信息,解決生成音頻不連貫的問題,提升生成語音的自然度。音高/能量預測器結構如圖5所示。

圖5 音高/能量預測器
音高和能量預測器的計算過程如下:首先通過一維卷積層進行隱藏序列特征的提取,接著將結果送入Relu激活。激活后的隱變量通過歸一化層幫助模型加快收斂速度。同時為加強模型的魯棒性引入隨機丟棄的方法,最后通過線性層對隨機丟棄后的結果進行線性映射,轉化為與擴展后的隱藏序列相同的維度。由于生成語音的音高與能量變化屬于幀級別的變化,因此本文結構在時長預測器完成音素持續時長預測后對音素隱藏序列進行擴展,再將拓展后的序列向后傳播。音高/能量預測器分別以擴展后的音素隱藏序列為輸入,去預測每一幀的音高或能量,再分別獲取輸出。然后再將這兩種預測器的輸出與輸入進行連接后送入解碼器中,解碼得到梅爾頻譜,最后借助聲碼器對頻譜圖進行編譯轉化為聲音波形。音高和能量預測的過程可以簡述為
P=PitchPredictor(K)
(7)
E=EnergyPredictor(K)
(8)
式(7)、式(8)中,擴展后的音素隱藏序列為K={k1,k2,k3,…,kL}, 其中L為梅爾頻譜的最大梅爾刻度值。音高預測器輸出序列為P={p1,p2,p3,…,pL}, 能量預測器輸出序列為E={e1,e2,e3,…,eL}。 其中PitchPredictor表示音高預測器,EnergyPredictor表示能量預測器。
解碼器的主要功能是生成梅爾頻譜。解碼器以音高預測器和能量預測器的輸出與擴展后得到的音素隱藏序列相結合作為輸入。解碼過程可以簡述為
M=Decoder(cat(K,P,E))
(9)
(10)
(11)
Lossmel=Lossssim+Lossl1+Lossduration
(12)
假設解碼器的輸出為M={m1,m2,m3,…,m80}, 擴展后的音素隱藏序列為K。 將解碼器的輸出與真實頻譜圖G={g1,g2,g3,…,g80} 作結構相似損失對比進行模型訓練。式(10)~式(12)為本模型的各項損失函數,其中Decoder表示解碼器,cat表示將變量相連接。μg、μm分別表示真實值與預測值擬合后的高斯函數的均值,σg、σm分別表示真實值與預測值擬合后的高斯函數的方差。Lossssim表示結構相似損失函數,Lossl1表示平均絕對誤差函數,Lossmel表示整體模型的損失。
整體模型訓練過程的偽代碼見表1。

表1 總體算法偽代碼
本文使用LJSpeech數據集[11]對LCTTS模型進行訓練測試,并采用ESD數據集[12]中數據進行驗證。LJSpeech數據集包含大約24小時的13 100個英語音頻片段,同時提供音頻相對應的文本。本實驗中將此數據集分為兩部分:前13 000句用于訓練,后100句用于測試,并從ESD數據集中抽取中性情感語句350句,均為編號0011的說話者音頻,用于驗證。
本文所提出模型的實驗均在系統為Ubuntu 16.04,以及顯卡型號為RTX 2080Ti上進行。具體網絡模型的訓練細節如下:訓練迭代100輪,采用Adam優化器,學習率設置為0.02。網絡模型中的超參數設置如下:音高/能量模塊使用卷積核為3的一維卷積和0.5的丟棄率,并進行隨機丟棄訓練;輕量卷積模塊使用卷積核為7的輕量卷積,并且使用8頭注意力,設定丟棄率為0.1。
目前主流的兩端拼接式語音合成模型主要由聲學模型和聲碼器構成,本部分將介紹本實驗中用到的聲學模型和聲碼器,將其任意兩兩組合進行實驗對比。
聲學模型部分主要應用以下5個模型:
(1)TransformerTTS模型[4],以seq2 seq序列模型為基礎結合自注意力機制實現梅爾頻譜生成的自回歸模型。
(2)FastSpeech2模型[7],通過時長預測器結構對齊輸入文本和輸出頻譜實現非自回歸生成模型。
(3)FastPitch模型[9],通過對基因輪廓進行預測并借助Transformer結構生成梅爾頻譜的非自回歸模型。
(4)SpeedySpeech模型[8],以全卷積結構實現快速梅爾頻譜生成的非自回歸模型。
(5)LCTTS模型,是結合輕量卷積并添加音高/能量預測器的非自回歸模型。
聲碼器部分主要采用GriffinLim算法和MelGan聲碼器[13]:
(1)GriffinLim算法是一種通過已知的幅度譜去預測未知的相位譜,結合幅度譜和相位譜重建語音波形的經典算法。
(2)MelGan是一種基于GAN[14]結構,采用非自回歸卷積結構生成語音的輕量級快速高效語音合成方法。
模型訓練損失如圖6所示。損失圖中橫坐標Step表示訓練的迭代次數,縱坐標TotalLoss表示訓練過程中的總損失量。從損失下降中可以明顯看到,本文算法更早地達到收斂效果,且震蕩幅度較小。這充分說明本文模型具有更好的魯棒性和強大的網絡表達能力。

圖6 模型訓練損失
3.3.1 MOS評測
平均意見得分MOS(mean opinion score),是衡量語音質量的重要指標,是一種主觀評測語音質量的方法。本實驗采用NISQA模型[15]進行MOS值的預測。
各模型在測試集上的MOS得分實驗結果見表2,在驗證集上的MOS得分實驗結果見表3。

表2 測試集上MOS得分

表3 驗證集上MOS得分
表2中顯示,在采用GriffinLim算法時,LCTTS相比SpeedySpeech的MOS分值提升0.05。在使用MelGan聲碼器時,LCTTS相比SpeedySpeech的MOS分值提升0.02,比FastSpeech2的MOS分鐘高出0.09,比FastPitch的MOS分值高出0.28。
表3中顯示,在采用GriffinLim算法時,LCTTS相比SpeedySpeech的MOS分值提升0.08。在使用MelGan聲碼器時,LCTTS相比SpeedySpeech的MOS分值提升0.14,比FastSpeech2的MOS分鐘高出0.37,比FastPitch的MOS分值高出0.31。
3.3.2 A/B偏好測試
本實驗隨機選取20句文本,每句文本分別提供LCTTS和SpeedySpeech的對應合成音頻,由10位英語專業的志愿者選擇出合成效果更好的音頻完成A/B偏好測試。評價結果如圖7所示。評價結果圖中橫坐標表示合成音頻質量好對應的模型名稱,縱坐標表示志愿者對于合成音頻偏好的百分比。

圖7 A/B偏好結果
圖7中可以看出志愿者認為52.5%的LCTTS模型合成音頻效果優于SpeedySpeech模型。僅有22.5%的音頻被認為SpeedySpeech模型合成音頻效果優于LCTTS模型。
3.3.3 MCD測試
梅爾倒譜失真測度MCD(Mel cepstral distortion),作用是衡量兩個梅爾倒譜序列的差異程度,是一種客觀評測方法。合成頻譜和真實頻譜之間的MCD越小,合成音頻越接近自然音頻。各模型MCD得分的比較匯總結果見表4。

表4 各種模型MCD得分比較
表4中顯示,LCTTS模型生成的梅爾頻譜相較于SpeedySpeech模型在測試集和驗證集上的MCD得分分別降低0.15和0.04。在測試集上,LCTTS模型的MCD得分比FastSpeech2模型低0.04,在驗證集上LCTTS模型的MCD得分比FastSpeech2模型低0.8,比FastPitch模型低0.09。
3.4.1 輕量卷積
輕量卷積的消融實驗結果見表5。

表5 輕量卷積的消融實驗結果
表5中可以看出,MOS評分在基準SpeedySpeech模型上引入輕量卷積結合MelGan聲碼器能夠取得0.05的分值提升。驗證了輕量卷積確實可以增強上下文音素之間的關聯,幫助發音時刻聚焦重點音素,生成更加準確的發音,從而提升生成語音質量。
3.4.2 音高/能量預測器
音高/能量預測器的消融實驗結果見表6。

表6 音高/能量預測器的消融實驗結果
表6中可以看出,MOS評分在基準SpeedySpeech模型上增加音高/能量預測器后能夠獲得0.02的分值提升。驗證了音高和能量能夠提升生成語音的韻律表達,增強生成語音的自然度,從而提升音頻的聲學感受。
同一文本”As has been pointed out,the Commission has not resolved all the proposals which could be made. The Commission never-theless is confident that”生成對應音頻的梅爾頻譜圖如圖8所示。

圖8 梅爾頻譜
圖8中Reference表示數據集中提供對應音頻,LCTTS表示提出的模型,SpeedySpeech表示基準模型。圖中1 s~2 s文本合成頻譜處可以明顯看出相比于原來的SpeedySpeech模型,LCTTS模型的梅爾頻譜更加接近于真實音頻的梅爾頻譜,因此輸出音頻會更加接近于真實音頻,生成效果更好。
針對如何有效捕獲上下文音素之間的關系和對合成音頻韻律進行準確預測的問題,本文提出一個以音素為輸入的非自回歸語音合成模型LCTTS,結合輕量卷積結構有效捕捉上下文音素之間的關系,引入音高、能量預測器控制全局聲音的特性,提升生成語音的可懂度和自然度。實驗結果表明提出的LCTTS模型生成的梅爾頻譜與真實音頻的梅爾頻譜更相似,且合成音頻的質量更好。提出的LCTTS模型目前主要針對單說話人的音頻合成,接下來的主要工作將專注于將其拓展為多說話人音頻合成模型。