Tacotron論文翻譯
Tacotron?
論文鏈接:https://arxiv.org/pdf/1703.10135.pdf
ABSTARCT

一個文本轉語音的合成系統(tǒng)通常包含多階段處理,例如文本分析前端,聲學模型和聲音合成模塊。構建這些組件常常需要大量的領域專業(yè)知識,而且設計選擇也可能很脆弱。在這篇論文里,我們提出了 Tacotron,一種端到端的生成式文本轉語音模型,可以直接從字符合成語音。在 <文本,聲音> 配對數(shù)據(jù)集上,該模型可以完全從隨機初始化從頭開始訓練。我們提出了幾個可以使 seq2seq 框架在這個高難度任務上表現(xiàn)良好的關鍵技術。Tacotron 在美式英語測試里的平均主觀意見評分達到了 3.82 分(總分是 5 分),在合成自然度方面優(yōu)于已在生產(chǎn)中應用的參數(shù)模型。另外,由于 Tacotron 是在幀層面上生成語音,所以它大幅度快于樣本級自回歸方式的模型。
INTRODUCTION

現(xiàn)代文本轉語音(TTS)的流水線比較復雜,舉例來說,通常基于統(tǒng)計參數(shù)的 TTS 系統(tǒng)包含:一個用來抽出多種語言特征的文本分析前端,一個音長模型(語音持續(xù)時間模型),一個聲學特征預測模型,和一個復雜的基于信號處理的聲碼器。這些組件都基于大量的領域專業(yè)知識因而其設計很艱難。并且,這些組件都是單獨訓練的,所以產(chǎn)生自每個組件的錯誤會有疊加效應。因此,現(xiàn)代 TTS 系統(tǒng)的設計復雜度導致在構建新系統(tǒng)時需要投入大量的工程努力。正因如此,集成一個能在少量人工標注的 <文本,語音> 配對數(shù)據(jù)集上訓練的端到端的 TTS 系統(tǒng),會帶來諸多優(yōu)勢。首先,這樣一個系統(tǒng)減少了艱難特征工程的必要,而正是這些特征工程可能會導致啟發(fā)式錯誤和脆弱的設計選擇。其次,這樣的系統(tǒng)允許基于各種屬性來進行多樣化的調節(jié),比如不同說話人,不同語言,或者像語義這樣的高層特征,這是因為調節(jié)不只是出現(xiàn)在特定幾個組件中,而是在模型的最開始就發(fā)生了。類似的,擬合新數(shù)據(jù)也將變得更容易。最后,相比會出現(xiàn)錯誤疊加效應的多階段模型,單一模型傾向于更魯棒。這些優(yōu)勢意味著,一個端到端的模型能夠允許我們在現(xiàn)實世界容易獲取的大量的豐富生動的同時也很嘈雜的數(shù)據(jù)上執(zhí)行訓練。

TTS 是一個大規(guī)模的逆問題:把一份高度壓縮的文本源解壓縮成語音。由于同一份文本可以對應到不同的發(fā)音或講話風格,對一個端到端的模型來說,這是一個異常困難的學習任務:給定一個輸入它必須處理在信號層面的大量變化。而且,不像端到端的語音識別 (Chan et al.,2016) 或者機器翻譯 (Wu et al.,2016),TTS 的輸出是連續(xù)的,并且輸出序列通常比輸入序列長很多。這些屬性造成了預測錯誤的快速累積。在這篇論文中,我們提出了 Tacotron,一個端到端的基于帶注意力范式的序列到序列(seq2seq)的生成式 TTS 模型。該模型使用幾個可以改善普通 seq2seq 模型能力的技術,輸入字符直接輸出原始聲譜圖。給定 < 文本,語音 > 配對數(shù)據(jù),Tacotron 可以完全從隨機初始化從頭開始訓練。由于不需要音素層面的對齊,因此它可以很容易的使用大量帶有轉錄文本的聲學數(shù)據(jù)。使用一個簡單的波形合成技術,Tacotron 在美式英語評估數(shù)據(jù)集上得到了 3.82 的平均意見得分(MOS),在合成自然度方面優(yōu)于已在生產(chǎn)中應用的參數(shù)模型。
RELATED WORK

