GitHub標星近10萬:只需5秒音源就能實時“克隆”你的聲音

GitHub標星近10萬:只需5秒音源就能實時“克隆”你的聲音

作者 | Google團隊

譯者 | 凱隱

出品 | 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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

簡介

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

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

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

網絡結構

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

主要由三部分構成:

聲音特徵編碼器(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信息,不使用任何重複樣本。

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

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

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

2. 序列到序列的映射合成網絡

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

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

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

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

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

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

4.零樣本推斷

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

實驗結果

主要在VCTK和LibriSpeech兩個大型數據集上訓練。

語音自然度

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

語音相似度

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

說話人認證

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

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

語音編碼器評估

語音編碼器是本文工作的核心網絡,訓練編碼器所用的數據集對網絡整體性能有較大影響:

GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音
GitHub标星近10万:只需5秒音源就能实时“克隆”你的声音

總結

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

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

論文鏈接:https://arxiv.org/pdf/1806.04558.pdf


分享到:


相關文章: