Grad-TTS:Diffusion在語(yǔ)音合成中的端到端實(shí)現(xiàn)

本期介紹華為俄羅斯諾亞方舟實(shí)驗(yàn)室團(tuán)隊(duì)的2021年的ICMLGrad-TTS: A Diffusion Probabilistic Model for Text-to-Speech

一、從文字到聲音:傳統(tǒng)語(yǔ)音合成的兩步流程

語(yǔ)音合成(text-to-speech,TTS)的核心任務(wù)是將文本(和目標(biāo)音色)轉(zhuǎn)換為自然語(yǔ)音波形。有一族主流方法將這一過(guò)程分為兩個(gè)階段:

  1. 特征生成(feature generator):文本首先被轉(zhuǎn)換為梅爾頻譜(Mel-spectrogram)。梅爾頻譜是對(duì)原始波形壓縮的時(shí)頻表示,它是一個(gè)二維矩陣,橫軸(時(shí)間)表示音頻分段的時(shí)間幀(如每幀20ms),縱軸(頻率)是非線(xiàn)性的聲音頻率刻度,也叫Mel刻度,通常強(qiáng)調(diào)人耳更敏感的低頻分辨率(如包含64或者128個(gè)Mel帶),矩陣元素值是每個(gè)時(shí)間點(diǎn)、每個(gè)頻率的能量,通常為對(duì)數(shù)功率。之所以是壓縮過(guò)的,是因?yàn)樗?/li>
  • 只保留了人耳敏感的頻率范圍,基于Mel刻度進(jìn)行了濾波,丟棄了高頻細(xì)節(jié);
  • 是把waveform 做了 短時(shí)傅里葉變換(STFT),只保留幅度信息,丟棄了相位信息
  • 舍棄一些不可聽(tīng)但存在的超短時(shí)間變化

由于梅爾頻譜存在信息損失,所以需要接一個(gè)聲碼器模塊來(lái)補(bǔ)充信息。因?yàn)橛锌赡芏鄠€(gè)waveform對(duì)應(yīng)同一個(gè)mel-spectrogram,聲碼器也適合用一個(gè)生成模型去建模、填充。

  1. 聲碼器(Vocoder):將梅爾頻譜還原為波形。常用方法依賴(lài) WaveNet 2016
    等自回歸模型,或者HiFi-GAN 2020等生成對(duì)抗網(wǎng)絡(luò)產(chǎn)生最終的語(yǔ)音。

二、Grad-TTS的架構(gòu)創(chuàng)新

Grad-TTS是一個(gè)特征生成算法,輸入文字得到梅爾頻譜,vocoder需要借用HiFi-GAN等完成(但也討論了直接端到端生成波形的可行性)。它首次將擴(kuò)散模型(Diffusion Model)應(yīng)用于特征生成階段,此前擴(kuò)散模型僅用于聲碼器(如(DiffWave 2020、WaveGrad 2020等),這次研究證明擴(kuò)散模型在特征生成階段不僅可行,而且可以表現(xiàn)得很優(yōu)異。

  • 相比自回歸生成模型,Grad-TTS直接生成梅爾頻譜,避免了逐幀迭代的累積誤差。
  • 相比傳統(tǒng)特征生成,擴(kuò)散模型對(duì)梅爾頻譜的天然生成更平滑的結(jié)果,減少音素邊界處的鋸齒,也就減少了人工感。
  • 相比于早期擴(kuò)散模型,Grad-TTS用的是解ODE的方式進(jìn)行推理,而不是像DiffWave、WaveGrad那樣在一個(gè)馬爾科夫鏈上逐步采樣,推理更快、采樣路徑穩(wěn)定、對(duì)score的精度更敏感。
  • 在對(duì)齊時(shí),用一個(gè)顯式的時(shí)長(zhǎng)預(yù)測(cè)(duration predictor)規(guī)避了注意力機(jī)制常見(jiàn)的對(duì)齊失敗問(wèn)題,比如某些字符分配過(guò)多/過(guò)少幀。

為什么特征生成的擴(kuò)散模型更難做?我想原因有三:

  • 輸出空間的復(fù)雜度更高。生成 mel-spectrogram 涉及時(shí)間對(duì)齊、語(yǔ)速控制等復(fù)雜因素;
  • 控制性要求更高:需要準(zhǔn)確表達(dá)文本信息、韻律、情感等;
  • 反向過(guò)程的條件復(fù)雜:從純?cè)肼暽蒻el特征不僅需要學(xué)會(huì)語(yǔ)音結(jié)構(gòu),還要滿(mǎn)足輸入文本語(yǔ)義。