WaveNet是一個強大的聲音生成模型。它在 TTS 中表現(xiàn)良好,但是樣本水平自回歸的天性導致其速度慢。它還要求在既存 TTS 前端生成的語言特性上進行調節(jié),因此不是端到端的,它只替換了聲碼器和聲學模型部分。另外一個最近開發(fā)的神經(jīng)模型是 DeepVoice ,它分別用一個神經(jīng)網(wǎng)絡替換了典型 TTS 系統(tǒng)流水線中的每一個組件,然而它的每個組件都是單獨訓練的,要把系統(tǒng)改成端到端的方式不那么簡單。據(jù)我們所知,Wang et al. (2016) 是最早使用帶有注意力的 seq2seq 方法嘗試端到端 TTS 系統(tǒng)的。但是,首先它需要一個預先訓練好的隱馬爾可夫(HMM)對齊器來幫助 seq2seq 模型學習如何對齊。所以很難說 seq2seq 本身學到了多少對齊能力。其次,為了訓練模型使用了幾個技巧,作者指出這些技巧有損于合成韻律。第三,它預測了聲碼器參數(shù)作為中間特征表達,因此需要一個聲碼器。最后,該模型訓練的輸入是音素數(shù)據(jù)并且實驗結果好像有點受限。Char2Wav是一個獨立開發(fā)的可以在字符數(shù)據(jù)上訓練的端到端模型。但是,Char2Wav 在使用 SampleRNN 神經(jīng)聲碼器 (Mehri et al.,2016) 前也預測了聲碼器參數(shù),而 Tacotron 直接預測原始聲譜圖。另外,seq2seq 和 SampleRNN 需要單獨進行預訓練,但我們的模型可以從頭開始訓練。最后,我們對普通 seq2seq 進行了幾個關鍵變更,我們后面會展示,普通的 seq2seq 模型對字符輸入不太奏效。
Model ARCHITECTURE

Tacotron 的骨干部分是一個有注意力機制的seq2seq 模型。圖1描繪了該模型架構,它包含一個編碼器,一個基于注意力機制的解碼器和一個后處理網(wǎng)絡。從 high-level 看,我們的模型把字符作為輸入,產(chǎn)生的聲譜幀數(shù)據(jù)隨后會被轉換成波形。下面詳細描述這些組件。
1 CBHG MODULE

我們首先描述 CBHG 的模塊,如圖 2 所示。CBHG 包含一個一維卷積濾波器組,后跟一個高速公路網(wǎng)絡和一個雙向門控循環(huán)單元(GRU)循環(huán)神經(jīng)網(wǎng)絡(RNN)。CBHG 是一個強大的模塊以提取序列的特征表達。首先在輸入序列上用 K 組一維卷積核進行卷積,這里第 k 組包含 Ck 個寬度是 k(即 k = 1,2,…,K)的卷積核。這些卷積核顯式地對局部上下文信息進行建模(類似于 unigrams, bigrams, 直到 K-grams)。卷積輸出結果被堆疊在一起然后再沿時間做最大池化以增加局部不變性,注意我們令 stride=1 以維持時間方向的原始分辨率。然后把得到的結果序列傳給幾個定長一維卷積,其輸出結果通過殘差連接和原始輸入序列相疊加。所有卷積層都使用了批標準化。卷積輸出被送入一個多層高速公路網(wǎng)絡來提取高層特征。最上層我們堆疊一個雙向 GRU RNN 用來前后雙向提取序列特征。CBHG 是受機器翻譯 (Lee et al.,2016) 論文的啟發(fā),我們與 (Lee et al.,2016) 的不同包括使用非因果卷積,批標準化,殘差連接以及 stride=1 的最大池化處理。我們發(fā)現(xiàn)這些修改提高了模型的泛化能力。
2 Encoder

編碼器的目的,是提取文本的魯棒序列表達。編碼器的輸入是字符序列,輸入的每個字符都是個一個 one-hot 向量并被嵌入一個連續(xù)向量中。然后對每個字符向量施加一組非線性變換,統(tǒng)稱為 “pre-net”。在這次工作中,我們使用帶 dropout 的瓶頸層(bottleneck layer)作為 pre-net 以幫助收斂并提高泛化能力。CBHG 模塊將 prenet 的輸出變換成編碼器的最終表達,并傳給后續(xù)的注意力模塊。我們發(fā)現(xiàn)基于 CBHG 的編碼器不僅減少了過擬合,它還能比標準的多層 RNN 編碼器產(chǎn)生更少的錯音(參看鏈接網(wǎng)頁上的合成語音樣本)
3 Decoder

