JETS——基於FastSpeech2和HiFi-GAN的端到端TTS

本文未經允許禁止轉載,謝謝合作。作者:Light Sea@知乎

今天我將介紹JETS,一種基於FastSpeech2和HiFi-GAN完全端到端TTS模型,我們之前介紹的TTS模型基本都是二階段的模型,因此訓練會比較繁瑣,JETS解決瞭這個問題,從而使得我們在隻訓練一個模型的情況下輸入text直接合成語音。

原文標題:<JETS: Jointly Training FastSpeech2 and HiFi-GAN for End-to-End Text-to-Speech>

1. Introduction

當前很多主流的TTS模型,比如Tacotron2、FastSpeech,都使用二階段訓練,第一個階段從text生成梅爾頻譜(mel-spec),第二個階段使用neural vocoder從mel-spec生成語音,這種方法雖然有比較令人滿意的表現,但也有一些缺點,比如模型需要按順序訓練,因為vocoder依賴前一個模型的輸出作為輸入。

解決這些問題的方法就是完全端到端的TTS模型(E2E-TTS),近期的模型諸如FastSpeech2和VITS都有著和二階段模型類似的表現。

本文中作者提出一種基於FastSpeech2和HiFi-GAN的E2E-TTS模型JETS,模型可以直接從text生成語音。作者還提出一個alignment module,使得JETS不需要依賴外部工具如MFA來生成alignment。實驗結果證明JETS和近期比較好的E2E-TTS模型VITS有類似的表現。

2. Method

2.1 FastSpeech2 & HiFi-GAN

模型的整體架構如下圖所示:

可以看到基本上就是組合瞭FastSpeech2和HiFi-GAN,但是多加瞭一個alignment module。

這裡我假設讀者對FastSpeech2和HiFi-GAN都比較瞭解,不瞭解的讀者可以參考我之前的文章。

FastSpeech2

HiFi-GAN

我們簡述一下計算的流程,首先text會通過encoder來編碼得到隱表示 h,然後使用alignment module我們可以知道每個token對應的duration d;之後我們使用variance adaptor來生成pitch和energy信息,根據之前得到的 d 我們可以將 h 擴展到合適的長度,這時候把 h 輸入到decoder可以生成mel-spec;最後HiFi-GAN生成語音。

下圖展示瞭variance adaptor的結構:

由於我們不需要mel-spec這個中間表示,因此FastSpeech2部分的loss隻來自variance adaptor:

HiFi-GAN的loss包含三個部分,GAN的對抗損失、feature matching loss、mel-spec loss:

681e33fd9991bf364d285ae31537f59c

2.2 Alignment Learning Framework

Alignment是指音素和其對應的語音的長度,知道這個長度對訓練諸如FastSpeech的TTS模型非常重要。我們有很多方法可以計算它,比如像FastSpeech一樣基於attention,或是像FastSpeech2一樣基於forced alignment工具MFA,另外也有像VITS一樣和模型學習一起訓練的方法。

這裡作者使用一個alignment module來和模型的其它部分一起訓練,從而不需要多餘的步驟或是依賴於外部工具。

Alignment module的輸入為text的隱表示h和mel-spec m,作者首先使用encoder將它們編碼為 h^{enc}m^{enc} ,之後我們可以計算text和mel-spec之間的距離矩陣 :

這裡作者使用瞭L2距離。

然後我們使用softmax就能得到soft alignment A_{soft}

A_{soft}可以被視為mel-spec的frame對應某個text的概率矩陣,由此我們可以計算alignment module的objective:

這裡s是一個有效的alignment, S(h)是所有有效的alignment構成的集合, T,N 分別是mel-spec和text的長度。

什麼是“有效的alignment”呢?首先我們知道這個alignment必須是單調的,也就是說text中音素的前後關系在mel-spec中也必然保持一致,這些實際上類似於筆者之前在介紹DTW的文章中提到的要求。

