GitHub標星近1萬:只需5秒音源,這個網路就能實時“克隆”你的聲音

AI科技大本營發表於2020-01-16

640?wx_fmt=png


作者 | Google團隊

譯者 | 凱隱

編輯 | Jane

出品 | AI科技大本營(ID:rgznai100)


本文中,Google 團隊提出了一種文字語音合成(text to speech)神經系統,能通過少量樣本學習到多個不同說話者(speaker)的語音特徵,併合成他們的講話音訊。此外,對於訓練時網路沒有接觸過的說話者,也能在不重新訓練的情況下,僅通過未知說話者數秒的音訊來合成其講話音訊,即網路具有零樣本學習能力。

目前,已經有人該論文實現並在 GitHub 上釋出了開源專案,目前該專案標星超 9.5k,fork 數是 1.5k。

GitHub連結:

https://github.com/CorentinJ/Real-Time-Voice-Cloning?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more

 

簡介

 

傳統的自然語音合成系統在訓練時需要大量的高質量樣本,通常對每個說話者,都需要成百上千分鐘的訓練資料,這使得模型通常不具有普適性,不能大規模應用到複雜環境(有許多不同的說話者)。而這些網路都是將語音建模和語音合成兩個過程混合在一起。本文工作首先將這兩個過程分開,通過第一個語音特徵編碼網路(encoder)建模說話者的語音特徵,接著通過第二個高質量的TTS網路完成特徵到語音的轉換。

兩個網路可以分別在不同的資料集上訓練,因此對訓練資料的需求量大大降低。對於特徵編碼網路,其關鍵在於聲紋資訊的建模,即判斷兩段語音為同一人所說,因此可以從語音識別(speaker verification)任務進行遷移學習,並且該網路可以在帶有噪聲和混響的多目標資料集上訓練。

 

為了保證網路對未知(訓練集中沒有的)說話者仍然具有聲音特徵提取能力,編碼網路在18K說話者的資料集上訓練,而語音合成網路只需要在1.2K說話者的資料集上訓練。

 

網路結構

     640?wx_fmt=jpeg       

 

主要由三部分構成:

 

聲音特徵編碼器(speaker encoder):

 

1. 語音編碼器,提取說話者的聲音特徵資訊。將說話者的語音嵌入編碼為固定維度的向量,該向量表示了說話者的聲音潛在特徵。

 

2. 序列到序列的對映合成網路

基於Tacotron 2的對映網路,通過文字和1得到的向量來生成對數梅爾頻譜圖(log mel spectrogram)。

(梅爾光譜圖將譜圖的頻率標度Hz取對數,轉換為梅爾標度,使得人耳對聲音的敏感度與梅爾標度承線性正相關關係)

 

3.基於WaveNet的自迴歸語音合成網路

將梅爾頻譜圖(譜域)轉化為時間序列聲音波形圖(時域),完成語音的合成。

 

需要注意的是,這三部分網路都是獨立訓練的,聲音編碼器網路主要對序列對映網路起到條件監督作用,保證生成的語音具有說話者的獨特聲音特徵。

 

1. 聲音特徵編碼器

 

編碼器主要將參考語音訊號嵌入編碼到固定維度的向量空間,並以此為監督,使對映網路能生成具有相同特徵的原始聲音訊號(梅爾光譜圖)。編碼器的關鍵作用在於相似性度量,對於同一說話者的不同語音,其在嵌入向量空間中的向量距離(餘弦夾角)應該儘可能小,而對不同說話者應該儘可能大。此外,編碼器還應具有抗噪能力和魯棒性,能夠不受具體語音內容和背景噪聲的影響,提取出說話者聲音的潛在特徵資訊。這些要求和語音識別模型(speaker-discriminative)的要求不謀而合,因此可以進行遷移學習。

 

編碼器主要由三層LSTM構成,輸入是40通道數的對數梅爾頻譜圖,最後一層最後一幀cell對應的輸出經過L2正則化處理後,即得到整個序列的嵌入向量表示。實際推理時,任意長度的輸入語音訊號都會被800ms的視窗分割為多段,每段得到一個輸出,最後將所有輸出平均疊加,得到最終的嵌入向量。這種方法和短時傅立葉變換(STFT)非常相似。

 

訓練集包含按1.6s劃分的音訊樣本,以及他們所對應的說話者label資訊,不使用任何重複樣本。

