Tacotron: Towards End-to-End Speech Synthesis

時間:2017.4
作者:yuxuan wang
單位:Google inc

abstract

 一個text-to-speech的系統包含text analysis fronted, an acoustic model and an audio synthesis module,搭建需要多方面的專業知識,而且這些模型都單獨訓練,誤差會被累加,訓練難度較大。
 我們提出一個直接從character合成speech的集成的端到端系統—tactron。給出<text, speech>對,模型可以從任何起始點開始訓練,在frame-level合成語音,性能優越。

1.introduction

 端到端的合成優點在於

  1. 減輕了工程壓力
  2. 可以對模型的各種特性進行調節,比如說話者、語言或者像情感這樣高層的特徵。而且對新數據做自適應會更簡單。
  3. 單個模型比multi-stage的模型更魯棒,且可以在帶噪數據上做訓練。

 text-to-speech:輸出是連續的,通常輸出序列是長於輸入序列,而且對於同一個文本,可能會有不同的speech可以對應,這也是合成的難度所在。
輸入:character
輸出: raw spec
不需要phoneme-level的對齊 ,生成評分3.8的英文語音。

2.related work

 Wavenet是一個強大的聲碼器,在TTS的合成也有效,但是由於它sample-level的自迴歸特性,需要TTS fronted 的語音特性,因此只是替代了聲學模型和聲碼器,並不能稱爲端到端。
 wang wenfu(中科院自動化所)首先提出全部用神經網絡做seq2seq TTS with attention,但是他需要一個預訓練的HMM幫助seq2seq作對齊,很難說清楚seq2seq學到多少對齊。其次,在訓練時做了一些trick,對韻律有損。而且,他預測的是聲碼器的參數,因此還需要一個聲碼器;輸入是phoneme,輸出有一些限制。
 char2wav也是預測是聲碼器參數,然後接一個 需要預訓練的sampleRNN聲碼器。
 Tactron直接預測raw spec,可以從頭開始訓練(trained from scratch)

3.model architecture

在這裏插入圖片描述
Tactron是基於seq2seq model with attention,它包括一個encoder, attention-based decoder, a post-processing net.

3.1 CBHG module

(本文首提)是提取seq representation的強大模型。
關於該模型值得注意的幾點:

1.模型先使用一系列的一維卷積網絡,有一系列的filter,filter_size從1到K,形成一個Conv1D Bank。這樣的作用相當於使用了一系列的unigrams, bigrams直到K-grams,儘可能多的拿到輸入序列從local到context的完整信息。其實這樣的模型,與之前我們提到過的IDCNN(Iterated Dilated Convolutionary Nerual Network)有異曲同工之妙。而IDCNN相比較起來有更少的參數,不知道如果把CBHG的Conv1D Bank換成IDCNN是怎樣的效果。

2.模型在最終的BiGRU之前加入了多層的Highway Layers,用來提取更高層次的特徵。Highway Layers可以理解爲加入了本來不相鄰層之間的「高速公路」,可以讓梯度更好地向前流動;同時又加入一個類似LSTM中門的機制,自動學習這些高速公路的開關和流量。Highway Networks和Residual Networks、Dense Networks都是想拉近深度網絡中本來相隔很遠的層與層之間的距離,使很深的網絡也可以比較容易地學習。
卷積的輸出堆疊在一起,在時間軸作max-pool,以增加局部不變性。

3.模型中還使用了Batch Normalization(繼ReLU之後大家公認的DL訓練技巧),Residual Connection(減少梯度的傳播距離),Stride=1的Max-pooling(保證Conv的局部不變性和時間維度的粒度)以及一個時髦的BiGRU。

3.2 encoder

 encoder的作用是提取文本序列的特徵 ,輸入是character seq,每一個文字表示成one-hot vector,並且嵌入到連續向量中。將embedding 經過pre-net作非線性變換,pre-net中用帶有drop out的bottleneck layer,可以加速收斂,增強泛化。
 CNHG的attentionion模塊將pre-net的輸出轉成最終encoder 的表示,而且和RNN encoder相比減少了過擬合和錯誤發音。

