11514 語音轉換技術綜述

赵丽丽 2024-04-05 01:48 9次浏览 0 条评论 taohigo.com

  上個月瀏覽瞭若幹個專題的數十篇論文,覺得很有收獲。今天來綜述一下其中「語音轉換」這個專題的文章。文中提到許多機器學習模型,我盡可能保持簡略,僅敘述其思想,避免深入數學細節。有些參考文獻我可能瀏覽得不夠仔細,如有錯漏,歡迎指正、補充。

一、語音轉換概述

  「語音轉換」(voice conversion)是這樣一個任務:輸入一條語音,在保持說話內容不變的情況下,讓它聽起來像是另一個人說的。一個典型的用例,就是柯南的蝴蝶領結變聲器。

  語音轉換的一般流程分為三步:1. 提取特征;2. 轉換特征;3. 重新合成語音。

  提取特征常用的方法有 HNM(harmonic noise model)[1]、STRAIGHT(Speech Transformation and Representation using Adaptive Interpolation of weiGHTed spectrum)[2]等。提取出的特征中,最重要的是頻譜包絡(或由其導出的 MFCC 等),它表示發的是什麼音;除此之外還有基頻(表示音高)、語速等等。

  在轉換特征這一步,絕大多數研究都隻專註於頻譜包絡特征的轉換,這也是本文綜述的對象。對於基頻,一般的系統隻在對數域中做一個簡單的線性變換,讓轉換後語音的對數基頻的均值和方差與目標說話人匹配。語速等特征則很少有系統觸及,一般的系統都是逐幀轉換的,輸入有多少幀,輸出也有多少幀。

  重新合成語音一般使用語音編碼器(vocoder)。傳統的 vocoder 合成出的音質往往較差。2018 年的語音轉換挑戰賽[3]的報告指出,用 WaveNet[4]來合成語音,音質會有顯著提高。

二、語音轉換的評測

  在講解語音轉換的多種具體方法之前,先講一下比較輕松的評測。

  語音轉換並沒有公認的標準評測數據集。2016、2018 年各舉辦過一次語音轉換挑戰賽[5][3],它們使用的數據集有望成為標準。

  語音轉換的評測方法分為客觀評測和主觀評測。

2.1 客觀評測

  語音轉換的客觀評測標準是 MCD(Mel cepstral distortion),它表示的是轉換後語音的 MFCC 特征與標準輸出語音的 MFCC 特征的差距。測量 MCD,需要把轉換後語音和標準輸出語音的 MFCC 特征序列對齊。設某一幀的標準輸出特征為 bm{y} ,而轉換後語音的特征為 bm{hat{y}} ,則這一幀的 MCD 定義為:

text{MCD}(bm{y}, bm{hat{y}}) = frac{10sqrt{2}}{ln 10} || bm{y} – bm{hat{y}} ||_2 qquad (1)\

MCD 的單位為分貝(dB)。式 (1) 前面的系數,就是為瞭把單位轉化成分貝的,其中除以 ln 10 是為瞭把本身就是自然對數值的 MFCC 轉換成常用對數,但 sqrt{2} 的作用我沒搞懂。MCD 可以在所有測試數據上取平均值。

  MCD 的優點是可以全自動計算,但研究發現,它與人們主觀感受到的音質的相關性並不夠強。因此,語音轉換更可靠的評測方法是主觀評測。

2.2 主觀評測

  主觀評測的指標主要有兩個:轉換後語音的音質,以及與目標說話人的相似度。

  評價單個系統時,一般采用 MOS(mean opinion score)。對於音質,一般采用 5 分制,1 分為最差,5 分為最好。對於相似度,則常常讓被試分別聽取源說話人的語音、目標說話人的語音(順序不定)、轉換後的語音,並在下列四個或五個等級中做出選擇:

  ● 轉換後的語音更像源說話人,且十分肯定;  ● 轉換後的語音更像源說話人,但不確定;  ● 完全不確定轉換後的語音更像哪個說話人(可能沒有這個等級);  ● 轉換後的語音更像目標說話人,但不確定;   ● 轉換後的語音更像目標說話人,且十分肯定。

  比較兩個系統時,可以分別評價然後比較分數;也可以按如下方法進行偏好測試(preference test)。對於音質,一般是讓被試聽取兩個系統的輸出,選擇哪一個音質更好;對於相似度,一般是讓被試聽取兩個系統的輸出(順序不定)以及目標說話人的語音,選擇哪一個系統的輸出更像目標說話人。後面這種測試又常稱為 ABX test 或 XAB test,其中 A、B 指兩個系統的輸出,X 指目標說話人的語音。

  主觀評測需要大量的被試來參與,這些被試常常在 Mechanical Turk 上招募。由於可能有些被試打分不認真、不自洽,所以被試的回答需要篩選。同時,由於被試的回答帶有主觀性、隨意性,在比較不同的系統時,需要進行顯著性測試,確保比較結果有意義。

