One-shot VC by Separating Speaker and Content Representations with Instance Normalization閱讀

會議:2019 interspeech
單位:國立臺灣大學
作者:Ju-chieh Chou, Hung-yi Lee

過往有許多關於音色轉換的研究主要集中在並行語料集的基礎上的,已經能夠實現將一種的音色轉換成其多種其他人音色(例如訊飛留聲,百度地圖個性化聲音導航等),而且效果比較不錯。但是這種方案有明顯的缺陷,包括:(1)訓練數據要求較嚴格(並行數據)。(2)只能轉換處於訓練集內的人的音色。基於這些問題,本文提出了一種只需要一句原始音頻加一句目標音色音頻就能夠進行音色轉換的方案,甚至於這些音色不需要出現在訓練集中。本文方案的主要思想就是通過 instance normalization等技術進行音色和內容分離,然後再重組音色和內容,達到生成目標音色音頻的目的。通過各種主觀及客觀方法評估,證明本文方案效果較好。

關於VC的研究大致可以分爲兩類,一種是基於並行數據的監督學習方法,一種是基於非並行數據的非監督方法(本文方案)。使用監督方案的優點在於語料足夠的話,可以生成相似度很高的音頻,缺點在於語料收集難度太大,計算量大(針對每個新的音色都要訓練模型)。並且由於需要進行對齊,某些差別很大的音頻會導致對齊模型很難收斂。

非監督方案由於數據收集容易,最近是一個比較熱門的研究方向。主要有幾種方法,一種是基於ASR的,方法是先將音頻用ASR轉換成音素,然後再用音素合成不同目標的音頻。這種方案嚴重依賴ASR的準確率。另外一種方案是基於VAE或者GAN(如:StarGAN)的,這種方案能夠取得較好的結果,但是缺點是隻能轉換訓練集內的人的音頻。

一段語音通常包括靜態信息和動態信息,其中靜態信息指的是音色等固有信息,通常在一句話的任意時間片段內都保持不變,動態信息指語言內容信息,隨音頻時間改變。本文假設音頻內容和音色是可分離的,爲了實現音色和內容分離,本文提出的模型如圖1。

主要包括三個部分:(1)Speaker Encoder,該模塊用於提出說話人的音色信息。(2)Content Encoder模塊,該模塊用於提取音頻的內容信息,同時利用 instance normalization方法進行音色等靜態信息的去除。(3)Decoder模塊,該模塊用於組合Speaker Encoder模塊和Cotent Encoder模塊生成的特徵,生成目標音頻特徵,在該模塊中,應用adaptive instance normalization將音色信息加入到音頻內容信息上。

VAE

loss函數包含兩部分,decoder重建損失Lrec

和 content encoder的損失Lkl

令x是語音聲學特徵片段,X是訓練集中所有聲學特徵段的集合。Es是代表Speaker Encoder,Ec表示Content Encoder,D表示Decoder。Es生成的說話者特徵用zs表示,Ec生成的內容特徵用zc表示。假設p(zc|x)是條件獨立的標準高斯分佈,那麼重構誤差可以用公式1表示,假設X服從均勻分佈,從X均勻採樣x,爲了使得p(zc|x)服從標準高斯分佈,即接近分佈N(0,I),最小化KL散度。由於假設爲標準高斯分佈,KL散度可簡化(爲計算L2正則化)。

                                                                                   VAE的損失函數

本文設置lambda_rec=10, lambda_kl=1

在content decoder中使用不帶仿射變換的Instance normalization很容易就能去除音頻中的靜態信息,防止content decoder學習域信息,這種技術促使模型從speaker encoder中提取說話人信息和從content encoder中提取content 信息,這種技術借鑑於視覺任務的風格遷移。具體計算公式如下。

https://upload-images.jianshu.io/upload_images/12976336-cac5f8fed6c09f79.png?imageMogr2/auto-orient/strip|imageView2/2/w/413

均值方差計算公式

https://upload-images.jianshu.io/upload_images/12976336-3ee9ae0b2c9ecfa8.png?imageMogr2/auto-orient/strip|imageView2/2/w/257

歸一化計算公式

其中,c表示第c個channel,W表示權重集合,w表示第w個權重,無仿射變換即如公式5,歸一化時,不加gama和beta。

    爲了使得能夠從Es中獲取說話者信息,通過在解碼器D中加adaptive instance normalization (adaIN) 層來獲取說話者信息。adaIN,decoder首先利用IN將全局信息標準化,然後the speaker encoder提供了全局信息,adaIN公式如下:

https://upload-images.jianshu.io/upload_images/12976336-bba5390cf9bc8f8c.png?imageMogr2/auto-orient/strip|imageView2/2/w/335

每一個通道的gama和beta是speaker encoder的輸出的線性轉換

本文的模型涉及的3個模塊的架構如圖2所示。

  在Encoder和Decoder上,都是用1維卷積實現的,其中Speaker Encoder和Content Encoder都用了ConvBank,用於擴大感受野,抓取長時信息。Instance normalization用於Content Encoder,用來去除全局靜態信息。PixelShufflfle1d用在Decoder中,用於模型上採樣。 adaIN用於Decoder引入Speaker Encoder的信息。Speaker representation zs是被一個殘差DNN處理得到的,然後在進入每一個adaIN之前通過一個affine層轉換