生成的嵌入空間向量視覺化如下圖:

       640?wx_fmt=jpeg       

可以看到不同的說話者在嵌入空間中對應不同的聚類範圍,可以輕易區分,並且不同性別的說話者分別位於兩側。

 

然而合成語音和真實語音也比較容易區分開,合成語音離聚類中心的距離更遠。這說明合成語音的真實度還不夠。

 

2. 序列到序列的對映合成網路

 

在Tacotron 2的基礎上,額外新增了對多個不同說話者的語音進行合成的功能。Tacotron 2包含注意力層,作者發現直接將嵌入向量作為注意力層的輸入,能使網路對不同的說話者語音收斂。

該網路獨立於編碼器網路的訓練,以音訊訊號和對應的文字作為輸入,音訊訊號首先經過預訓練的編碼器提取特徵,然後再作為attention層的輸入。網路輸出特徵由視窗長度為50ms,步長為12.5ms序列構成,經過梅爾標度濾波器和對數動態範圍壓縮後,得到梅爾頻譜圖。為了降低噪聲資料的影響,本文還對該部分的損失函式額外新增了L1正則化。

 

輸入梅爾頻譜圖與合成頻譜圖的對比示例如下:

       640?wx_fmt=jpeg       

右圖紅線表示文字和頻譜的對應關係。可以看到,用於參考監督的語音訊號不需要與目標語音訊號在文字上一致,這也是本工作的一大特色。

 

3. 基於WaveNet的自迴歸語音合成網路

 

在得到合成頻譜圖後,還需要進一步轉化為時域上的聲音波形圖,這部分主要通過自迴歸WaveNet完成。由於上一個合成器生成的序列已經包含了聲音合成所需的全部資訊,因此這部分不需要編碼器進行監督。

 

4.零樣本推斷

除了以上三部分,網路還具備零樣本推斷能力。即對於不在訓練集內的說話者(不可見),只需要該說話者幾秒的音訊段,編碼器就能提取出說話者的關鍵語音特徵,並用來輔助對映網路合成序列。並且不需要這段語音與待合成的語音具有相同文字。

 

實驗結果

 

主要在VCTK和LibriSpeech兩個大型資料集上訓練。

 

語音自然度

 

首先評估了模型合成語音的自然度(即真實度),構建了一個具有100個句子的驗證集(不在訓練集中),然後對每個資料集,都選擇一定數量的可見和不可見說話者,對每個說話者隨機選擇一個句子作為編碼器的輸入,然後對該說話者的所有句子進行合成,再與原來的真值進行對比:

 

       640?wx_fmt=jpeg       

語音相似度

 

為了驗證合成語音與原始說話者語音是否相似,對每個說話者的每段語音,都隨機選擇另一段語音作為真值,然後評估他們的相似度:

   640?wx_fmt=jpeg640?wx_fmt=jpeg 

說話人認證

 

該指標與前面兩個指標相反,旨在驗證語音識別系統能否有效區分合成語音和真實語音:

       640?wx_fmt=jpeg       

語音編碼器評估

 

語音編碼器是本文工作的核心網路,訓練編碼器所用的資料集對網路整體效能有較大影響:

       640?wx_fmt=jpeg        

總結

 

本文提出的語音合成網路,能對訓練不可見的說話者進行聲音合成,並且僅僅依賴於說話者的一小段語音,這使得該網路能夠大規模應用於實際環境,也使得語音造假的成本大大降低,類似於之前的deepfake網路。

 

作者指出該網路生成的合成語音和真實語音仍然是可以區分的,這是因為訓練集的數量不足(避免太逼真帶來的安全問題)。如果要生成非常逼真的聲音,對每個目標說話,仍然需要數十分鐘的語音。

論文連結

https://arxiv.org/pdf/1806.04558.pdf

(*本文為AI科技大本營編譯文章,轉載請微信聯絡 1092722531


精彩推薦



2019 中國大資料技術大會(BDTC)再度來襲!豪華主席陣容及百位技術專家齊聚,15 場精選專題技術和行業論壇,超強幹貨+技術剖析+行業實踐立體解讀,深入解析熱門技術在行業中的實踐落地。6.6 折票限時特惠(立減1400元),學生票僅 599 元!

640?wx_fmt=png

推薦閱讀

相關文章