論文:AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss
代碼:github地址
AutoVC在傳統的非平行數據的多對多語音轉換任務中表現較好,而且可以實現Zero-shot語音轉換(轉換爲沒有聽過的語音風格)。
整個轉換過程分爲三步(1)音頻->Mel譜圖(2)使用AutoVC模型轉換Mel譜圖(3)使用WaveNet將Mel譜圖轉換爲音頻
網絡結構
目前現有的常用的兩種VC方法:GAN和VAE,但是GAN較難訓練,而VAE並不能保證分佈匹配,而且經常出現轉換輸出過平滑的問題。本文期待結合GAN和VAE兩者的優點。AutoVC遵循自編碼框架,只針對自編碼損耗進行訓練,但它引入了精心調整的降維和時間下采樣來約束信息流。
整個網絡包括三個模塊:
內容編碼器Ec:產生語音內容
說話人編碼器Es:產生說話人風格
解碼器D:由Ec和Es的輸出產生語音
轉換時,將原語音Mel圖送入Ec,將目標說話人的任一語音Mel圖送入Es,從D中即可得到轉換後的語音Mel圖
在訓練期間,將源語音輸入到Ec。將同一個說話人另一個語音輸入到Es。使得內容編碼器和解碼器使自重構誤差最小化即可。在整個論文中,假定Es是預訓練好的,我們所指的訓練指的是訓練Ec和D。內容編碼器的輸入爲是X1,但是風格編碼器的輸入變成了來自同一說話者U1的不同的話語Z1‘,記作X1’。訓練時最小化損失函數,即自重構誤差和內容碼重構誤差的加權組合。
說話人編碼器
Es由兩個單元大小爲768的LSTM層堆疊而成。只選擇上次的輸出,並將其投影到具有完全連接層的256維。最終得到的說話人風格是一個256×1的向量。對說話者編碼器進行GE2E損耗預訓練,最大限度地提高了同一說話者不同話語之間的嵌入相似性,最大限度地降低了不同說話者之間的相似性。
實驗中Es是在VoxCeleb1和Librispeech數據集上預訓練好的。
內容編碼器
Ec的輸入X1是80維mel譜圖,在每個時間步長上串聯揚聲器嵌入Es(X1)。將連接後的特徵輸入到3個5×1卷積層中,每層依次進行批處理歸一化和ReLU激活。通道數爲512。然後輸出傳遞到兩個雙向LSTM層的堆棧。向前和向後單元格的維度都是32,因此它們的組合維度是64。
解碼器
將Es和Ec的輸出進行上採樣,以恢復到原始的時間分辨率。形式上,表示上採樣特徵分別爲形式上,表示上採樣特徵分別爲U→和U←
然後,將上採樣得到的特徵連接並送入3個5×1卷積層,每個卷積層有512個通道,每個通道依次進行批量歸一化和ReLU,然後是3個LSTM層,單元尺寸爲1024。接着將LSTM層的輸出送到維度80,1×1的卷積層中。
聲碼器
將得到的Mel圖轉換爲語音
使用預訓練的WaveNet網絡,包含4個反捲積層,實驗中mel圖的幀速率爲62.5 Hz,語音波形的採樣速率爲16 kHz。因此反捲積層將對Mel圖進行上採樣,以匹配語音波形的採樣率。然後,利用標準的40層的WaveNet對上採樣譜圖進行出來,生成語音波形。
實驗
論文中實現了兩種AutoVC,一種是由Es產生的說話人風格向量,另一種AutoVC-one-hot,使用的每個說話人的one-hot編碼作爲說話人風格向量。
MOS結果表明,AUTOVC在自然度方面優於現有的非並行轉換系統。在相似性方面,AUTOVC也優於Baseline。注意,對於Baseline,從同性轉換到跨性別轉換有顯着的下降,但是AUTOVC算法沒有顯示這種下降。最後,AUTOVC與AUTOVC- one - hot之間沒有顯着的差異,說明AUTOVC的性能增益並不是由於說話人編碼器的使用而得到的。