3.3 decoder

 我們使用一個文本相關的基於tanh的attention decoder,在每個解碼時間步,RNN提供attention query,將context vector和attention的輸出拼接,作爲decoder RNN的輸入。
在這裏插入圖片描述
模型架構

  • encoder:包括pre-net做非線性變換,CBHG網絡編碼成向量輸出;
  • attention機制:在做不同的預測時,需要關注句子序列中的位置是不一樣的,通過attention對輸出的向量✖️權重再求和,權重較大的位置加強 關注,權重爲 0的地方不再關注,實現變長的向量;但是會引入較大的參數量,產生 巨大的計算力需求。
  • decoder:pre-net先做非線性變換,attention-RNN,RNN decoder,RNN網絡對編碼的向量進行解碼,輸出上下文語言信息相關的語音。
  • post-processing net:首先是CBHG模塊將decoder的輸出轉成線性譜,然後用vocoder進行wav合成。
    參考:http://www.cnblogs.com/demo-deng/p/7692757.html
     decoder是RNN的垂直堆疊,殘差連接會加速收斂。如果decoder直接預測raw spec,會有很大的冗餘,因爲學習的是text和speech signal的對齊。爲了避免這個冗餘,我們用80-d的mel-scale spec作爲target,然後用post-processing net將seq2seq轉爲wav。
     用dense預測decoder的輸出,訓練的 trick是每次預測r幀不重疊的片段,這樣就把時間t按照r切分,這樣可以減小model size,加快訓練時間和預測時間,加速收斂,這可能是因爲相鄰語音幀是相關的,而且一個字會對應多幀。如果每次只輸出一幀,就會導致多個時間步的輸入是一樣的。一次輸出多幀還會使attention在訓練的早期向前推進。
     decoder的初始輸出是全0幀,記作,在inference階段,會把r幀的最後一幀作爲decoder下一時間步的輸入。這是一個ad-hoc choice(臨時選擇的方案),也可以送入r幀全部。在training階段,送入第r幀的ground truth。輸入幀像編碼器那樣送入prenet。我們發現scheduled sampling對語音質量有損失,而pre-net的drop out會引入噪聲,解決輸出分佈多模態的問題。

post-processing net and speech synthesis

 post-processing的任務就是 把seq2seq輸出的target轉成可以轉成wav的target。因爲我們用的是GL vocoder,所以需要target是線性幅度譜(如stft變換的)。

5.1 ablation analysis

 我們採取消融分析去理解模型中的關鍵部分,和生成模型一樣,很難從客觀的指標去進行評價。

  1. 首先和vanilla seq2seq model比較,encoder和decoder都用了2層256個units的GRU,沒有pre-net和post-processing net,解碼器直接預測線性對數幅度譜,但是需要0.5的scheduled sampling讓模型學習路線並概括。發現模型在幾幀後會停滯不前,這導致了合成信號不好,自然度和總持續時間被破壞。參見圖3(a)
  2. 然後將CBHG encoder模塊用一個2層的GRU encoder代替,其他部分保持一致,會發現學習路線有噪聲,聽合成的語音會發現有錯誤的發音,說明CBHG模塊減少了過擬合,可以生成長的複雜的詞組。參見圖3(b)
  3. 圖4(a);4(b)證明了使用post-processing net的好處—模型沒有post-processing net,RNN預測線性譜。post-preocessing net從網絡中得到更多的文本信息,因此預測中有更多的分辨諧波和高頻共振結構,減少了合成僞像。

 scheduled sampling是seq2seq的模型的訓練階段,訓練階段解碼器在最大化第t個元素概率時,標準序列到序列模型使用上一時刻的真實元素yt−1作爲輸入。設上一時刻生成的元素爲gt−1,Scheduled Sampling算法會以一定概率使用gt−1作爲解碼器輸入。
 標準的序列到序列模型中,如果序列前面生成了錯誤的元素,後面的輸入狀態將會收到影響,而該誤差會隨着生成過程不斷向後累積。Scheduled Sampling以一定概率將生成的元素作爲解碼器輸入,這樣即使前面生成錯誤,其訓練目標仍然是最大化真實目標序列的概率,模型會朝着正確的方向進行訓練。因此這種方式增加了模型的容錯能力。

5.2 mean opinion score

3.82的MOS評分