回到objective,實際上(5)式最大化瞭有效alignment的後驗概率。

熟悉語音識別的讀者已經明白瞭,上式其實和CTC的objective非常類似,因此也可以使用CTC中的基於動態規劃的forward_sum算法進行高效計算。不懂CTC的讀者不需要著急,它其實是語音識別中非常著名且常用的loss,我將在之後的文章中介紹,這裡你隻需要知道有這麼個算法能計算(5)式就可以瞭。

到此我們知道瞭如何計算loss,我們現在關註如何從 A_{soft} 中得到duration,這裡作者用瞭Glow-TTS中的MAS(Monotonic Alignment Search)算法,它的原型其實也是一個著名算法——viterbi算法,viterbi算法是一個經典的求解最短路徑的動態規劃算法,不熟悉的讀者可以參考Glow-TTS的論文或是查看viterbi算法的資料,這裡就不贅述瞭。下圖是MAS的一個例子:

使用MAS我們可以把 A_{soft} 轉換為一個0-1矩陣 A_{hard},接著我們計算 sum_{j}A_{hard,i,j}就能得到duration。為瞭讓 A_{soft}A_{hard} 更接近,作者也使用它們之間的KLD作為額外的loss:

最終的loss為:

da503de1ca2d98b3e18366e6498b4656

註意我們隻在訓練的時候需要這個alignment module,而在推論的時候由於有duration predictor我們是不需要它的。

最後要說明的是這個alignment module在之前的工作中已經被提出瞭,因此並不是作者的原創。

2.3 Final loss

JETS的loss為variance adaptor、HiFi-GAN、alignment module的loss的加和:

a767adbc3121c0f9f79daec85855d8a8

3. Experiments

作者使用LJSpeech進行實驗,且使用FastSpeech2和VITS作為baseline,結果如下表所示:

這裡CF2就是FastSpeech2+HiFi-GAN,其中ft表示兩者分開訓練,一起fine-tuning;tr表示一起訓練。

可以看到JETS在F0 RMSE, CER和MOS上都有最好的表現,而在MCD上是CF2-ft的表現更好。總體而言表現還是令人滿意的。

4. Conclusions

本文我介紹瞭JETS,一種結合瞭FastSpeech2和HiFi-GAN的E2E-TTS模型。JETS可以直接從text中生成語音,且進一步使用alignment module來解除對外部對齊工具的依賴,在實驗中取得瞭和近期的E2E-TTS模型類似或更好的結果。總體而言,JETS在創新性上有所欠缺,但依然不失為一個有啟發和實用意義的工作。

創作不易,如果大傢覺得有收獲的話還請點贊喜歡收藏支持一下,你的支持就是我創作的動力。

发表回复

相关推荐

颈丛解剖学概述

郑大解剖学 腾康学院 颈丛由第一至第四颈神经前支组成,有时第五颈神经前支也参与。颈丛位于胸锁乳突肌深方,椎前肌群和中斜 ...

· 1秒前

有些法国葡萄酒上,为什么会标有“Domaine”?

一 有几次,跟做金融的朋友吃饭。 这帮有钱人喜欢喝好酒,法国波尔多 Bordeaux 的红酒喝得七七八八了,就开始喝勃艮第 Burgu ...

· 10秒前

用word实现把竖着文字放在页面中间的方法

在Word输入内容后,默认的文字排列方向是水平的,有时候为了排版上的美观常常将文字的排列方向设置为垂直的。下面小编就为大 ...

· 20秒前

公众号裂变涨粉工具-媒想到使用操作说明

微信seeyouwp,备注知乎,需要wetool可以联系我。

· 29秒前

2023年職業選手都用什麼鍵鼠,別在看ROG瞭!

之前做瞭一期鼠標和鍵盤的性價比推薦後遇見一些朋友私信高端鍵盤鼠標推薦的問題! 說實話,鼠標和鍵盤超過500元以上價位更多...

· 39秒前