三、幾種傳統的語音轉換方法

  本節講述幾種傳統的語音轉換方法,它們主要流行於 2000 年代。它們的共同特征是:

  ● 源和目標說話人的身份固定;  ● 需要幀級對齊的訓練數據。

幀級對齊的訓練數據,一般是在平行數據(parallel data,即源和目標說話人說同樣的內容)上運行 DTW(dynamic time warping)算法得到的。如果沒有平行數據,也可以在非平行數據上進行語音識別,然後尋找對應的音素去對齊。因為有數據對齊的要求,傳統的語音轉換方法一般無法進行跨語言的語音轉換,即源和目標說話人的訓練數據不能來自不同的語言。

3.1 高斯混合模型(Gaussian mixture models, GMM)

  高斯混合模型是傳統方法中最主流的一種。它的基本思路是,用一個 GMM 去擬合輸入特征與輸出特征的聯合分佈,在轉換時根據輸入特征和 GMM 去推斷輸出特征。

  GMM 通過許多高斯分佈的加權平均,可以擬合任意分佈。語音轉換使用的 GMM 的每一個分量采用如下形式:

left[ begin{array}{c} bm{X} \ bm{Y} end{array} right] sim mathcal{N} left( left[ begin{array}{c} bm{mu_X} \ bm{mu_Y} end{array} right], left[ begin{array}{cc} bm{Sigma_{XX}} & bm{Sigma_{XY}} \ bm{Sigma_{XY}} & bm{Sigma_{YY}} end{array} right] right) qquad (2) \

其中 bm{X}, bm{Y} 分別代表輸入特征與輸出特征。為瞭控制 GMM 的參數數量,各分量的協方差矩陣 left[ begin{array}{cc} bm{Sigma_{XX}} & bm{Sigma_{XY}} \ bm{Sigma_{XY}} & bm{Sigma_{YY}} end{array} right] 常采用「分塊對角」形式,即 bm{Sigma_{XX}}, bm{Sigma_{XY}}, bm{Sigma_{YY}} 均為對角陣。這就是說,隻有 bm{X}, bm{Y} 的對應維度之間允許相關,bm{X} 內部各維、bm{Y} 內部各維,以及 bm{X}, bm{Y} 的不同維度之間都是獨立的。由於這種獨立性的要求,輸入、輸出特征最好選取 MFCC 這樣各維本就幾乎獨立的特征,而不要選取頻譜包絡本身這樣各維相關性強的特征。

  在訓練數據上擬合好輸入、輸出特征的聯合分佈 p(bm{X}, bm{Y}) 後,得到的 GMM 還有多種用法,從粗暴到精致排列如下:

  1. 對每一幀輸入特征 bm{x} ,先找到它最可能屬於的分量,然後在這個分量上求使得 p(bm{y}|bm{x}) 最大的 bm{y} 作為輸出特征。在一個分量上,使得 p(bm{y}|bm{x}) 最大的 bm{y} 就是條件期望 E(bm{Y}|bm{x}) ,這個 bm{y} 與輸入特征 bm{x} 滿足線性關系 bm{y} = bm{Ax} + bm{b} 。當 GMM 分量的協方差矩陣采用「分塊對角」形式時,這裡的 bm{A} 也是對角矩陣。代表作:[6]。

  2. 對每一幀輸入特征 bm{x} ,求出它屬於各個分量的概率,對每個分量的條件期望 E(bm{Y}|bm{x}) 進行加權平均作為轉換後的特征。這相當於在整個 GMM 上求條件期望 E(bm{Y}|bm{x}) 。代表作:[7]。

  3. 仍采用用法 2 中「線性變換的加權平均」的形式,但其中的線性變換不采用條件期望,而是重新擬合,使得訓練集上變換後的特征與輸出特征的誤差盡可能小。代表作:[8](其實這才是用 GMM 做語音轉換的開山之作)。

  上面的講解假設瞭各幀的特征都是無關的。實際中常常使用帶有差分的特征,相鄰幀的特征之間的差分關系會使得數學變復雜很多。

  用 GMM 進行語音轉換有一個缺陷:由於轉換過程中常常進行「求期望」或「加權平均」的操作,轉換後的特征往往過於平滑,聽起來顯得沉悶。一種典型的補救方法是用全局方差(global variance,GV)進行正則化(regularization),讓轉換後特征的方差符合訓練數據特征方差的分佈。這裡說的「全局」,其實指的是在一條語音的范圍內。用全局方差進行正則化的具體做法是:在訓練數據上測量每條語音各維特征的全局方差,並擬合出一個分佈 p_text{GV}(通常用高斯分佈就可以)。在轉換階段求解輸出特征 bm{y} 時,把轉換後的語音特征的全局方差在 p_text{GV} 上的概率也包含進目標函數中[6]。如果 GMM 采用用法 3,那麼在擬合各分量的線性變換時也可以使用全局方差進行正則化[9]。

  除瞭全局方差以外,也有使用調制頻譜(modulation spectrum,MS)進行正則化的[10]。調制頻譜的意思是,把語音特征看成一個時域信號,再求它的頻譜。用調制頻譜進行正則化,實質上是要求轉換後特征的波動情況與真實特征序列相似,這一要求比僅考慮全局方差更苛刻。

  GMM 方法的前身是向量量化(vector quantization,VQ),GMM 可以看成是向量量化的「連續版本」。由於向量量化方法實在太簡陋,這裡就不詳述瞭。

3.2 頻率彎折法(frequency warping)

  GMM 如果采用「分塊對角」形式的協方差矩陣,其每個分量的線性變換 bm{y} = bm{Ax} + bm{b} 實質上是在對特征的各個維度分別進行轉換。如果把特征畫成函數圖像,這個轉換是沿縱軸進行的。「頻率彎折法」則采用瞭一個完全不同的角度:它是把頻譜包絡特征沿頻率軸進行伸縮,相當於沿橫軸變換特征。

  頻率彎折法也是一種比較簡陋的方法,它的基本步驟如下[11]:

  1. 對訓練數據中的輸入、輸出語音分別提取共振峰;  2. 從配對的輸入、輸出共振峰數據中,擬合一個分段線性的彎折函數(如下圖);  3. 轉換時,用彎折函數對語音的頻譜包絡進行伸縮。

分段線性的頻率彎折函數(圖片取自 [12])

  分段線性的彎折函數如上圖所示,它可以調整頻譜包絡上各個共振峰的位置和寬度,讓輸入、輸出語音的頻譜包絡盡可能相似。頻率彎折法的局限性非常明顯:它對頻譜包絡的改動太少瞭,甚至連共振峰的高度都不能修改。不過正因為改動比較少,重新合成出的音質往往較好。

  對語音中的所有幀都使用同一個彎折函數,顯得不太合理。所以也可以先對語音的各幀進行無監督聚類(如 k-means)或有監督分類(如音素識別),然後對每個類分別擬合一個彎折函數。

  對語音幀進行硬分類,感覺很像向量量化;當相鄰兩幀語音分屬不同類別時,彎折函數會發生突變,導致轉換後的語音不自然。於是也可以引入 GMM 來進行軟分類[12]:對於一幀輸入語音,求出它屬於 GMM 各個分量的概率,把各個分量的彎折函數按概率加權平均後,再用來伸縮頻譜包絡。這樣一來,彎折函數在幀間就是漸變而不是突變的瞭。

3.3 基於樣例的方法(exemplar-based method)[13]

  基於樣例的方法的思路是:把語音的語譜圖分解成許多基本單元(稱為「樣例」)的疊加。如下圖所示,矩陣 bm{Y} 表示語音的語譜圖(僅含幅度,不含相位);矩陣 bm{F} 稱為「詞典」,它的每一列是一個樣例;矩陣 bm{G} 稱為「增益矩陣」,其元素代表每一幀每一個樣例的強度。矩陣 bm{G} 可以看成是對語音內容的一種抽象表達。矩陣 bm{F}bm{G} 都必須是非負的,根據 bm{Y}bm{F}bm{G} 中一者或兩者的過程叫做非負矩陣分解(non-negative matrix factorization,NMF),它可以使得 bm{F}bm{G} 的乘積與 bm{Y} 在某種意義下最接近。一般還要求 bm{G} 是稀疏的,否則它可以把各個樣例疊加得面目全非,就與分解的初衷相違背瞭。

非負矩陣分解示意圖(圖片取自:https://www.slideshare.net/DaichiKitamura/robust-music-signal-separation-based-on-supervised-nonnegative-matrix-factorization-with-prevention-of-basis-sharing)

  基於樣例的語音轉換,步驟如下:

  1. 在訓練時,把經過對齊的源、目標說話人的語譜圖進行非負矩陣分解。用 bm{X}_ibm{Y}_i 分別表示源、目標說話人第 i 條語音的語譜圖,則分解的形式如下:

bm{X}_{i} approx bm{F}_1 cdot bm{G}_i qquad (3) \ bm{Y}_{i} approx bm{F}_2 cdot bm{G}_i qquad (4) \

註意右邊各個矩陣的下標:詞典矩陣 bm{F} 是隻與說話人有關的,同一個說話人的所有語音都使用同一個詞典;而增益矩陣 bm{G} 是跟說話人無關的,源、目標說話人的對應語音是用相同的系數把不同的樣例進行組合的結果。

  2. 在轉換時,先把輸入語音的語譜圖 bm{X} 用源說話人的詞典 bm{F}_1 分解,得到增益矩陣 bm{G} ,再根據這個增益矩陣 bm{G} 和目標說話人的詞典 bm{F}_2 合成轉換後語音的語譜圖 bm{Y}

bm{X} approx bm{F}_1 cdot bm{G} qquad (5) \ bm{Y} = bm{F}_2 cdot bm{G} qquad (6) \

  上面的講解中,默認瞭樣例都是單幀的,這使得轉換後的語音容易有不自然的突變。事實上樣例也可以是多幀的。此時,詞典矩陣 bm{F} 變成瞭三維的,它除瞭樣例序號、頻率兩個軸以外,還多瞭一個時間軸。增益矩陣 bm{G} 仍然隻有樣例序號、時間兩個軸,它與 bm{F} 進行運算時,在樣例序號這個軸上是通常的矩陣乘法,而在時間軸上是卷積,於是結果矩陣 bm{Y} 不再有樣例序號這個軸,而仍有時間、頻率兩個軸。在這種運算下,根據 bm{Y} 依然可以估計 bm{F}bm{G} 中的一者或兩者,這個過程叫做非負矩陣解卷積(non-negative matrix deconvolution,NMD)。

  除瞭高斯混合模型、頻率彎折法、基於樣例的方法之外,在早期也有一些利用神經網絡進行語音轉換的嘗試,例如[7]。神經網絡的好處是,它可以對語音特征進行非常靈活的非線性變換,另外 CNN、RNN 等網絡結構可以更好地處理幀與幀之間的關系。不過,這些早期的嘗試並沒有打破「說話人身份固定」、「訓練數據需要幀級對齊」這兩個限制。

四、幾種現代的語音轉換方法

  本節介紹 2010 年代新出現的幾種語音轉換方法。除瞭在音質、相似性兩方面超越傳統方法以外,這些方法更重要的成就是打破瞭「訓練數據需要幀級對齊」這個限制,其中有一些也打破瞭「說話人身份固定」這個限制。

4.1 生成對抗式網絡(generative adversarial networks, GAN)

  生成對抗式網絡(GAN)[14]是一種新興的生成式模型。它的特點是,模型中除瞭有一個生成器 G 以外,還有一個判別器 D 。判別器的任務是判斷一個數據是由生成器生成的,還是來自真實數據;而生成器的訓練目標,則是要「騙」過判別器,讓它無法分辨生成的數據與真實數據。在訓練過程中,生成器 G 和判別器 D 就像假幣販子和警察一樣,「道高一尺、魔高一丈」地互相促進對方的進化,最終結果是生成器 G 能夠使得生成的數據分佈與真實數據分佈一致,而判別器 D 則「功成身退」。GAN 應用於圖像、語音等數據時,生成的結果往往能以假亂真,這是它最大的優點;當然它也有缺點,比如訓練比較困難。

  文獻[15]利用 GAN 的一種特殊架構 CycleGAN[16]進行瞭語音轉換。CycleGAN 中有兩個生成器 GF ,前者負責把源說話人的語音 x 轉換成目標說話人的語音 y ,後者則反過來,負責把 y 轉換成 x 。這裡的 xy 都是指整條語音而不是單幀;語音的具體表示形式(語譜圖甚至波形)可以自由選取,因為生成器 G 和判別器 D 都是神經網絡,它們能夠處理任意形式的語音。

CycleGAN 示意圖(圖片取自 [16])

  CycleGAN 訓練時的損失函數由以下三部分組成:

  1. 對抗損失(adversarial loss):CycleGAN 中除瞭兩個生成器以外,還有兩個判別器,用於分辨兩個生成器的輸出與兩個說話人的真實語音。註意,這裡不需要生成器的輸出與真實語音對齊,連平行數據都不需要!

  2. 循環一致性損失(cycle-consistency loss):GAN 有一個臭名昭著的缺陷,就是在訓練過程中容易發生 mode collapsing,通俗點兒說就是不管輸入是什麼,都給出一樣的輸出。循環一致性損失的設置,就是為瞭防止 mode collapsing,讓兩個生成器能夠保持語音的內容。其具體做法是,要求語音在 CycleGAN 中轉一圈後,與初始時基本一致,即 F(G(x)) 盡可能接近 xG(F(y)) 盡可能接近 y 。如果發生瞭 mode collapsing,在一個方向上損失瞭的信息是不可能在另一個方向找回來的。

  3. 全等映射損失(identity-mapping loss):即使使用瞭循環一致性損失,CycleGAN 裡的生成器還是有可能對語音的內容做手腳。打個極端的比方,兩個生成器除瞭轉換說話人的身份之外,還把語音的內容變成瞭原來的反義句,這樣的 CycleGAN 同樣可以讓循環一致性損失很小,因為語音內容取瞭兩次反之後又變回瞭原樣。全等映射損失,就是讓 G(y) 盡可能接近 yF(x) 盡可能接近 x ,即當 G 的輸入已經是目標說話人的語音、F 的輸入已經是源說話人的語音時,兩個生成器應當充當一個全等映射,不要對語音的內容做任何的改動。

  用 CycleGAN 進行語音轉換,打破瞭「需要平行訓練數據」的限制,但源和目標說話人的身份仍然需要事先指定。

4.2 i-vector + PLDA(probabilistic linear discriminant analysis)

  到此為止介紹的所有語音轉換方法,都需要事先指定源和目標說話人的身份。而文獻[17]借鑒瞭說話人識別中的 i-vector 與 PLDA,打破瞭這一局限,隻需要訓練一個系統,就能處理許多源和目標說話人。

  i-vector 與 PLDA 的數學推導是出瞭名的復雜,我曾在 2011 年的夏天推導過一個多星期。在這裡,我盡可能避開數學細節,用最簡潔的語言引入相關概念和方法。

  1. i-vector 與 PLDA 方法利用的語音特征是 MFCC 特征。首先,使用很多背景語音的 MFCC 特征擬合出一個高斯混合模型,稱為通用背景模型(universal background model,UBM)。

  2. 對每一條語音,微調 UBM 中每個分量的均值,使得這條語音的各幀 MFCC 特征的總概率最大。上一句話描述的是最大似然估計(maximum likelihood estimation,MLE),但實際使用的是最大後驗估計(maximum a posteriori,MAP)。把這些分量的均值串起來,稱為超向量(supervector),這可以作為一條語音的固定長度的表達方式。超向量忽略瞭語音中各幀的順序,不過我們關心的是說話人的身份,所以丟失這點信息無關緊要。

  3. 超向量的維數一般特別高(常常有上萬維),不方便使用。但可以考慮把它壓縮至數百維,壓縮後的向量稱為 i-vector。這裡的壓縮看似可以使用主成分分析(principal component analysis,PCA),但實際上使用的方法比 PCA 復雜得多。i-vector 中的 i 來自 identity(身份)的縮寫,但其實它包含的不隻是說話人的身份信息,也有一部分語音的內容信息(但丟失瞭各幀的順序)。

  4. PLDA 則繼續為 i-vector 建模,試圖分離其中的身份與內容信息。具體地說,PLDA 認為一條語音的 i-vector bm{phi} 可以如下分解: bm{phi} = bm{b} + bm{Sy} + bm{varepsilon} ,其中 bm{b} 是一個固定的向量,bm{y} 代表說話人的身份,bm{S} 是一個線性變換,而 bm{varepsilon} 是代表語音內容的噪聲項,它服從特定的分佈。使用許多說話人的許多語音(每個說話人都要有多條語音),就能訓練出模型中的所有參數,以及每個說話人的身份向量 bm{y}

  以上說的是訓練過程,這個過程也不需要平行數據。轉換過程則是這樣進行的:

  1. 提取輸入語音的 i-vector bm{phi}_1

  2. 設源、目標說話人的身份向量分別為 bm{y}_1、bm{y}_2 ,則按此式計算轉換後語音的 i-vector: bm{phi}_2 = bm{phi_1} + bm{S}(bm{y}_2 – bm{y}_1) 。此式的效果就是,保持語音的內容信息不變,更換瞭說話人的身份信息。

  3. 由 i-vector 的改變量,逆推出超向量的改變量,這就是說話人身份轉換導致的 GMM 中各個分量的偏移量。

  4. 求出每幀語音特征屬於 GMM 各個分量的概率,並以這些概率為權重對各個分量的偏移量進行加權平均,這就是每幀語音應當改變的量。

  5. 用修改後的 MFCC 特征重新合成語音。

  不難看出,i-vector + PLDA 方法不再要求源、目標說話人固定,而隻需要知道兩個說話人的身份向量 bm{y}_1bm{y}_2 。如果兩個說話人都在訓練數據中,那麼兩個身份向量是在訓練階段就已經求出瞭的。即使兩個說話人不在訓練數據中,隻要有他們的多條語音,也能夠用 PLDA 估計出他們的身份向量,從而實現語音轉換。

4.3 自編碼器(autoencoders)

  除瞭 i-vector + PLDA 之外,自編碼器也能打破「說話人身份固定」的限制。並且,自編碼器是用神經網絡實現的,數學上比 i-vector + PLDA 友好許多。

  自編碼器是這樣一種模型:模型中含有一個編碼器和一個解碼器,編碼器負責把數據的表層特征轉換成隱表示,解碼器負責從隱表示中恢復出表層特征。在語音轉換任務中,數據的表層特征可以是波形、語譜圖、MFCC 序列等,隱表示則蘊含瞭語音的內容和說話人的身份信息。如果能通過某種手段,把隱表示中「內容」和「身份」兩部分信息分開 —— 這稱為解糾纏(disentanglement),那就可以自由地替換隱表示中的身份信息,實現語音轉換啦!另外,自編碼器的訓練目標是讓經過編碼和解碼後的語音與原始語音盡可能相似,所以它天然就不需要平行的訓練數據。

  文獻[18]就提出瞭一種實現「解糾纏」的方法。如下圖所示,它把身份信息作為瞭解碼器的條件,這樣編碼器就不需要編碼輸入語音中的身份信息,而可以專註於編碼內容信息瞭。身份信息可以采用 one-hot 編碼,這樣目標說話人就可以從參與訓練的多個說話人中隨意選取。如果采用上一小節講的身份向量 bm{y} 來表示說話人的身份,那麼甚至可以合成訓練時沒有見過的說話人的聲音;並且,與 i-vector + PLDA 方法相比,自編碼器隻需要知道目標說話人的身份向量,而不需要知道源說話人的身份向量。文獻[18]采用的自編碼器是變分自編碼器(variational autoencoder,VAE),但其中「變分」的部分並不本質,所以就不展開講瞭。

把身份信息作為自編碼器中解碼器的條件。斜紋框代表內容信息,灰色框代表身份信息。此圖取自文獻 [20],因為原始文獻 [18] 中的圖不如這張好理解。

  上一篇文獻雖然提出瞭一種可能實現「解糾纏」的網絡結構,但它並沒有通過目標函數去促使編碼器舍棄身份信息,實現解糾纏。另外,它轉換出的語音也存在過度平滑的問題。文獻[19]就借鑒瞭 GAN 的思想,用「對抗式訓練」解決瞭這兩個問題。具體地說,它是把編碼器和解碼器看成兩個生成器,並針對它們增設瞭如下兩個判別器:

  ● 第一個判別器根據隱表示來做說話人識別,編碼器的任務就是「騙」過它,讓它無法從隱表示中識別出說話人的身份;

  ● 第二個判別器用來分辨解碼器的輸出與真實語音,解碼器的任務就是「騙」過它,即克服過度平滑的問題,讓輸出與真實語音無法分辨。

  如果說文獻[19]是「有為而治」地實現瞭隱表示解糾纏,並克服瞭輸出過度平滑的問題,那麼文獻[20]則是「無為而治」:它用數學證明瞭,隻要自編碼器中隱表示的維數選得合適,使它剛好能夠容納內容信息而容不下身份信息,那麼就能自動做到隱表示解糾纏、輸出語音自然。當然,在實踐中,隱表示的最佳維數並不需要由理論計算得出,而是可以通過實驗來找到。

  在上述三種現代方法之外,RBM(restricted Boltzmann machines)也能利用非平行訓練數據進行非特定說話人的語音轉換[21]。不過,由於 RBM 在 2010 年代後半已經不太流行瞭,這篇文獻我就沒有細看瞭。

參考

  1. ^Y. Stylianou, et al., "High-quality speech modification based on a harmonic + noise model", Eurospeech, 1995.
  2. ^H. Kawahara, et al., "Restructuring speech representations using a pitch-adaptive time-frequency smoothing and an instantaneous-frequency-based F0 extraction: Possible role of a repetitive structure in sounds", Speech Communication, 1999.
  3. ^abJ. Lorenzo-Trueba, et al., "The Voice Conversion Challenge 2018: Promoting development of parallel and nonparallel methods", arxiv:1804.04262.
  4. ^A. van den Oord, et al., "WaveNet: A generative model for raw audio", arxiv:1609.03499.
  5. ^T. Toda, et al., "The Voice Conversion Challenge 2016", Interspeech, 2016.
  6. ^abT. Toda, et al., "Spectral conversion based on maximum likelihood estimation considering global variance of converted parameter", ICASSP, 2005.
  7. ^abS. Desai, et al., "Voice conversion using artificial neural networks", ICASSP, 2009.
  8. ^Y. Stylianou, et al., "Continuous probabilistic transform for voice conversion", IEEE Trans. on Speech and Audio Processing, 1998.
  9. ^H.-T. Hwang, et al., "Incorporating global variance in the training phase of GMM-based voice conversion", APSIPA, 2013.
  10. ^S. Takamichi, et al., "Modulation spectrum-constrained trajectory training algorithm for GMM-based voice conversion", ICASSP, 2015.
  11. ^Z.-W. Shuang, et al., "Frequency warping based on mapping formant parameters", Interspeech, 2006.
  12. ^D. Erro and A. Moreno, "Weighted frequency warping for voice conversion", Interspeech, 2007.
  13. ^Z. Wu, et al., "Exemplar-based voice conversion using non-negative spectrogram deconvolution", ISCA Workshop on Speech Synthesis, 2013.
  14. ^I. Goodfellow, "Generative adversarial nets", NIPS, 2014.
  15. ^T. Kaneko, "Parallel-data-free voice conversion using cycle-consistent adversarial networks", arxiv:1711.11293.
  16. ^J.-Y. Zhu, et al., "Unpaired image-to-image translation using cycle-consistent adversarial networks", arxiv:1703.10593.
  17. ^T. Kinnunen, et al., "Non-parallel voice conversion using i-vector PLDA: Towards unifying speaker verification and transformation", ICASSP, 2017.
  18. ^abC.-C. Hsu, et al., "Voice conversion from non-parallel corpora using variational auto-encoder", APSIPA, 2016.
  19. ^abJ.-C. Chou, "Multi-target voice conversion without parallel data by adversarially learning disentangled audio representations", arxiv:1804.02812.
  20. ^K. Qian, et al., "AutoVC: Zero-shot voice style transfer with only autoencoder loss", arxiv:1905.05879.
  21. ^T. Nakashika, et al., "Non-parallel training in voice conversion using an adaptive restricted Boltzmann machine", IEEE Trans. on Audio, Speech, and Language Processing, 2016.