三、擴(kuò)散模型

非平衡熱力學(xué)的啟發(fā)

想象一個(gè)人飽飽地抽了一口煙,猛一下吐出,煙霧會(huì)以這位煙民的口作為起點(diǎn),向外擴(kuò)散。開(kāi)始可以看到一團(tuán)清晰的煙霧,逐漸地在空氣中化為無(wú)形。如果我們知道完整的動(dòng)力學(xué)規(guī)律,掌握氣流方向、障礙物、擴(kuò)散速度,就知道這一刻和上一刻相比,煙霧以何種規(guī)律變得更無(wú)序,從而知道如何從這一刻回到上一刻。在更極限的情況下,從末態(tài)還原初態(tài)——從一個(gè)已經(jīng)均勻擴(kuò)散的介質(zhì)里反演最初煙霧產(chǎn)生的位置。擴(kuò)散模型就是這樣的思路:

通過(guò)一個(gè)逐步加噪聲的馬爾可夫過(guò)程,把任意數(shù)據(jù)分布變成標(biāo)準(zhǔn)高斯分布,然后再學(xué)習(xí)一個(gè)反向過(guò)程把高斯噪聲還原成數(shù)據(jù)分布。

數(shù)學(xué)形式

前向過(guò)程

描述數(shù)據(jù)被逐步加噪的隨機(jī)過(guò)程,t時(shí)刻數(shù)據(jù)X_t將要發(fā)生的變化是一個(gè)It?型隨機(jī)微分方程:
dX_t=b(X_t,t)dt+a(X_t,t)dW_t
第一項(xiàng)是隨時(shí)間變化的確定性漂移(drift),主導(dǎo)長(zhǎng)期趨勢(shì)。比如b(X_t,t)=-X_t,因?yàn)?img class="math-inline" src="https://math.jianshu.com/math?formula=X_t" alt="X_t" mathimg="1">前面有個(gè)負(fù)號(hào),它永遠(yuǎn)會(huì)將X拉回原點(diǎn)。
第二項(xiàng)是隨機(jī)波動(dòng)的擴(kuò)散項(xiàng)(diffusion),模擬不可預(yù)測(cè)的噪聲。這里W_t是標(biāo)準(zhǔn)布朗運(yùn)動(dòng)(維納過(guò)程),也就是dW_t\sim \mathcal{N}(0,dt), W_{t_2}-W_{t_1}\sim \mathcal{N}(0,t_2-t_1)。

如果a、b滿(mǎn)足一定的性質(zhì),就可以構(gòu)造出t\rightarrow \infty的解X_t最終變成白噪聲。要讓X_T服從正態(tài)分布,需要

  • b(X_t,t)一般讓它有收斂的性質(zhì);
  • a(X_t,t)一般設(shè)置為隨時(shí)間變化的縮放;
  • Fokker-Planck方程的穩(wěn)定解是正態(tài)分布。

作者構(gòu)造了這樣的一個(gè)前向擴(kuò)散過(guò)程:
dX_t = \dfrac{1}{2}\Sigma^{-1}(\mu-X_t)\beta_t dt + \sqrt{\beta_t}dW_t
這個(gè)過(guò)程是DDPM (Ho et al. 2020)的一個(gè)變體,保持了總方差不變,逐漸將X_t拉向\mu,同時(shí)逐步加高斯噪聲,噪聲量\sqrt{\beta_t}隨時(shí)間變化,\beta_t是人為預(yù)設(shè)的。

為什么能得到穩(wěn)態(tài)的終點(diǎn)解?

