讓ChatGPT幫你寫劇本,Stable Diffusion產生插圖,做影片就差個配音員了?它來了!
最近來自微軟的研究人員發布了一個全新的文本到語音(text-to-speech, TTS)模型VALL-E,只需要提供三秒的音頻樣本即可模擬輸入人聲,並根據輸入文字合成出對應的音頻,而且還可以保持說話者的情感基調。
論文連結:https://www.php.cn/link/402cac3dacf2ef35050ca72743ae6ca7
#專案連結:https://valle-demo.github. io/
程式碼連結:https://github.com/microsoft/unilm
先看看效果:假設你有了一段3秒鐘的錄音。
diversity_speaker音訊:00:0000:03
然後只需要輸入文字「Because we do not need it.」,即可獲得合成的語音。
diversity_s1音訊:00:0000:01
甚至使用不同的隨機種子,還能進行個人化的語音合成。
diversity_s2音訊:00:0000:02
VALL-E還能保持說話者的環境聲,例如輸入這段語音。
env_speaker音訊:00:0000:03
再根據文字「I think it's like you know um more convenient too.」,就能輸出合成語音的同時保持環境聲音。
env_vall_e音訊:00:0000:02
而且VALL-E也能維持說話者的情緒,例如輸入一段憤怒的語音。
anger_pt音訊:00:0000:03
再根據文字「We have to reduce the number of plastic bags.」,同樣可以表達憤怒的情緒。
anger_ours音訊:00:0000:02
在專案網站上還有更多的例子。
從方法上具體來說,研究人員從現成的神經音頻編解碼器模型中提取的離散編碼來訓練語言模型VALL-E,並將TTS視為一個條件語言建模任務而非連續信號回歸。
在預訓練階段,VALL-E接受的TTS訓練資料達到了6萬小時的英語語音,比現有系統用到的資料大了幾百倍。
並且VALL-E也展現出了語境學習(in-context learning)能力,只需將unseen speaker的3秒註冊錄音作為聲音提示,即可合成高品質的個人化語音。
實驗結果表明,VALL-E在語音自然度和說話人相似度方面明顯優於最先進的zero-shot TTS系統,還可以在合成中保留說話人的情感和聲音提示的聲學環境。
過去十年,透過神經網路和端對端建模的發展,語音合成取得了巨大突破。
但目前級聯的文字轉語音(TTS)系統通常利用具有聲學模型的pipeline和使用mel譜圖作為中間表示的聲碼器(vocoder)。
雖然一些高性能的TTS系統可以從單個或多個揚聲器中合成高品質的語音,但它仍然需要來自錄音室的高品質清潔數據,從互聯網上抓取的大規模數據無法滿足資料要求,而且會導致模型的效能下降。
由於訓練資料相對較少,目前的TTS系統仍存在泛化能力差的問題。
在zero-shot的任務設定下,對於訓練資料中沒有出現過的說話人,相似度和語音自然度都會急劇下降。
為了解決zero-shot的TTS問題,現有的工作通常利用說話人適應(speaker adaption)和說話人編碼(speaker encoding)等方法,需要額外的微調,複雜的預先設計的特徵,或沉重的結構工程。
與其為這個問題設計一個複雜而特殊的網絡,鑑於在文本合成領域的成功,研究人員認為最終的解決方案應當是盡可能地用大量不同的數據來訓練模型。
在文字合成領域,來自互聯網的大規模無標記資料直接餵入模型,隨著訓練資料量的增加,模型效能也在不斷提高。
研究人員將這個想法遷移到語音合成領域,VALL-E模型是第一個基於語言模型的TTS框架,利用海量的、多樣化的、多speaker的語音資料。
為了合成個人化的語音,VALL-E模型根據3秒enrolled錄音的聲學token和音素prompt來產生相應的聲學token,這些資訊可以限制說話人和內容資訊。
最後,產生的聲學token被用來與對應的神經編解碼器合成最終波形。
來自音訊編解碼器模型的離散聲學token使得TTS可以被視為有條件的編解碼器語言建模,所以一些先進的基於提示的大模型技術(如GPTs)就可以被用在TTS任務上了。
聲學token還可以在推理過程中使用不同的取樣策略,在TTS中產生多樣化的合成結果。
研究人員利用LibriLight資料集訓練VALL-E,該語料庫由6萬小時的英語語音組成,有7000多個獨特的說話者。原始資料是純音訊的,所以只需要使用一個語音辨識模型來產生轉錄。
與先前的TTS訓練資料集,如LibriTTS相比,論文中提供的新資料集包含更多的噪音語音和不準確的轉錄,但提供了不同的說話者和語體(prosodies )。
研究人員認為,文章中提出的方法對雜訊具有穩健性,並且可以利用大數據來實現良好的通用性。
值得注意的是,現有的TTS系統總是用數十個小時的單語者資料或幾百個小時的多語者資料進行訓練,比VALL-E小幾百倍以上。
總之,VALL-E是一種全新的、用於TTS的語言模型方法,使用音訊編解碼程式碼作為中間表徵,利用大量不同的數據,賦予模型強大的語境學習能力。
推理:In-Context Learning via Prompting
語境學習(in-context learning)是基於文本的語言模型的一個令人驚訝的能力,它能夠預測未見過的輸入的標籤而不需要額外的參數更新。
對於TTS來說,如果模型能夠在不進行微調的情況下為未見過的說話者合成高品質的語音,那麼該模型就被認為具有語境中學習能力。
然而,現有的TTS系統的脈絡中學習能力並不強,因為它們要麼需要額外的微調,要麼對未見過的說話者來說會有很大的退化。
對於語言模型來說,prompting是必要的,以便在zero-shot的情況下實現語境學習。
研究人員設計的提示和推理如下:
首先將文本轉換為音素序列,並將enrolled錄音編碼為聲學矩陣,形成音素提示和聲學提示,這兩種提示都用於AR和NAR模型中。
對於AR模型,使用以提示為條件的基於採樣的解碼,因為beam search可能導致LM進入無限循環;此外,基於抽樣的方法可以大大增加輸出的多樣性。
對於NAR模型,使用貪婪解碼來選擇具有最高機率的token。
最後,使用神經編解碼器來產生以八個編碼序列為條件的波形。
聲學提示可能與要合成的語音之間不一定存在語義關係,所以可以分為兩種情況:
VALL-E:主要目標是為未見過的說話者產生給定的內容。
此模型的輸入為一個文字句子、一段enrolled語音及其對應的轉錄。將enrolled語音的轉錄音素作為音素提示添加到給定句子的音素序列中,並使用註冊語音的第一層聲學token作為聲學前綴。有了音素提示和聲學前綴,VALL-E為給定的文本生成聲學token,克隆這個說話人的聲音。
VALL-E-continual:使用整個轉錄和話語的前3秒分別作為音素和聲學提示,並要求模型產生連續的內容。
推理過程與設定VALL-E相同,只是enrolled語音和產生的語音在語意上是連續的。
研究人員在LibriSpeech和VCTK資料集上評估了VALL-E,所有測試的說話人在訓練語料庫中都沒有出現過。
VALL-E在語音自然度和說話人相似度方面明顯優於最先進的zero-shot TTS系統,在LibriSpeech上有0.12的比較平均選項得分(CMOS)和0.93的相似度平均選項得分(SMOS)。
VALL-E在VCTK上也以0.11 SMOS和0.23 CMOS的性能改進超越了基線系統,甚至達到了針對ground truth的0.04CMOS得分,表明在VCTK上,未見過的說話者的合成語音與人類錄音一樣自然。
此外,定性分析表明,VALL-E能夠用2個相同的文字和目標說話者合成不同的輸出,這可能有利於語音辨識任務的偽數據創建。
實驗中也可以發現,VALL-E能夠維持聲音環境(如殘響)和聲音提示的情緒(如憤怒等)。
安全隱患
強大的技術如果被亂用,就可能對社會造成危害,例如電話詐騙的門檻又被拉低了!
由於VALL-E具有潛在的惡作劇和欺騙的能力,微軟並沒有開放VALL-E的程式碼或介面以供測試。
有網友分享道:如果你給系統管理員打電話,錄下他們說「你好」的幾句話,然後根據這幾句話重新合成語音「 你好,我是系統管理員。我的聲音是唯一標識,可以進行安全驗證。」我之前一直認為這是不可能的,你不可能用那麼少的數據來完成這個任務。現在看來,我可能錯了......
在專案最後的道德聲明(Ethics Statement)中,研究人員表示「本文的實驗是在模型使用者為目標說話者並得到在說話者認可的假設下進行的。然而,當該模型推廣到看不見的說話人時,相關部分應該伴有語音編輯模型,包括保證說話人同意執行修改的協議和檢測被編輯語音的系統。」
作者同時在論文中聲明,由於VALL-E 可以合成能夠保持說話者身分的語音,它可能會帶來誤用該模型的潛在風險,例如欺騙聲音辨識或模仿特定的說話者。
為了降低這種風險,可以建立一個偵測模型來區分音訊剪輯是否由 VALL-E 合成。在進一步發展這些模型時,我們也將把微軟人工智慧原則付諸實現。
參考資料:
#https://www.php.cn/link/402cac3dacf2ef35050ca72743ae6ca7
#以上是只要3秒就能偷走你的聲音!微軟發布語音合成模型VALL-E:網友驚呼「電話詐騙」門檻又拉低了的詳細內容。更多資訊請關注PHP中文網其他相關文章!