·convBank是引入自2017年的模型,Tactron首次提出的CBHG中的一個模塊,相當於模型先使用一系列的一位卷積,有一系列的filter,大小從1k,形成一個 Conv1D Bank,作用相當於使用了一系列的, unigrams(NLP中的一元模型)bigrams直到k-grams,儘可能多的拿到輸入序列的從localcontext的信息

Tactron一個端到端的語音合成模型,基於seq2seq model with attention,它包括一個encoder, attention-based decoder, a post-processing net.

https://blog.csdn.net/wr1997/article/details/105288128

·PixelShufflfle1d用在Decoder中,用於模型上採樣

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural

https://blog.csdn.net/weinidakaishijian/article/details/75577010

取自另一篇關於實時單圖片和視頻超分辨率的一種使用壓像素卷積的神經網絡

提出了一個能夠實現1080p視頻實時SR的CNN,一個新型的CNN架構,在LR(低分辨率)空間中提取特徵圖,並且引入了一個有效的子/壓像素卷積層,學習一個升序的濾波器陣列,將最終的LR特徵圖升級到HR輸出。

通過這樣做,我們有效地更換SR管道中的手工雙三次插值濾波器,併爲每個特徵圖進行了專門訓練的更復雜的升頻濾波器,同時還降低了整個SR操作的計算複雜度。

 

在網絡輸出層才進行上採樣的框架,與在輸入層利用bicubic上採樣的SRCNN相比,在訓練和測試時都降低了複雜度。訓練時,可以將輸入的訓練數據,預處理成shuffling操作前的格式,比如將21×21的單通道圖,預處理成9個通道,7×7的圖,這樣在訓練時,就不需要shuffling操作。

 

本文用的聲學特徵是Mel譜,處理前將音頻進行的VAD(相當於前後靜音剪切)處理,歸一化音量,並將音頻採樣統一爲24KHz。在生成Mel譜時,所用的FFT爲2048,窗口大小爲50ms,滑動距離爲12.5ms,最終生成的Mel譜維度爲512維。爲了將最後輸出的Mel譜轉換維音頻,需要先將Mel譜轉換爲線性譜,然後通過100次迭代Griffin-Lim算法得到音頻。(這裏作者借鑑了Tactron處理音頻的方案)

分離度測試:

作者設計了一個簡單的DNN網絡用於測試聲紋分類情況,以測試Instance Normalization層的有效性。結果如表1 IN層有效性測試結果(越高,說明越能分離出不同人),其中第一列是Content Encoder加了IN層,第二列是沒加的,第三列是Content Encoder沒加IN但是在Speaker Encoder層加了IN的,說明IN對於聲紋的提取效果明顯。

Ec without IN沒有很高作者想可能是因爲speaker encoder通過adaIN對於decoder中通道信息的控制有影響,因此模型更傾向通過speaker encoder學習說話人信息,而不是通過content encoder。爲了確認這一點,把IN加載speaker encoder上,發現精確加大,說明這樣的情況下content encoder中說話人信息更多了。由於speaker encoder中的average pooling結合IN層影響speaker encoder不再擁有完整的說話人信息,因此模型傾向於通過content encoder流動更多的說話人信息,提高分類精度。

作者還發現沒有對於encoder添加任何限制,speaker encoder也能學到有關說話人的有意義的嵌入

作者對於說話人存在於和不存在於訓練集的語句,都進行實驗,對結果二維可視化,採用的是t-SNE算法,一種對每個數據點鄰近分佈建模爲t分佈的可視化算法,從結果圖可以看出(x是女性,o是男性,音頻段是從訓練集和驗證集中隨機採樣的)

(1)不同顏色不同的說話人分的比較開;
(2)seen和unseen的數據也分的開

 

t-SNE 算法對每個數據點近鄰的分佈進行建模,其中近鄰是指相互靠近數據點的集合。在原始高維空間中,我們將高維空間建模爲高斯分佈,而在二維輸出空間中,我們可以將其建模爲 t 分佈。該過程的目標是找到將高維空間映射到二維空間的變換,並且最小化所有點在這兩個分佈之間的差距。與高斯分佈相比 t 分佈有較長的尾部,這有助於數據點在二維空間中更均勻地分佈。

作者還進行了兩項客觀測試

一是爲了驗證模型對於說話人特徵的轉換能力,使用全局方差global variance來可視化譜分佈的結果

(Global variance 是用來從方差分佈方面判斷語音轉換結果是否匹配目標說話人的)

該實驗評估了四個轉換例子的每個頻率指數的全局方差:男性對男性,男性對女性,女性對男性,女性對女性。圖中,黃色的是轉換結果,綠色的是目標語音,可以看出生成的樣本在方差分佈上確實與目標說話人匹配。

二是爲了說明模型保留了文本信息,通過對比轉換前後音頻的密度圖,

圖是一些熱譜圖的例子。模型能夠對基頻(f0)進行轉換,並且在男到女轉換和男到女轉換中保留了原始的語音內容。

最後還有一項主觀MOS測試

Mean Opinion Score 平均意見值,值常以衡量通信系統語音質量的重要指標。

這裏沒有baseline model的比對,直接做了結果與source,target相似度的比較,按比例用直方圖展示出來。

其中每一對轉換結果是由一句源音頻和一句目標音頻產生的,

對比結果有相同不相同,確定不確定組合的四個選項,圖中轉換後的音頻與源音頻不同,在與目標音頻的相似程度上有較好的效果。

 

 

 

 

 

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