編者按:本文由微信公眾號將門創(chuàng)業(yè)(thejiangmen)原創(chuàng)編譯,如需轉(zhuǎn)載,請?jiān)谖⑿殴娞栔谢貜?fù)“轉(zhuǎn)載”,獲得許可。
幾個(gè)小時(shí)前,DeepMind在Twitter上發(fā)布的一條推文稱:“很高興和大家分享我們在語音和音樂時(shí)代的最新研究突破!來聽我們的#WaveNets是如果向大家來證明自己的。”隨后,DeepMind的CEO Demis Hassabis轉(zhuǎn)發(fā)了該推文,并補(bǔ)充道:“一些驚人的成果——WaveNets是目前世界上文本到語音環(huán)節(jié)最好的生成模型!”
將門快速編譯了DeepMind的發(fā)布在官網(wǎng)的有關(guān)于WaveNets的博客文章,分享給大家。 Enjoy~
這篇文章的主角是WaveNet,一個(gè)用于處理原始音頻波形圖的深度生成模型。我們將向大家展示W(wǎng)aveNets是如何生成語音的,它可以模仿任何人類的聲音,聽上去比在存的文本到語音(TTS)系統(tǒng)都要自然。這個(gè)模型將機(jī)器和人類的表現(xiàn)之間的現(xiàn)有差距減小了50%多。
我們還將展示W(wǎng)aveNets是如何合成如音樂這樣的音頻信號的。大家可以在下面聽到若干由這個(gè)系統(tǒng)自動生成的驚人的鋼琴演奏小樣。
對話機(jī)器
實(shí)現(xiàn)人類和機(jī)器進(jìn)行對話是人機(jī)交互領(lǐng)域長期以來的一個(gè)夢想。隨著過去的幾年中深度神經(jīng)網(wǎng)絡(luò)的應(yīng)用(如谷歌語音搜索),計(jì)算機(jī)理解自然對話的能力已經(jīng)得到了很大的提升。然而,讓計(jì)算機(jī)生成語音,這個(gè)過程通常被描述為語音合成或者TTS(文本到語音),卻基本上還是基于拼接TTS的方法。
這種通過先將一個(gè)人類錄制的語音分解成大量的一小段一小段的語音片段,積累成一個(gè)非常大的數(shù)據(jù)庫,然后再這些小片段去合成人類的語音。這樣做的問題就使得修改聲音變得非常困難,例如在不錄制一個(gè)新的數(shù)據(jù)庫的情況下,能夠?qū)⒑铣傻恼Z音變成另一個(gè)人的聲音,或者改變他們在演講時(shí)的側(cè)重或者情感。
這就自然的引出了對于參量式TTS的巨大需求。在參量式TTS中,所有用于生成數(shù)據(jù)的信息被存儲在模型的參量中。因?yàn)椋Z音的內(nèi)容和特色就可以通過模型的輸入來進(jìn)行控制。不過,目前來講,參量式TTS聽上去沒有拼接式來得自然,至于對于英語這樣的音節(jié)語音是的。現(xiàn)存的參量式模型一般上通過一個(gè)叫做vocoders的信號處理算法來輸出它的結(jié)果,以生成語音信號。
WaveNet通過直接將音頻信號的原始波形進(jìn)行建模,并且一次產(chǎn)生一個(gè)樣本,從來改變了現(xiàn)在的局面。此外,使用原始波形,意味著WaveNet可以對包括音樂在內(nèi)的任何音頻進(jìn)行建模,這樣子生成的語音聽起來會更自然。
WaveNets
研究人員一般都會避免去對原始音頻進(jìn)行建模,因?yàn)樗墓?jié)拍太快了。一般來說,一秒存在著1萬6千個(gè)samples,或者更多,并且在很多時(shí)間尺度上有著重要的結(jié)構(gòu)。構(gòu)建一個(gè)完全自回歸的模型,并且能夠預(yù)測每一個(gè)samples是如何被前面所有的samples所影響的(從統(tǒng)計(jì)學(xué)上來說,每個(gè)預(yù)測都和所有之前的觀測存在關(guān)聯(lián)),這是一個(gè)相當(dāng)艱巨的挑戰(zhàn)。
然而,我們在今年早先時(shí)候發(fā)布的PixelRNN和PixelCNN模型卻向我們展示了,它可以生成完全自然的圖片。不僅是一次一個(gè)像素,而且是一次一個(gè)color-channel,一張圖片需要進(jìn)行成千上萬次的預(yù)測。這激發(fā)了我們將二維的PixelNet調(diào)整為一維的WaveNet。
上面的動畫演示像我們展示了WaveNet是如何組織的。這是一個(gè)完全的卷積神經(jīng)網(wǎng)絡(luò)。在這其中,卷積層擁有不同的擴(kuò)張因素,能夠讓它的接受域隨著成千上萬的timesteps的深度和覆蓋呈現(xiàn)指數(shù)型的增長。
在訓(xùn)練時(shí),輸入序列是來自人類演講者的真實(shí)的波形。在訓(xùn)練后,我們可以取樣這個(gè)網(wǎng)絡(luò)來生成合成的語音。每一步的采樣值是由網(wǎng)絡(luò)計(jì)算得出的概率分布得到的。這個(gè)值隨后會重新回到輸入端,然后在下一步生成一個(gè)新的預(yù)測。構(gòu)建一個(gè)像這樣能夠一次進(jìn)行一步取樣的網(wǎng)絡(luò)是需要大量的計(jì)算的,但我們覺得這對于生成復(fù)雜、聽上去和實(shí)際的聲音一樣的音頻是非常必要的。
開拓創(chuàng)新
我們用了一部分Google的TTS數(shù)據(jù)庫來訓(xùn)練WaveNet。因此,我們可以去衡量它的表現(xiàn)。下面的數(shù)據(jù)展示了從規(guī)模1-5上,對比Google現(xiàn)在最好的TTS系統(tǒng)(參量式和拼接式)和人類語音(使用的是MOS),WaveNet的質(zhì)量。MOS是一個(gè)標(biāo)準(zhǔn)的用于主觀音質(zhì)測試的衡量體系,它由人類在盲測中所提交的數(shù)據(jù)獲得。如我們所能看到的一樣,WaveNets在中英文和中文上,縮小的超過50%的目前最前進(jìn)的技術(shù)和人類表現(xiàn)之前的差距。
對于中文和英文來說,目前Google的TTS系統(tǒng)被認(rèn)為是目前世界上最佳的系統(tǒng)。所以,WaveNets可以通過一個(gè)系統(tǒng)來對兩種語言同時(shí)進(jìn)行提升,確實(shí)是一個(gè)重大的成果。
關(guān)于三者對比的語音,建議大家進(jìn)入DeepMind的英文原文,進(jìn)行試聽,WaveNets的效果相當(dāng)不錯(cuò)!
知道說什么
為了使用WaveNets將文本變成語音,我們先要告訴它什么是文本。我們的做法是,通過將文本轉(zhuǎn)換成有語言和語音特色(包括當(dāng)前的音素、章節(jié)、單詞等信息)的一個(gè)序列,之后將它們都投入到WaveNet中。這意味著這個(gè)網(wǎng)絡(luò)的預(yù)測不僅可以基于之前的音頻samples,也可以基于我們想要讓他說的文本。
如果我們在沒有文本序列的情況下來訓(xùn)練網(wǎng)絡(luò),它仍然可以生成語音,但是它不得不編造一些它要說的東西。你同樣可以在DeepMind的英文原文頁聽到,這樣生成的小樣聽上去就是在胡說八道。
WaveNets在有些時(shí)間還可以生成例如呼吸和嘴部運(yùn)動這樣的非語言聲音,這也反映了一個(gè)原始的音頻模型所擁有的更大的自由度。
如你在這些樣本中所能聽到的一樣,一個(gè)單一的WaveNet可以學(xué)習(xí)很多種聲音的特點(diǎn),不論是男性還是女性。為了確認(rèn)WaveNet知道在任意的情景下它知道用什么聲音,我們?nèi)タ刂蒲葜v人的身份。有意思的是,我們發(fā)布用很多的演講者是訓(xùn)練這個(gè)系統(tǒng),使得它能夠更好的去給單個(gè)演講者建模。這比只用一個(gè)演講者去訓(xùn)練要強(qiáng)。這是一種形式的遷移學(xué)習(xí)。
同樣的,我們也可以在模型的輸入端給予更多的東西,例如情感或噪音,這樣使得生成的語音可以更多樣化,也更有趣。
生成音樂
既然WaveNets可以用來能任意的音頻信息進(jìn)行建模,我們就想如果能讓他來生成音樂的話,這樣就更有意思了。和TTS實(shí)驗(yàn)不同,我們沒有給網(wǎng)絡(luò)一個(gè)輸入序列,告訴它要去播放什么(例如一個(gè)譜子)。相反的,我們只是讓它去生成任意它想生成的東西。當(dāng)我們將它在一個(gè)古典鋼琴音樂的數(shù)據(jù)集上進(jìn)行訓(xùn)練時(shí),它聽上去的效果確定還不錯(cuò)。
這幾段生成的樣本,也建議大家點(diǎn)擊文章最下方的“閱讀原文”按鈕,進(jìn)入DeepMind的英文原文,進(jìn)行試聽。
WaveNets為TTS、音樂合成以及音頻建模開啟了更多的可能性。我們已經(jīng)迫不及待地想要去探索更多WaveNets能做的事!