我們使用基于內容的 tanh 注意力解碼器,在這個解碼器中,一個有狀態(tài)的循環(huán)層在每個時間步驟上都產(chǎn)生一次注意點查詢。我們把上下文向量和 Attention RNN 單元的輸出拼接在一起,作為解碼器 RNN 的輸入。同時我們還使用了帶有縱向殘差連接的 GRUs 堆棧,它能加速收斂。選擇什么作為解碼器的目標輸出非常重要。因為我們可以直接預測原始聲譜圖,這對于學習語音信號和原始文本對齊的目標(這是在這個任務上使用 seq2seq 的真正動機)是一個高度冗余的表示。因為這個冗余,我們?yōu)?seq2seq 解碼和波形合成選擇了一個不同的目標。語音合成作為一個可訓練或者可確定的逆向過程,只要能夠提供足夠的語音可理解性和足夠的韻律信息,seq2seq 的目標輸出就可以被大幅度壓縮。盡管類似倒譜這樣更小的帶寬或者更簡潔的目標輸出也可行,但我們采用帶寬為 80 的梅爾刻度聲譜圖作為解碼器的目標輸出。我們使用了一個后處理網(wǎng)絡(接下來討論)把 seq2seq 的目標輸出轉化為波形。我們使用一個簡單的全連接輸出層來預測解碼器的目標輸出。我們發(fā)現(xiàn)一個重要的技巧是,每一步解碼處理可以同時預測多個非重疊的輸出幀,一次預測 r 幀使得全體解碼步驟縮小了 r 倍,結果是減小了模型大小,訓練時間和推斷時間。更重要的,我們發(fā)現(xiàn)這個技巧會大幅度加快收斂速度,試驗中注意力模塊非常迅速(且非常穩(wěn)定)的學到了如何對齊。這可能是因為每個字符通常對應了多個語音幀而相鄰的語音幀具有相關性。強制每次輸出一幀使得模型對同一個輸入字符進行多次重復關注,而同時輸出多幀允許注意力在訓練中更早向前移動。Zen et al. (2016) 也使用了類似的技巧,但目的主要是用來加速推斷。解碼器的第一步是在一個 “全零幀” 上開始調節(jié),圖 1 中標示的 "<GO>"frame。在推斷時,解碼器的第 t 步處理,預測結果的最后一幀被作為解碼器第 t+1 步的輸入。注意這里選擇最后一幀輸入到下一步處理中只是一種選擇而已,也可以選擇一組 r 幀的全部作為下一步的輸入。在訓練中,我們取每個第 r 幀輸入給解碼器。像編碼器中的處理一樣,輸入幀傳給一個 pre-net。因為沒有使用 scheduled sampling(我們發(fā)現(xiàn)這樣做會損害聲音質量)那樣的技術,所以 pre-net 中的 dropout 對模型泛化很關鍵,因為 dropout 為解決輸出分布中的多形態(tài)問題提供了噪聲源。
4 POST-PROCESSING NET AND WAVEFORM SYSTEM

上面也提到了,后處理網(wǎng)絡的任務是,把 seq2seq 的輸出轉化成可以被合成為波形的目標表達。因為使用 Griffin-Lim 做合成器,后處理網(wǎng)絡要學習的是如何預測在線性頻率刻度上采樣的頻譜幅度。構建后處理網(wǎng)絡的另外一個動機是它可以看到全體解碼結果序列,對比普通 seq2seq 總是從左到右運行,它可以獲得前后雙向信息用以糾正單幀預測錯誤。在這次工作中,我們使用 CBHG 模塊作為后處理網(wǎng)絡,盡管一個更簡單的架構可能也會工作的很好。后處理網(wǎng)絡的概念是高度通用的,它可以用來預測不同的目標輸出如聲碼器參數(shù),也可以作為像 WaveNet 那樣的神經(jīng)聲碼器來直接合成波形樣本。我們使用 Griffin-Lim 算法 (Griffin & Lim,1984) 從預測出的聲譜圖合成波形。我們發(fā)現(xiàn)把預測頻譜的振幅提高 1.2 倍再輸入到 Griffin-Lim 可以減少人工痕跡,可能是歸功于其諧波增強效果。我們觀察到 Griffin-Lim 在 50 次迭代后收斂(實際上大約 30 次迭代好像就足夠了),這個速度相當快。我們在 Tensorflow 中實現(xiàn)了 Griffin-Lim 算法,所以它也成為了整個模型的一部分。盡管 Griffin-Lim 是可導的(它沒有訓練參數(shù)),但我們沒有在其上設計任何損失。我們強調選擇 Griffin-Lim 是為了簡單,盡管它已經(jīng)生成了很好的結果,我們也在開發(fā)一個快速的高品質的可訓練的聲譜 - 波形轉換器。
MODEL DETAILS