作者在文章中也給出了證明。我稍作展開(kāi)補(bǔ)充,如果
dX_t=A(t)X_tdt+b(t)dt+\sigma(t)dW_t
解就是
X_t=\Phi(t)X_0+\Phi(t)\int_0^t\Phi(s)^{-1}b(s)ds+\Phi(t)\int_0^t\Phi(s)^{-1}\sigma(s)dW_s
其中
\Phi(t)=\exp(\int_0^t A(s)ds)
代入

  • A(t)=-\frac{1}{2}\Sigma^{-1}\beta_t
  • b(t)=\frac{1}{2}\Sigma^{-1}\mu\beta_t
  • \sigma(t)=\sqrt{\beta_t}
    再把\mu項(xiàng)做常用的積分變量替換(你可以把\mu項(xiàng)理解為非齊次項(xiàng)經(jīng)過(guò)衰減與疊加,趨向于一個(gè)穩(wěn)態(tài) \mu,但乘了一個(gè)衰減因子\Phi),立馬得到了文中的式(3):
    X_t=\underbrace{e^{-\frac{1}{2}\Sigma^{-1}\int_0^t\beta_s ds}X_0+(I-e^{-\frac{1}{2}\Sigma^{-1}\int_0^t\beta_s ds})\mu}_{均值}+\underbrace{\int_0^t\sqrt{\beta_s}e^{-\frac{1}{2}\Sigma^{-1}\int_s^t\beta_u du}dW_s}_{隨機(jī)擾動(dòng)項(xiàng)}
    前兩項(xiàng)是均值項(xiàng)記成\rho,含e的最后都趨向于0所以\rho\rightarrow \mu,第三項(xiàng)是W_t帶來(lái)的擾動(dòng),Var(\int_0^t \ldots W_s)=\Sigma(I-e^{-\Sigma^{-1} \int_0^t \beta_s ds})\rightarrow\Sigma
    這樣就完成了正態(tài)穩(wěn)態(tài)解的擴(kuò)散過(guò)程的構(gòu)造。并且穩(wěn)態(tài)的分布只和W_t的分布有關(guān),\sigma也就是\beta_t的大小只能決定收斂到穩(wěn)態(tài)的速度。
為什么X_t|X_0的分布是一個(gè)正態(tài)?

剛才推導(dǎo)了t\rightarrow\infty極限情況,現(xiàn)在來(lái)推導(dǎo)t有限情況。上一節(jié)中X_t的隨機(jī)擾動(dòng)項(xiàng)的積分項(xiàng)dW_s是一個(gè)布朗運(yùn)動(dòng)的微分,對(duì)形如\int_0^t f(s) dWs這樣類(lèi)型的It?積分,如果f(s)是確定性的(non-random)可積函數(shù),那它積分的結(jié)果就是一個(gè)正態(tài)分布:
\int_0^t f(s) dWs\sim \mathcal N(0,\int_0^t f(s)^2 ds)
運(yùn)用這個(gè)結(jié)果就能從文章的式(3),X_t的加噪過(guò)程,得到式(5),這個(gè)加噪過(guò)程的每個(gè)時(shí)間t對(duì)應(yīng)的標(biāo)準(zhǔn)差矩陣。

