基于深度學(xué)習(xí)算法的樂譜生成器:Music Eye
作者:周恩賢 計(jì)算機(jī)系
指導(dǎo)老師:胡曉林 計(jì)算機(jī)系
關(guān)鍵詞:深度學(xué)習(xí)、CNN、attention、樂譜生成、音樂
摘要
我們通過(guò)改進(jìn)一個(gè)現(xiàn)有模型,提出了一個(gè)基于全卷積神經(jīng)網(wǎng)絡(luò)的聽譜模型Music Eye,能夠高效快速地實(shí)現(xiàn)音頻文件向midi事件的轉(zhuǎn)換,并且能在有和弦、多音色、多聲部的復(fù)雜的條件下實(shí)現(xiàn)高準(zhǔn)確率的識(shí)別。
數(shù)據(jù)集制作
我們使用midi文件生成帶標(biāo)注的數(shù)據(jù)。通過(guò)timidity實(shí)現(xiàn)midi文件到音頻文件的轉(zhuǎn)換,并使用常數(shù)Q變換得到的頻譜圖。為了讓模型獲得相位信息,我們將頻譜圖分為模、實(shí)部、虛部三個(gè)通道。我們通過(guò)解析midi文件獲得對(duì)應(yīng)的按鍵事件。
為了防止過(guò)擬合,我們使用以下幾個(gè)數(shù)據(jù)增強(qiáng)方法:1.加入麥克風(fēng)錄制的噪音。2.對(duì)樂曲隨機(jī)移調(diào),變速,并在樂曲頭尾插入可變長(zhǎng)度的空白。3.為各聲部隨機(jī)替換樂器。
考慮到運(yùn)算資源的開銷,我們限定每個(gè)樣本的時(shí)間長(zhǎng)度為8s。下面是數(shù)據(jù)的一個(gè)樣例:
圖1.輸入數(shù)據(jù)樣例
從左到右依次為頻譜圖的實(shí)部,頻譜圖的虛部,對(duì)應(yīng)的midi事件。
模型介紹
我們所知的一個(gè)相關(guān)模型為[1],我們對(duì)該模型進(jìn)行了改進(jìn)。
將識(shí)譜問(wèn)題表示為一個(gè)像素級(jí)二分類問(wèn)題,對(duì)于常數(shù)Q變換產(chǎn)生的頻譜圖,我們讓頻率的坐標(biāo)為對(duì)數(shù)坐標(biāo),并讓一個(gè)鋼琴按鍵對(duì)應(yīng)頻率軸上的4個(gè)像素。如圖。模型所做的是為每一個(gè)時(shí)刻每一個(gè)按鍵輸出按鍵是否被按下,按下是1,沒按下是0。
圖2.模型介紹示意圖
其中,藍(lán)色框從左到右依次為C的根音、一階泛音、二階泛音、三階泛音,而我們最終只需要根音。由于音頻是可以重疊的,根音和泛音可能會(huì)疊加在一起,會(huì)導(dǎo)致根音難以分離,所以這是實(shí)現(xiàn)的難點(diǎn)之一。
為了解決泛音的問(wèn)題,我們?cè)诘趚x和xx層使用很寬(相當(dāng)于4個(gè)八度)的卷積核。為了保留較高的時(shí)間分辨率,我們只對(duì)頻率軸進(jìn)行池化(池化是由卷積實(shí)現(xiàn)的)。模型如圖所示:
圖3. Music Eye 神經(jīng)網(wǎng)絡(luò)模型
真實(shí)樣本測(cè)試
由于計(jì)算資源有限,雖然我們準(zhǔn)備了上萬(wàn)首midi文件,但是我們只用了其中的37首,每首通過(guò)數(shù)據(jù)增強(qiáng)得到4個(gè)樣本,共計(jì)148個(gè)樣本。但是模型依然表現(xiàn)出良好的性能,處理速度約為每0.5s能處理8s的錄音。我們?cè)谙铝袔讉€(gè)數(shù)據(jù)上進(jìn)行了測(cè)試,難度由低到高。為了能有更加直觀的感受,我們?cè)诟郊刑峁┝溯斎胍纛l與從輸出中重構(gòu)的音頻。
1. 測(cè)試集中的midi文件:千本櫻,時(shí)代前進(jìn)
2.YouTube上鋼琴?gòu)椬嗟匿浺? Chopin
3.揚(yáng)聲器播放并用麥克風(fēng)錄制的錄音: 卡農(nóng)
我們發(fā)現(xiàn)模型仍有許多不足:1.不能準(zhǔn)確識(shí)別音長(zhǎng)、存在漏音和多音的現(xiàn)象。2.對(duì)midi音色過(guò)擬合。3.在麥克風(fēng)錄音時(shí)受到嚴(yán)重干擾。
因此在下一步我們打算:1.加入注意力機(jī)制,對(duì)音符序列進(jìn)行建模。2.加大數(shù)據(jù)量。3.使用增加一些降噪手段,同時(shí)更真實(shí)的模擬麥克風(fēng)的濾波。
真實(shí)樣本結(jié)果
部分輸入音頻與輸出音頻結(jié)果如下(上方為輸入音頻,下方為輸出后重構(gòu)的音頻),鏈接https://cloud.tsinghua.edu.cn/d/9273445e0ae54154a514/
1.千本櫻
【音頻:千本櫻-輸入】
【音頻:千本櫻-重構(gòu)】
2.卡農(nóng)
【音頻:卡農(nóng)-輸入】
【音頻:卡農(nóng)-重構(gòu)】
3.Chopin
【音頻:Chopin-輸入】
【音頻:Chopin-重構(gòu)】
4.時(shí)代前進(jìn)
【音頻:時(shí)代前進(jìn)-輸入】
【音頻:時(shí)代前進(jìn)-重構(gòu)】
文獻(xiàn)引用
[1].https://www.lunaverus.com/cnn