表 1 列出了超參數(shù)和模型架構。我們使用對數(shù)幅度譜,漢明窗,幀長 50 毫秒,幀移 12.5 毫秒,2048 點傅里葉變換,我們還發(fā)現(xiàn)預加重 (0.97) 也有用。對所有的試驗我們使用 24k 赫茲采樣率。在論文的 MOS 評分中使用 r=2(解碼器輸出層的縮小因子),更大的 r 也運行的很好(例如 r=5)。我們使用 Adam 優(yōu)化器 (Kingma & Ba,2015),學習率從 0.001 開始 500K 步后降低到 0.0005,1M 步后降到 0.0003,2M 步后降到 0.0001。我們采用簡單的 L1 損失同時囊括 seq2seq 解碼器(梅爾刻度聲譜圖)和后處理網(wǎng)絡(線性刻度聲譜圖)。兩部分損失的權重相同訓練的批大小設定為 32,所有的序列都補齊到最大長度。在訓練中使用損失屏蔽是一個常用做法,在補零的數(shù)據(jù)幀上屏蔽損失。然而我們發(fā)現(xiàn)這樣訓練出的模型不知道何時停止輸出,導致靠近結尾會有重復的聲音。解決這個問題的一個簡單技巧是對補零的數(shù)據(jù)幀也進行波形重建。
EXPERIMENTS

我們在一個內部北美英語數(shù)據(jù)集上訓練 Tacotron,這個數(shù)據(jù)集包含大約 24.6 小時的語音數(shù)據(jù),由一個專業(yè)女性播講。所有單詞都進行了標準化處理,如 "16" 被轉換成 "sixteen"。
1 ABLATION ANALYSIS

為理解模型的關鍵組件我們實施了幾個剝離研究。對于生成式模型,基于客觀度量的模型比較是很困難的,這些客觀度量不能與感知很好地匹配 (Theis et al.,2015)。相反的我們主要依賴視覺比較。我們強烈推薦讀者聽一下我們提供的語音樣本。首先,與普通的 seq2seq 模型比較。編碼器和解碼器都是用 2 層殘差 RNN,每層包含 256 個 GRU 單元(我們也嘗試了 LSTM,結果類似),不使用 pre-net 和后處理網(wǎng)絡,解碼器直接預測線性對數(shù)幅度聲譜圖。我們發(fā)現(xiàn),預排程采樣(采樣率 0.5)對于這個模型學習對齊和泛化是必要的。我們在圖 3 中展示了學到的注意力對齊,圖 3 (a) 揭示了普通的 seq2seq 學到的對齊能力很微弱,一個問題是其中有一段注意力卡住了,這導致了語音合成結果的可理解度很差,語音自然度和整體音長也都被摧毀了。相對的,我們的模型學到了清晰平滑的對齊,如圖 3 (c) 所示。其次,我們比較了用一個 2 層殘差 GRU 編碼器替換 CBHG 后的模型,包括編碼器的 pre-net 在內模型的其余部分不變。比較圖 3 (b) 和圖 3 (c) 可以看到,GRU 編碼器的對齊有些噪聲。試聽語音合成結果,我們發(fā)現(xiàn)這些對齊噪聲會導致發(fā)音錯誤。CBHG 編碼器減少了過擬合并且在長的復雜短語上泛化能力很好。

圖 4 (a) 和圖 4 (b) 展示了使用后處理網(wǎng)絡的好處。我們訓練了一個除了不包含后處理網(wǎng)絡其余部分都一樣(解碼 RNN 修改成預測線性聲譜圖)的模型,擁有了更多的上下文信息,后處理網(wǎng)絡的預測結果包含更好的諧波(比如在 100~400 之間的高頻諧波)和高頻共振峰結構,這會減少合成的人工痕跡。
2 MEAN OPINION SCORE TESTS

我們做了平均意見得分(MOS)測試,由測試者對合成語音的自然程度進行 5 分制的李克特量表法(Likert scale score)評分。MOS 的測試者均為參與眾包的母語人群,共使用 100 個事先未展示的短語,每個短語獲得 8 次評分。當計算 MOS 評分時,只有佩戴耳機時打出的評分被計算在內。我們對 Tacotron 與參數(shù)式(parametric)系統(tǒng)(基于 LSTM(Zen et al.,2016))和拼接式(concatenative)系統(tǒng)(Gonzalvo et al.,2016)做了對比,后兩者目前均已投入商業(yè)應用。測試結果如下表顯示:Tacotron 的 MOS 分數(shù)為 3.82,優(yōu)于參數(shù)系統(tǒng)。由于參照基準已經(jīng)非常強大,以及由 Griffin-Lim 引起的人工痕跡,這一新方法具有非常好的前景。