要計(jì)算這個(gè)積分分布的方差的話(huà),就直接按照定義去計(jì)算隨機(jī)擾動(dòng)項(xiàng)的協(xié)方差矩陣:
Cov(X_t) =\int_0^t\beta_s e^{-\Sigma^{-1}\int_s^t\beta_u du}dW_s
:=\int_0^{\Psi(t)}e^{-\Sigma^{-1}\tau}d\tau=[-\Sigma e^{-\Sigma^{-1}\tau}]_0^{\Psi(t)}=\Sigma(I-e^{-\Sigma^{-1}\Psi(t)})
=\Sigma(I-\exp(-\Sigma^{-1}\int_0^t\beta_s ds):=\lambda
其中指數(shù)上面的矩陣只有對(duì)角元素,所以得到的就是逐元素的指數(shù)。
由此,Law(X_t|X_0)的分布\mathcal N(\rho,\lambda)就推導(dǎo)完成了。(這兩個(gè)量都隨時(shí)間而變化,詳情見(jiàn)式(6)。)

逆向過(guò)程

逆向過(guò)程的隨機(jī)微分方程是
dX_t=(\frac{1}{2}\Sigma^{-1}(\mu-X_t)-\nabla\log p_t(X_t))\beta_t dt+\sqrt{\beta_t}d\tilde W_t

簡(jiǎn)單展開(kāi)講講這個(gè)式子是怎么來(lái)的。根據(jù)Reverse-time diffusion equation models 1982,原始過(guò)程dX_t=b(X_t,t)dt+\sigma(t)dW_t對(duì)應(yīng)的反向過(guò)程dX_t=\tilde b(X_t,t)dt+\tilde \sigma(t)d\tilde W_t中,\tilde\sigma(t)不變,
\tilde b(X_t,t)=b(x,t)-\sigma^2(t)\nabla_x \log p_t(x)
也就是在原來(lái)的drift基礎(chǔ)上,減掉一個(gè)score correction term,補(bǔ)償前向過(guò)程中噪聲造成的擴(kuò)散偏移。

解微分方程有很多成熟的數(shù)值方法,例如Euler、Runge-Kutta、DPM-Solver等。不過(guò)上式SDE包含了一個(gè)隨機(jī)項(xiàng)d\tilde W_t,表示reverse-time brownian motion。作者說(shuō)我可以改為解一個(gè)ODE,也就是去掉這個(gè)噪聲項(xiàng),模擬一個(gè)“平均軌跡”,變成
dX_t=(\frac{1}{2}\Sigma^{-1}(\mu-X_t)-\nabla\log p_t(X_t))\beta_t dt
至少它們的最終生成的樣本分布p(x,t)是一樣的。

為什么SDE和ODE樣本分布是一樣的?

對(duì)于一個(gè)It? SDE
dX_t =b(x,t) dt + \sigma(x,t)dW_t 它對(duì)應(yīng)的密度函數(shù)p(x,t)滿(mǎn)足Fokker-Planck方程
\frac{\partial p(x,t)}{\partial t}=-\nabla_x \cdot (b(x,t)p(x,t))+\frac{1}{2}\nabla_x^2:[\sigma(x,t) \sigma(x,t)^Tp(x,t)]
代入逆向過(guò)程\tilde b(x,t)=b-\sigma^2\nabla\log p,\tilde \sigma = \sigma,
\frac{\partial p}{\partial t}=-\nabla\cdot [(b-\sigma^2\nabla\log p)p]+\frac{1}{2}\nabla_x^2:(\sigma^2 p)
由于\nabla[(\sigma^2\nabla\log p)p]=\nabla\cdot(\sigma^2\nabla p)=\nabla^2 (\sigma^2 p),這項(xiàng)正好和后面的drift correction抵消了,
于是變成\frac{\partial p}{\partial t}=-\nabla\cdot (bp)
ODE也是這個(gè)不帶\sigma項(xiàng)的式子!
所以在所有時(shí)間點(diǎn)t上都有p_{SDE}(x,t)=p_{ODE}(x,t)

那么已知X_t的話(huà),只要知道擴(kuò)散的規(guī)律,原始梅爾頻譜就可以通過(guò)以下ODE式子來(lái)解:
dX_t=(\frac{1}{2}\Sigma^{-1}(\mu-X_t)-\nabla\log p_t(X_t))\beta_t dt
擴(kuò)散的規(guī)律就掌握在\nabla \log p_t(X_t)中,不妨用一個(gè)神經(jīng)網(wǎng)絡(luò)s_\theta (X_t,t)估計(jì)。也就是解以下式子
dX_t = \frac{1}{2}(\mu-X_t-s_\theta(X_t,\mu,t))\beta_t dt
這里作者讓終極分布變成\mathcal N(\mu,I)。所以其實(shí)s學(xué)的是\nabla_{X_t} \log p(X_t|\mu),建模時(shí)需要帶上均值參數(shù)\mu。

為什么要采用這樣的終點(diǎn)分布呢?

我猜測(cè),相比之下,\mathcal N(0,I)是DDPM的原始設(shè)定,它更通用但可能會(huì)因?yàn)槿鄙贄l件信息而降低生成的控制能力;\mathcal N(\mu,\Sigma)有更復(fù)雜的建模能力,但是會(huì)增加訓(xùn)練和采樣的復(fù)雜度,不利于實(shí)現(xiàn)score matching(score matching就是估計(jì)\nabla \log p_t(X_t))。

