論文地址:
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} 表示說話人的集合Zi表示第i個說話人
U={U1,U2,…,Um} 表示說話內容,Ui表示第i個說話內容
Xi∈pX(⋅∣Zi,Ui) 表示第i個說話人+第i個說話內容的特徵
語音風格轉換在於,我們有原說話人的音頻特徵(Z1,U1)和目標說話人對的音頻特徵(Z2,U2),我們想得到pX(⋅∣Z2,U1),因此我們需要學習到X^Z1→Z2,同時又要儘可能地保留U1。
這個過程可以表示爲:
pX^Z1→Z2(⋅∣Z1,U1,Z2,U2)=pX^(⋅∣Z2,U1)
AdaIn
AdaGAN中,生成器模型的規範化方法使用了AdaIN,在風格遷移上使用IN效果比BN好很多,AdaIN和IN的不同在於仿射參數來自於樣本,即作爲條件的樣本,也就是說AadIN沒有需要學習的參數,這和BN,IN,LN,GN都不同。風格轉換中的風格與IN中的仿射參數有很大關係,AdaIN擴展了IN的能力,使用風格圖像的均值和標準差作爲仿射參數。
AdaIN最初是用在圖片的風格遷移,在語音風格遷移中,AdaIN幫助我們得到說話風格,以及聲學內容。
AdaIN(x,Y)=σY(σXx−μX)+μY
x是訓練集X中聲學內容的特徵,Y是目標說話人的說話風格。AdaIN首先使用方差和標準差規範化x。現在假定我們有一個潛在向量,可以表示聲學內容的分佈以及相同分佈下說話人風格。爲了轉換說話風格,需要使用目標說話的分佈。由此,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,y音頻送入En,得到Sx Sy,然後進行AdaIN改變準換分佈,生成特徵表示t 接着使用De從t中得出音頻特徵。生成的xZ1→Z2包含了目標說話人的語音風格z2,以及原說話人的音頻特徵x1
Sx=En(x),Sy=En(y),t=AdaIN(Sx,Sy),xZ1→Z2=De(t)
訓練和測試方法
訓練:爲了實現多對多轉換和零次轉換,使用非平行數據集進行訓練。首先針對兩個說話人Z1,Z2,隨機選取兩段音頻特徵x,y。使用上述的轉換方法將x從Z1轉換爲Z2,得到XZ1−>Z2,接着選取原說話人Z1另一個特徵x2,將得到的音頻XZ1−>Z2再轉換爲Z2風格,得到XZ1−>Z2−>Z1。
其中判別器需要判斷的應該是第一次轉換得到的XZ1−>Z2
同理我們可以生成XZ2−>Z1−>Z2
Loss函數
整個模型的Loss函數爲
Ltotal=Ladv(En,De)+Ladv(Dis)+λ1Lcyc+λ2LCX→Y+λ3LCY→X+λ4LstyX→Y+λ5LstyY→X
文章使用的超參數爲λ1=10,λ2=2,λ3=2,λ4=3,λ5=3
Adversarial loss
Adversarial loss包括Ladv(En,De)和Ladv(Dis),這個Loss計算的是轉換轉換得到的數據與元數據的差別。
Ladv(En,De)=(Dis(yZ2→Z1)−1)2+(Dis(xZ1→Z2)−1)2
Ladv(Dis)=(Dis(x1)−1)2+(Dis(y1)−1)2
Reconstruction Loss
只使用Adversarial loss的話,可能會丟失聲學內容。這裏使用Reconstruction Loss來儘可能保留聲學內容。
Lcyc=∥xZ1→Z2→Z1−x1∥1+∥yZ2→Z1→Z2−y1∥1
Content Preseve Loss
這個Loss是爲了在AdaIn期間保留聲學內容,同時保證我們的en和de沒有噪音
LCX→Y=∥∥SxZ1→Z2−t1∥∥1
Style transfer Loss
這個AdaGAN的核心,有助於實現多對多轉換和零次轉換。在相同的聲學內容下,儘可能地保證說話風格的潛在空間在相同的分佈。
LstyX→Y=∥t2−SX1∥1