王 歡,蔡志偉,許鑫亮,張 豹,吳文益
(大連民族大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,遼寧 大連116650)
音樂(lè)風(fēng)格沒(méi)有明確的概念,不同語(yǔ)義下音樂(lè)風(fēng)格含義不同[1],可能是音樂(lè)流派,如:古典樂(lè)、爵士樂(lè)等,也可能是音色、音調(diào)的不同,本文研究的音樂(lè)風(fēng)格遷移指的是音樂(lè)流派風(fēng)格的遷移。
音樂(lè)是一個(gè)1維的時(shí)間序列,且音樂(lè)的特征信息較多,特征之間連接較為復(fù)雜緊密,在提取特征上較為復(fù)雜。目前大多數(shù)對(duì)音頻進(jìn)行風(fēng)格遷移的方法都是直接采用的圖像風(fēng)格遷移的算法。
國(guó)際上的科學(xué)家研究了復(fù)雜的表示和信號(hào)處理技術(shù)。Engel[2]等人使用GAN通過(guò)模擬STFT幅度和相位角來(lái)生成音樂(lè)音色,但沒(méi)有生成特定風(fēng)格的音頻。Huang等[3]提出的Timbertron通過(guò)提取音頻的CQT特征,然后通過(guò)CycleGAN對(duì)其進(jìn)行音色轉(zhuǎn)換。隨后通過(guò)訓(xùn)練好的聲碼器將轉(zhuǎn)換后的CQT特征轉(zhuǎn)換成原始音頻。但該方法是在單一音色域上進(jìn)行風(fēng)格變換。Noam等[4]提出了一個(gè)通用的音樂(lè)翻譯網(wǎng)絡(luò),該網(wǎng)絡(luò)通過(guò)訓(xùn)練一個(gè)WaveNet音樂(lè)編碼器和多個(gè)WaveNet解碼器來(lái)實(shí)現(xiàn)音樂(lè)音色轉(zhuǎn)換。該網(wǎng)絡(luò)實(shí)現(xiàn)了從一種音色域轉(zhuǎn)換到多種音色域,但是想要實(shí)現(xiàn)不同風(fēng)格,需要訓(xùn)練多種解碼器,這對(duì)機(jī)器的算力有較高的要求,當(dāng)更換風(fēng)格時(shí)又需重新訓(xùn)練解碼器,不具有泛化性。
針對(duì)目前存在的多種音頻風(fēng)格轉(zhuǎn)換模型不具備泛化性、計(jì)算量大等問(wèn)題。本文提出了一種CycleGAN音頻風(fēng)格遷移的改進(jìn)方法來(lái)克服上述模型存在的問(wèn)題。
本文采用CycleGAN[5]實(shí)現(xiàn)音頻的風(fēng)格遷移,針對(duì)音樂(lè)數(shù)據(jù)的特殊性對(duì)CycleGAN進(jìn)行了改進(jìn)。生成式對(duì)抗網(wǎng)路是Gosodfellow等[6]提出的一類隱式生成模型。CycleGAN模型結(jié)構(gòu)如圖1。它的核心是通過(guò)兩個(gè)生成對(duì)抗網(wǎng)絡(luò)的合作組成的。第1組生成對(duì)抗網(wǎng)絡(luò)是生成器GA→B(從A到B的生成)與鑒別器DB,兩個(gè)生成器GA→B和GB→A的目標(biāo)是盡可能生成對(duì)方領(lǐng)域中的圖像以騙過(guò)各自對(duì)應(yīng)的鑒別器,鑒別器用于判斷圖像是否屬于指定領(lǐng)域。
圖1 CycleGAN模型結(jié)構(gòu)
為了減少計(jì)算量,本文在生成器中的ResNet殘差網(wǎng)絡(luò)中加入了瓶頸結(jié)構(gòu)如圖2。利用1×1的卷積核[7],1×1的卷積核能夠減少計(jì)算量而不會(huì)損失太多原來(lái)的信息。上一級(jí)輸入通過(guò)1×1的卷積核,進(jìn)行降維同時(shí)進(jìn)行壓縮操作,在3×3的卷積核后面再設(shè)置一個(gè)1×1的卷積,使其維度與輸入時(shí)保持一致。
圖2 瓶頸結(jié)構(gòu)
生成器網(wǎng)絡(luò)結(jié)構(gòu)如圖3。通過(guò)3個(gè)卷積層進(jìn)行下采樣,輸入到ResNet殘差網(wǎng)絡(luò),ResNet網(wǎng)絡(luò)由10個(gè)Resnet Block組成,在每一層Resnet layer中加入瓶頸結(jié)構(gòu),減少計(jì)算量同時(shí)不會(huì)損失太多原來(lái)信息。最后通過(guò)反卷積進(jìn)行上采樣還原回原來(lái)尺寸。
圖3 生成器網(wǎng)絡(luò)結(jié)構(gòu)
為了提高生成音頻的可信性,使生成的音樂(lè)更像真實(shí)音樂(lè),本文在兩組對(duì)抗生成網(wǎng)絡(luò)中各增加1個(gè)鑒別器。將多領(lǐng)域音樂(lè)與通過(guò)1個(gè)生成器生成的音頻輸入該鑒別器,以使得生成器學(xué)習(xí)音樂(lè)更高級(jí)的特性,從而使生成的音頻更具有可信性。增加1個(gè)鑒別器后的1組生成對(duì)抗網(wǎng)絡(luò)如圖4。
圖4 附加鑒別器后的生成對(duì)抗網(wǎng)絡(luò)
本文采用不同流派數(shù)據(jù)集,為實(shí)驗(yàn)?zāi)P蛯?shí)用性提供可靠保證。
本文采用的音頻格式為MIDI格式,MIDI音樂(lè)就是利用音樂(lè)軟件中的音序編輯方法,通過(guò)MIDI系統(tǒng)處理合成制作出的計(jì)算機(jī)音樂(lè)[8]。其類似于活頁(yè)樂(lè)譜的符號(hào)音樂(lè),MIDI文件中并不存在波形數(shù)據(jù),而是將所演奏的樂(lè)曲信息用信息字節(jié)來(lái)描述。在本文中,使用的歌曲流派有:爵士樂(lè),古典音樂(lè)與流行樂(lè),數(shù)據(jù)集見(jiàn)表1。數(shù)據(jù)集從YouTube上收集,可以從https:∥goo.gl/ZK8wLW下載。
表1 數(shù)據(jù)集
首先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理如圖5。過(guò)濾掉錯(cuò)誤音樂(lè),并將得到的規(guī)格音樂(lè)轉(zhuǎn)換成2維矩陣,2維矩陣存放的數(shù)據(jù)為時(shí)間和音高[9]。
圖5 數(shù)據(jù)預(yù)處理
古典音樂(lè)與爵士樂(lè)的差異在于音高[10],古典音樂(lè)的音高比爵士樂(lè)音高高。本文根據(jù)這一特點(diǎn),在進(jìn)行古典音樂(lè)轉(zhuǎn)換為爵士樂(lè)風(fēng)格時(shí),降低原音頻的音高;進(jìn)行爵士樂(lè)轉(zhuǎn)換為古典音樂(lè)風(fēng)格時(shí),提高原音頻的音高。
本文將原音頻與轉(zhuǎn)換后的音頻的音高特征圖繪制出來(lái)進(jìn)行直觀的比對(duì),同時(shí)將改進(jìn)后生成的音頻與傳統(tǒng)CycleGAN生成的音頻進(jìn)行對(duì)比。
為古典音樂(lè)音高特征圖如圖6。傳統(tǒng)CycleGAN生成的古典音樂(lè)轉(zhuǎn)換為爵士樂(lè)風(fēng)格音頻的音高特征圖如圖7。本文改進(jìn)后的CycleGAN生成的古典音樂(lè)轉(zhuǎn)換為爵士樂(lè)風(fēng)格音頻的音高特征圖如圖8。
圖6 古典音樂(lè)音高特征圖
圖7 古典轉(zhuǎn)爵士音高特征圖
圖8 改進(jìn)后古典轉(zhuǎn)爵士音高特征圖
從圖7中可以看出實(shí)現(xiàn)了音高的降低,但效果不是很好,圖像上與原音頻音高特征圖相比較為稀疏,這是因?yàn)橥ㄟ^(guò)傳統(tǒng)CycleGAN生成的音頻丟失掉了一部分音高信息,表現(xiàn)在聽(tīng)覺(jué)效果上為音頻不連續(xù)。
從圖6中可以看出實(shí)現(xiàn)了音高的降低,與傳統(tǒng)CycleGAN生成的音頻音高特征圖,圖7相比音高較低效果更好一些,與原音頻音高特征圖,圖6相比音高信息保留較為全面,且與圖7相比,音高信息保留更多。聽(tīng)覺(jué)效果上更為連續(xù)。
爵士樂(lè)音高特征圖如圖9,傳統(tǒng)CycleGAN生成爵士樂(lè)轉(zhuǎn)換為古典音樂(lè)風(fēng)格音頻的音高特征圖如圖10。本文改進(jìn)后的CycleGAN生成爵士樂(lè)轉(zhuǎn)換為古典音樂(lè)風(fēng)格音頻的音高特征圖如圖11。
圖9 爵士樂(lè)音高特征圖
圖10 爵士轉(zhuǎn)古典音高特征圖
圖11 改進(jìn)后爵士轉(zhuǎn)古典音高特征圖
從圖10中可以看出實(shí)現(xiàn)了音高的提高,但效果不是很好,且傳統(tǒng)CycleGAN生成的音頻丟失了較多的音高信息,導(dǎo)致聽(tīng)起來(lái)不連續(xù)。
從圖11中可以看出改進(jìn)后生成的音頻音高提高效果較傳統(tǒng)CycleGAN生成的音頻音高特征圖,圖10相比較好,且保留較多信號(hào)信息,聽(tīng)起來(lái)更為連續(xù)。
生成的音樂(lè)既要實(shí)現(xiàn)風(fēng)格的遷移又需滿足人類的主觀感受,為此本文采取主觀評(píng)價(jià)與客觀評(píng)價(jià)相結(jié)合的方式。
主觀評(píng)價(jià)采用國(guó)際標(biāo)準(zhǔn)MOS平均主觀意見(jiàn)分,MOS評(píng)價(jià)標(biāo)準(zhǔn)見(jiàn)表2,即由不同的人分別對(duì)原始音頻和通過(guò)系統(tǒng)生成的音頻進(jìn)行主觀感覺(jué)對(duì)比,得出MOS分,最后求平均分。MOS一般5個(gè)等級(jí):很差、差、一般、良好、優(yōu)秀。
表2 MOS評(píng)價(jià)標(biāo)準(zhǔn)
本文以發(fā)送調(diào)查問(wèn)卷的形式,來(lái)實(shí)施對(duì)音頻遷移效果的主觀評(píng)估。共回收了623張問(wèn)卷。結(jié)果如圖12。
從圖12中可以看出本文實(shí)現(xiàn)的音頻遷移效果較好。其中良好占40.03%,優(yōu)秀占33.44%,一般占25.24%,差占0.96%,很差占0.32%。說(shuō)明音頻風(fēng)格遷移能夠較好地滿足人們對(duì)音樂(lè)的主觀要求。
圖12 主觀評(píng)價(jià)統(tǒng)計(jì)圖
PA(xA)=CA,B(xA)>0.5;
(1)
(2)
另外,對(duì)于模型的評(píng)估還需看其損失率和正確率。損失越小,正確率越高,模型越好。本文改進(jìn)的CycleGAN模型當(dāng)?shù)?00次時(shí),正確率達(dá)88.71%,損失值很小,超出了計(jì)算機(jī)精度范圍,幾乎為0。
傳統(tǒng)CycleGAN基本在迭代73次時(shí)損失值不發(fā)生明顯變化;本文改進(jìn)的CycleGAN在迭代72次時(shí)損失值已不發(fā)生明顯變化,對(duì)比改進(jìn)前后在不同程度高斯噪聲下迭代70次的損失值見(jiàn)表3。
由表3可以看出該二分類器魯棒性很好、具有很好的泛化性,且改進(jìn)后降低了損失值,說(shuō)明改進(jìn)后在客觀指標(biāo)上也表現(xiàn)良好。
本文提出基于CycleGAN音頻風(fēng)格遷移改進(jìn)方法。在傳統(tǒng)CycleGAN網(wǎng)絡(luò)生成器中的ResNet中加入瓶頸結(jié)構(gòu),可以提高計(jì)算速度同時(shí)不損失原來(lái)信息。本文附加兩個(gè)鑒別器使CycleGAN網(wǎng)絡(luò)中的生成器可以學(xué)習(xí)更高級(jí)的特性,這有助于規(guī)則生成器生成具有多樣性的音頻,使其生成的音頻更接近現(xiàn)實(shí)音樂(lè)。不論是主觀上MOS評(píng)估還是客觀上二分類器評(píng)估結(jié)果均顯示該模型的音頻風(fēng)格遷移具有不錯(cuò)的效果。