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