四、Grad-TTS

簡(jiǎn)化流程

整個(gè)語(yǔ)音生成流程大致是這樣的:

  1. 輸入文本,輸出文字對(duì)應(yīng)的表征。用一個(gè)encoder把token轉(zhuǎn)換成表征
  2. 輸入表征,輸出對(duì)齊后的語(yǔ)音幀的表征,即初始的梅爾頻譜。用了MAS作為訓(xùn)練對(duì)齊的指引。
  3. 利用語(yǔ)音幀的表征,得到條件向量\mu,在正向和逆向過(guò)程中都會(huì)用到
  4. 正向過(guò)程:把訓(xùn)練集中的梅爾頻譜X_0一步加噪成X_t
  5. 逆向過(guò)程:從X_0X_t對(duì)中學(xué)習(xí)decoders
  6. 解ODE,學(xué)會(huì)如何從噪聲中還原出想要的梅爾頻譜。


    Grad-TTS極簡(jiǎn)流程圖

完整流程

1. encoder

這一步把文本用encoder轉(zhuǎn)換成表征輸出。作者希望encoder的輸出就已經(jīng)接近目標(biāo)y,這樣從X_TX_0解ODE的去噪過(guò)程會(huì)更輕松(路徑短、誤差小)。作者也嘗試了不要encoder,直接從白噪聲里學(xué)y,發(fā)現(xiàn)不太行,沒(méi)法對(duì)齊,文本token就學(xué)不到和幀的對(duì)應(yīng)關(guān)系。
我們知道Grad-TTS的反向采樣是從\mathcal N(\mu,I)開(kāi)始的,所以\mu希望可以盡可能接近y,讓X_T盡量是一個(gè)以y為中心的隨機(jī)點(diǎn)。訓(xùn)練目標(biāo)就有形如\mathcal L_{enc}=L(\mu,y)這樣的項(xiàng)。作者選擇了對(duì)數(shù)似然作為參與訓(xùn)練的損失函數(shù):
\mathcal L_{enc}=-\sum_{j=1}^F \log \psi(y_j;\tilde \mu_{A(j)},I)
來(lái)聚合真實(shí)y\mathcal N(\tilde \mu,I)設(shè)定下的概率密度。因?yàn)槭歉咚狗植迹鋵?shí)也就是在優(yōu)化y\tilde \mu的MSE。

這里的\tilde\mu代表從encoder里生成的表征,F是聲音的幀數(shù),A是對(duì)齊的算子(下一節(jié)介紹)。

encoder模型照搬了Glow-TTSTransformer-TTS+FastSpeech框架。

2. 對(duì)齊

這一步訓(xùn)練duration predictor來(lái)學(xué)習(xí)MAS找到的映射關(guān)系。
在訓(xùn)練時(shí),首先要知道文字表征事實(shí)上是如何映射到語(yǔ)音幀數(shù)(時(shí)長(zhǎng))的,然后再去學(xué)習(xí)這個(gè)過(guò)程以方便推理。Glow-TTS用了硬單調(diào)對(duì)齊搜索(hard Monotonic Alignment Search, hard MAS)來(lái)動(dòng)態(tài)搜索映射關(guān)系,這里也照搬了。hard MAS是一種常用于非自回歸的最短路搜索對(duì)齊策略,每一個(gè)語(yǔ)音幀要明確地分配給輸入的某個(gè)或者某些音素(滿(mǎn)射性),特征和音素的對(duì)齊路徑是一致的,不會(huì)往回搜(單調(diào)性)?!癶ard”指的是對(duì)齊的確定性,輸入音素與輸出幀的映射關(guān)系是明確且離散的,不存在soft那種概率權(quán)重或模糊對(duì)應(yīng)?;趩握{(diào)和滿(mǎn)射的特性,MAS很適合于文字和語(yǔ)音之間的轉(zhuǎn)換任務(wù)。

通過(guò)MAS找到最優(yōu)硬對(duì)齊路徑A^*之后,我們就擁有了每個(gè)音素\tilde \mu的時(shí)長(zhǎng)d_i。作者建立了一個(gè)神經(jīng)網(wǎng)絡(luò)DP來(lái)預(yù)測(cè)這些音素的對(duì)數(shù)時(shí)長(zhǎng),具體優(yōu)化目標(biāo)是:
d_i=\log\sum_{j=1}^F\mathbb{I}_{A^*(j)=i},i=1,\ldots,L,
\mathcal L_{dp}=MSE(DP(sg[\tilde \mu]),d)。
這個(gè)神經(jīng)網(wǎng)絡(luò)作為duration predictor將會(huì)參與到推理中,而MAS只作為訓(xùn)練時(shí)的ground truth。

3. 加噪

作者構(gòu)造了前向過(guò)程的SDE使得X_t\sim\mathcal N(\rho,\lambda)(不同時(shí)刻這個(gè)分布的參數(shù)不同),于是可以采樣每個(gè)時(shí)刻的\epsilon\sim\mathcal N(0,\lambda)也就是\sqrt{\lambda}\xi,\xi\sim\mathcal N(0, I)來(lái)得到X_t = \rho+\epsilon(為了寫(xiě)法上的簡(jiǎn)潔,\rho\epsilon以來(lái)的時(shí)間等變量忽略)。
我們的s就是要學(xué)這些不同t時(shí)刻的X_t的score,也就是它們的log-density:
\nabla_X \log p(X) =\nabla_X( -\frac{1}{2}(X-\rho)^T\lambda^{-1})(X-\rho)+const
=-\lambda^{-1}(X-\rho)=-\lambda^{-1}\epsilon=-\lambda^{-1/2}\xi
用一個(gè)mse來(lái)衡量s對(duì)所有時(shí)刻所有采樣的擬合情況,也就是損失函數(shù)
\mathcal L_{diff}=\mathbb{E}_{X_0,t}[\mathbb{E}[\| s_\theta (X_t,\mu,t)+\frac{\xi_t}{\sqrt\lambda_t}\|^2_2]]
不過(guò),隨著噪聲越來(lái)越大,內(nèi)層期望的scale也會(huì)越來(lái)越大。diffusion的慣用操作是把內(nèi)層期望rescale到統(tǒng)一的度量,也就是乘上權(quán)重1/\mathbb{E}[\| \frac{\xi_t}{\sqrt\lambda_t}\|^2_2=\lambda_t,損失函數(shù)變成
\mathcal L_{diff}=\mathbb{E}_{X_0,t}[\lambda_t\mathbb{E}[\| s_\theta (X_t,\mu,t)+\frac{\xi_t}{\sqrt\lambda_t}\|^2_2]]
作者用均勻分布作為t的采樣,其他diffusion的研究也有用cos等兩頭密中間梳的schedule,取決于不同模型的實(shí)際表現(xiàn)。

在實(shí)際訓(xùn)練中,s的框架采用了U-Net 2015,三層分辨率+輸入本身作為通道。

4. 訓(xùn)練流程

至此,所有在推理中需要的參數(shù)就訓(xùn)練結(jié)束了??偣灿腥齻€(gè)模塊:文本encoder,duration predictor和decoders。通過(guò)三個(gè)損失函數(shù)優(yōu)化:L_{enc}+L_{dp}+L_{diff}。L_{enc}調(diào)整token表征讓它更容易對(duì)齊,L_{dp}預(yù)測(cè)每個(gè)token的幀數(shù),L_{diff}訓(xùn)練去噪score函數(shù)。

由于MAS是一個(gè)組合優(yōu)化問(wèn)題,不能和網(wǎng)絡(luò)參數(shù)聯(lián)合端到端優(yōu)化,所以用下列形式

  • 固定模型參數(shù),用MAS找到最優(yōu)對(duì)齊A
  • 固定A,優(yōu)化三個(gè)loss的和

在訓(xùn)練s時(shí),需要很有耐心地等diff loss到一個(gè)很低的水平,因?yàn)檫@里不僅要求全局s誤差小,而且要每條時(shí)間線(xiàn)上的每個(gè)點(diǎn)誤差都很小,不然一點(diǎn)點(diǎn)局部誤差就會(huì)在ODE中被放大。

為什么三個(gè)loss不能解耦?

encoder loss依賴(lài)于(duration直接決定的)對(duì)齊來(lái)評(píng)估輸出,duration需要token embedding作為輸入,這二者無(wú)法解耦。diff是用的frame-level \mu,\mu又依賴(lài)于token表征和duration決定的對(duì)齊mapping,它和duration predictor得到的frame-level embedding無(wú)法解耦。

5. 條件向量

本章第1節(jié),encoder的訓(xùn)練目標(biāo)是階段性輸出和最終生成比較像。養(yǎng)兵千日用兵一時(shí),在推理時(shí)就到了該用它的時(shí)候。對(duì)齊后文字token\tilde \muL\times d)變成了語(yǔ)音表征\muF\times d'),這個(gè)\mu就作為X_t的條件向量,diffusion的加噪終點(diǎn),去噪過(guò)程從\mathcal N (\mu, I )開(kāi)始解。
L是文字的token數(shù)量,F是語(yǔ)音幀,二者的對(duì)齊靠duration predictor。d是文字的編碼長(zhǎng)度,d'是語(yǔ)音的編碼長(zhǎng)度,也就是梅爾頻譜的頻率數(shù),后續(xù)實(shí)驗(yàn)中取80。

6. 去噪

從encoder和對(duì)齊得到的聲幀表征的均值向量\mu出發(fā),到最終的梅爾頻譜,用文章公式(13)所定義的ODE來(lái)執(zhí)行逆擴(kuò)散。這個(gè)ODE用歐拉方法進(jìn)行數(shù)值求解,其中h是step size步長(zhǎng),越小精度越高,速度越慢。所以h控制了速度和質(zhì)量的平衡。

小節(jié)一下,剛才的6步整理成流程圖如下


官方整理的Grad-TTS框架

五、討論和展望

  • 效率:雖然 ODE 推理比 SDE 快,但仍然比非擴(kuò)散方法慢很多。后續(xù)研究如 FastDiff、DiffSinger 有更快的采樣路徑。
  • 端到端一體化:Grad-TTS提出的方法仍依賴(lài) HiFi-GAN 作為 vocoder,它也討論了實(shí)現(xiàn)真正 end-to-end waveform 生成的可行性。但是,實(shí)際結(jié)果來(lái)看,Grad-TTS直接生成的聲音波形不忍卒聽(tīng)。
  • 多說(shuō)話(huà)人、多情感:在Grad-TTS原始設(shè)計(jì)中,如果模型訓(xùn)練完成,它無(wú)法直接通過(guò)用戶(hù)提供的任意語(yǔ)音來(lái)合成該音色的語(yǔ)音,只能用訓(xùn)練階段已經(jīng)學(xué)習(xí)到的speaker embeddings.
  • Diffusion: 通用任務(wù)上,CSI(Cosine similarity index)是diffusion的優(yōu)勢(shì),所以很適合用于人聲的相似性任務(wù),在語(yǔ)音中的優(yōu)勢(shì)在于可以生成大量細(xì)節(jié),所以在個(gè)性化、極值表現(xiàn)很優(yōu)秀。缺點(diǎn)也是可以生成大量噪聲的低頻信號(hào)來(lái)影響loss(確定性模型在低頻信號(hào)上性能更好,它們能夠有準(zhǔn)確的平均結(jié)果,但是細(xì)節(jié)的表現(xiàn)不敢保證,對(duì)它的調(diào)整會(huì)很難)。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容