只需3秒就能偷走你的聲音!微軟發布語音合成模型VALL-E:網友驚呼「電話詐騙」門檻又拉低了
讓ChatGPT幫你寫劇本,Stable Diffusion生成插圖,做視頻就差個配音演員了?它來了!
最近來自微軟的研究人員發布了一個全新的文本到語音(text-to-speech, TTS)模型VALL-E,只需要提供三秒的音頻樣本即可模擬輸入人聲,并根據輸入文本合成出對應的音頻,而且還可以保持說話者的情感基調。
論文鏈接:https://arxiv.org/abs/2301.02111
項目鏈接: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系統,還可以在合成中保留說話人的情感和聲音提示的聲學環境。
Zero-shot語音合成
過去十年,通過神經網絡和端到端建模的發展,語音合成取得了巨大突破。
但目前級聯的文本到語音(TTS)系統通常利用具有聲學模型的pipeline和使用mel譜圖作為中間表示的聲碼器(vocoder)。
雖然一些高性能的TTS系統可以從單個或多個揚聲器中合成高質量的語音,但它仍然需要來自錄音室的高質量清潔數據,從互聯網上抓取的大規模數據無法滿足數據要求,而且會導致模型的性能下降。
由于訓練數據相對較少,目前的TTS系統仍然存在泛化能力差的問題。
在zero-shot的任務設置下,對于訓練數據中沒有出現過的的說話人,相似度和語音自然度都會急劇下降。
為了解決zero-shot的TTS問題,現有的工作通常利用說話人適應(speaker adaption)和說話人編碼(speaker encoding)等方法,需要額外的微調,復雜的預先設計的特征,或沉重的結構工程。
與其為這個問題設計一個復雜而特殊的網絡,鑒于在文本合成領域的成功,研究人員認為最終的解決方案應當是盡可能地用大量不同的數據來訓練模型。
VALL-E模型
在文本合成領域,來自互聯網的大規模無標記數據直接喂入模型,隨著訓練數據量的增加,模型性能也在不斷提高。
研究人員將這一思路遷移到語音合成領域,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的代碼或接口以供測試。
有網友分享道:如果你給系統管理員打電話,錄下他們說「你好」的幾句話,然后根據這幾句話重新合成語音「 你好,我是系統管理員。我的聲音是唯一標識,可以進行安全驗證?!刮抑耙恢闭J為這是不可能的,你不可能用那么少的數據來完成這個任務。現在看來,我可能錯了......
在項目最后的道德聲明(Ethics Statement)中,研究人員表示「本文的實驗是在模型使用者為目標說話人并得到說話人認可的假設下進行的。然而,當該模型推廣到看不見的說話人時,相關部分應該伴有語音編輯模型,包括保證說話人同意執行修改的協議和檢測被編輯語音的系統?!?/p>
作者同時在論文中進行聲明,由于 VALL-E 可以合成能夠保持說話者身份的語音,它可能會帶來誤用該模型的潛在風險,例如欺騙聲音識別或者模仿特定的說話者。
為了降低這種風險,可以建立一個檢測模型來區分音頻剪輯是否由 VALL-E 合成。在進一步開發這些模型時,我們還將把微軟人工智能原則付諸實踐。
參考資料: