AdaGAN:adaptive GAN for many-to-many non-parallel voice converison


論文地址:ADAGAN:ADAPTIVE GAN FOR MANY-TO-MANY NON-PARALLEL VOICE CONVERSION

簡介

AdaGAN是用於多對多的非平行數據的語音轉換。相比較之前用於VC的GAN模型StarGAN,AdaGAN不僅在性能上有所提升,甚至AdaGAN可以實現零次轉換(轉換爲訓練集中沒有的音色)。另外AdaGAN改進了訓練網絡,其計算代價很小。

Approach

problem formulation

先簡單介紹一下需要用到的符號的含義

Z={Z1,Z2,,Zn}Z=\left\{Z_{1}, Z_{2}, \dots, Z_{n}\right\} 表示說話人的集合ZiZ_{i}表示第ii個說話人

U={U1,U2,,Um}U=\left\{U_{1}, U_{2}, \dots, U_{m}\right\} 表示說話內容,UiU_{i}表示第ii個說話內容

XipX(Zi,Ui)X_{i} \in p_{X}\left(\cdot | Z_{i}, U_{i}\right) 表示第ii個說話人+第ii個說話內容的特徵

語音風格轉換在於,我們有原說話人的音頻特徵(Z1,U1)(Z_{1}, U_{1})和目標說話人對的音頻特徵(Z2,U2)(Z_{2}, U_{2}),我們想得到pX(Z2,U1)p_{X}\left(\cdot | Z_{2}, U_{1}\right),因此我們需要學習到X^Z1Z2\hat{X}_{Z_{1} \rightarrow Z_{2}},同時又要儘可能地保留U1U_{1}

這個過程可以表示爲:

pX^Z1Z2(Z1,U1,Z2,U2)=pX^(Z2,U1)p_{\hat{X}_{Z_{1} \rightarrow Z_{2}}}\left(\cdot | Z_{1}, U_{1}, Z_{2}, U_{2}\right)=p_{\hat{X}}\left(\cdot | Z_{2}, U_{1}\right)

AdaIn

AdaGAN中,生成器模型的規範化方法使用了AdaIN,在風格遷移上使用IN效果比BN好很多,AdaIN和IN的不同在於仿射參數來自於樣本,即作爲條件的樣本,也就是說AadIN沒有需要學習的參數,這和BN,IN,LN,GN都不同。風格轉換中的風格與IN中的仿射參數有很大關係,AdaIN擴展了IN的能力,使用風格圖像的均值和標準差作爲仿射參數。

AdaIN最初是用在圖片的風格遷移,在語音風格遷移中,AdaIN幫助我們得到說話風格,以及聲學內容。

AdaIN(x,Y)=σY(xμXσX)+μY\operatorname{AdaIN}(x, Y)=\sigma_{Y}\left(\frac{x-\mu_{X}}{\sigma_{X}}\right)+\mu_{Y}

xx是訓練集XX中聲學內容的特徵,YY是目標說話人的說話風格。AdaIN首先使用方差和標準差規範化xx。現在假定我們有一個潛在向量,可以表示聲學內容的分佈以及相同分佈下說話人風格。爲了轉換說話風格,需要使用目標說話的分佈。由此,AdaIN輸出可以找到影響風格的特徵,並且保留聲學內容。AdaIN沒有任何學習參數,他不會影響複雜度。

網絡框架

AdaGAN中有一個編碼器En,一個解碼器De,還有一個判別器Dis,En將輸入音頻特徵轉爲潛在向量,De由給定潛在向量生成音頻特徵。生成時假設原音頻爲x,需要轉換爲y,計算x,y的潛在向量。

En輸入40長度的Mel譜圖,輸出1*512的特徵向量。

De輸入1*512的特徵向量,輸出40長度的Mel譜圖。

En和De中所有的層都是線性層。En中,輸入和輸出層有40和512 cell大小。相對的在De中,輸出和出入層有512和40大小,所有的層(除了輸出層)都使用ReLU激活。

判別器Dis的作用於傳統的GAN中的判別器的作用相似。他會判別出音頻是原音頻還是經過轉換得到的。與De和En相似,Dis也是由線性層堆疊而成,他包含輸入層,3個隱藏層和輸出層,大小分別爲40,512,1。同樣每層也用ReLU函數激活。

轉換方法

在這裏插入圖片描述

轉換方法是先將原說話人的音頻特徵x,yx,y音頻送入En,得到SxS_{x} SyS_{y},然後進行AdaIN改變準換分佈,生成特徵表示tt 接着使用De從t中得出音頻特徵。生成的xZ1Z2\quad x_{Z_{1} \rightarrow Z_{2}}包含了目標說話人的語音風格z2z_{2},以及原說話人的音頻特徵x1x_{1}

Sx=En(x),Sy=En(y),t=AdaIN(Sx,Sy),xZ1Z2=De(t)S_{x}=\operatorname{En}(x), \quad S_{y}=\operatorname{En}(y), \quad t=\operatorname{Ad} a I N\left(S_{x}, S_{y}\right), \quad x_{Z_{1} \rightarrow Z_{2}}=D e(t)

訓練和測試方法

訓練:爲了實現多對多轉換和零次轉換,使用非平行數據集進行訓練。首先針對兩個說話人Z1,Z2Z_{1}, Z_{2},隨機選取兩段音頻特徵x,yx,y。使用上述的轉換方法將xxZ1Z_{1}轉換爲Z2Z_{2},得到XZ1>Z2X_{Z_{1}->Z_{2}},接着選取原說話人Z1Z_{1}另一個特徵x2x_{2},將得到的音頻XZ1>Z2X_{Z_{1}->Z_{2}}再轉換爲Z2Z_{2}風格,得到XZ1>Z2>Z1X_{Z_{1}->Z_{2}->Z_{1}}

其中判別器需要判斷的應該是第一次轉換得到的XZ1>Z2X_{Z_{1}->Z_{2}}

同理我們可以生成XZ2>Z1>Z2X_{Z_{2}->Z_{1}->Z_{2}}
(img-4ss2E5Jn-1589097804886)(D:%5C%E7%85%A7%E7%89%87%5Ctypora%5CAdaGAN%5C1588924377394.png)]

Loss函數

整個模型的Loss函數爲

Ltotal=Ladv(En,De)+Ladv(Dis)+λ1Lcyc+λ2LCXY+λ3LCYX+λ4LstyXY+λ5LstyYX\mathcal{L}_{\text {total}}=\mathcal{L}_{\text {adv}}(\operatorname{En}, D e)+\mathcal{L}_{\text {adv}}(\text {Dis})+\lambda_{1} \mathcal{L}_{\text {cyc}}+\lambda_{2} \mathcal{L}_{C_{X \rightarrow Y}}+\lambda_{3} \mathcal{L}_{C_{Y \rightarrow X}}+\lambda_{4} \mathcal{L}_{s t y_{X \rightarrow Y}}+\lambda_{5} \mathcal{L}_{s t y_{Y \rightarrow X}}

文章使用的超參數爲λ1=10,λ2=2,λ3=2,λ4=3,λ5=3\lambda_{1}=10, \lambda_{2}=2, \lambda_{3}=2, \lambda_{4}=3,\lambda_{5}=3

Adversarial loss

Adversarial loss包括Ladv(En,De)\mathcal{L}_{\text {adv}}(\operatorname{En}, D e)Ladv(Dis)\mathcal{L}_{\text {adv}}(\text {Dis}),這個Loss計算的是轉換轉換得到的數據與元數據的差別。

Ladv(En,De)=(Dis(yZ2Z1)1)2+(Dis(xZ1Z2)1)2\mathcal{L}_{a d v}(E n, D e)=\left(\operatorname{Dis}\left(y_{Z_{2} \rightarrow Z_{1}}\right)-1\right)^{2}+\left(\operatorname{Dis}\left(x_{Z_{1} \rightarrow Z_{2}}\right)-1\right)^{2}

Ladv(Dis)=(Dis(x1)1)2+(Dis(y1)1)2\mathcal{L}_{a d v}(D i s)=\left(\operatorname{Dis}\left(x_{1}\right)-1\right)^{2}+\left(D i s\left(y_{1}\right)-1\right)^{2}

Reconstruction Loss

只使用Adversarial loss的話,可能會丟失聲學內容。這裏使用Reconstruction Loss來儘可能保留聲學內容。

Lcyc=xZ1Z2Z1x11+yZ2Z1Z2y11\mathcal{L}_{c y c}=\left\|x_{Z_{1} \rightarrow Z_{2} \rightarrow Z_{1}}-x_{1}\right\|_{1}+\left\|y_{Z_{2} \rightarrow Z_{1} \rightarrow Z_{2}}-y_{1}\right\|_{1}

Content Preseve Loss

這個Loss是爲了在AdaIn期間保留聲學內容,同時保證我們的en和de沒有噪音

LCXY=SxZ1Z2t11\mathcal{L}_{C_{X \rightarrow Y}}=\left\|S_{x_{Z_{1} \rightarrow Z_{2}}}-t_{1}\right\|_{1}

Style transfer Loss

這個AdaGAN的核心,有助於實現多對多轉換和零次轉換。在相同的聲學內容下,儘可能地保證說話風格的潛在空間在相同的分佈。

LstyXY=t2SX11\mathcal{L}_{s t y_{X_{\rightarrow} Y}}=\left\|t_{2}-S_{X_{1}}\right\|_{1}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章