萬余首鋼琴作品一千多小時,字節(jié)跳動全球最大鋼琴MIDI數(shù)據(jù)集
近期,字節(jié)跳動發(fā)布全球最大的古典鋼琴數(shù)據(jù)集 GiantMIDI-Piano,包括來自 2,784 位作曲家 10,854 首作品的 MIDI 文件,總時長為 1,237 小時。研究者為完成該數(shù)據(jù)集的構(gòu)建,開發(fā)并開源了一套高精度鋼琴轉(zhuǎn)譜系統(tǒng)。
鋼琴轉(zhuǎn)譜是一項將鋼琴錄音轉(zhuǎn)為音樂符號(如 MIDI 格式)的任務。在人工智能領域,鋼琴轉(zhuǎn)譜被類比于音樂領域的語音識別任務。然而長期以來,在計算機音樂領域一直缺少一個大規(guī)模的鋼琴 MIDI 數(shù)據(jù)集。
近期,字節(jié)跳動發(fā)布了全球最大的古典鋼琴數(shù)據(jù)集 GiantMIDI-Piano [1]。在數(shù)據(jù)規(guī)模上,數(shù)據(jù)集不同曲目的總時長是谷歌 MAESTRO 數(shù)據(jù)集的 14 倍。
論文地址:https://arxiv.org/abs/2010.07061
項目地址:https://github.com/bytedance/GiantMIDI-Piano
字節(jié)跳動研究科學家表示:「GiantMIDI-Piano 將所有古典鋼琴作品轉(zhuǎn)錄成 MIDI 格式,并向全世界開放,此舉旨在推動音樂科技和計算機音樂學的發(fā)展」。
GiantMIDI-Piano 的用途包括但不限于:音樂信息檢索、自動作曲、智能音樂創(chuàng)作、計算音樂學等。下圖展示了 GiantMIDI-Piano 中前 100 位不同作曲家的曲目數(shù)量分布:

GiantMIDI-Piano 的特點是使用鋼琴轉(zhuǎn)譜技術,通過計算機將音頻文件自動轉(zhuǎn)為 MIDI 文件,并通過該技術轉(zhuǎn)譜了大規(guī)模的 MIDI 數(shù)據(jù)集。
研究者首先從開放的國際音樂數(shù)字圖書館 IMSLP 獲取了18,067位作曲家的143,701首作品名信息,并通過 YouTube 搜索到60,724個音頻。然后,研究者設計了基于音頻卷積神經(jīng)網(wǎng)絡(CNN)的鋼琴獨奏檢測算法,篩選出來自 2,786 位作曲家的 10,854 部鋼琴作品。最后,研究者開發(fā)并開源了一套高精度鋼琴轉(zhuǎn)譜系統(tǒng)(High-resolution Piano Transcription with Pedals by Regressing Precise Onsets and Offsets Times)[2],將所有音頻轉(zhuǎn)譜成 MIDI 文件,進而構(gòu)建了 GiantMIDI-Piano 數(shù)據(jù)庫。
數(shù)據(jù)集特點
GiantMIDI-Piano 數(shù)據(jù)集具備以下特點:
包含來自 2,784 位作曲家 10,854 首作品的 MIDI 文件。
包含 34,504,873 個音符。
所有的曲目都是不同的,MIDI 文件的總時長為 1,237 小時。
由高精度轉(zhuǎn)譜系統(tǒng)轉(zhuǎn)譜音頻而成。轉(zhuǎn)譜的 MIDI 文件包括音符的起始時間、力度和踏板信息。
GiantMIDI-Piano 的轉(zhuǎn)譜相對錯誤率為 0.094,在 Maestro 鋼琴數(shù)據(jù)集上的轉(zhuǎn)譜 F1 值為 96.72%。
所有 MIDI 文件都有統(tǒng)一的格式,文件名格式為「姓_名_曲目名_youtubeID.mid」。
包含作曲家國籍和出生年份信息。
數(shù)據(jù)集大小為 193 Mb。
使用許可為 CC BY 4.0。
鋼琴轉(zhuǎn)譜
鋼琴轉(zhuǎn)譜是一項十分具有挑戰(zhàn)性的任務,原因之一在于鋼琴是復音樂器,存在多個鋼琴按鍵同時被按下的情況,不同音的組合方式多達上萬種。針對此任務,字節(jié)跳動開源了一套高精度鋼琴轉(zhuǎn)譜系統(tǒng) [2]:

論文地址:https://arxiv.org/abs/2010.01815
項目地址:https://github.com/bytedance/piano_transcription
該轉(zhuǎn)譜系統(tǒng)的特點包括:
能夠?qū)⑷我饴暡繑?shù)目、任意復雜度,甚至雙鋼琴、多鋼琴的鋼琴音頻轉(zhuǎn)譜為 MIDI 文件。
實現(xiàn)了任意時間精度的音符檢測,突破了之前算法 32 毫秒識別精度的限制。
對每個音符實現(xiàn)了 128 個粒度的力度識別。
同時包含了鋼琴音符和鋼琴踏板的識別。
在 MAESTRO 評測數(shù)據(jù)集上取得 96.72% 的 F1 值,超越了 Google 系統(tǒng)的 94.80%。
預訓練模型的代碼以 Apache 2.0 協(xié)議開源。
在鋼琴中,琴鍵的觸發(fā)(onset)、抬起(offset)、按下的狀態(tài)(frame)和力度(velocity)是鋼琴發(fā)聲的重要因素。字節(jié)跳動研究者提出了一種通過預測觸發(fā)、抬起絕對時間進行鋼琴轉(zhuǎn)譜的方法。在訓練中,網(wǎng)絡的訓練標簽不再是二值 0 或 1,而是和絕對時間有關的連續(xù)值 g(△),以此實現(xiàn)任意精度的鋼琴轉(zhuǎn)譜:

訓練的標簽能夠表示毫秒級別的觸發(fā)和抬起偏移:

研究者搭建了基于深層神經(jīng)網(wǎng)絡的轉(zhuǎn)譜模型。一段音頻波形首先被轉(zhuǎn)換成對數(shù)梅爾譜圖(Log mel spectrogram)作為輸入特征。卷積循環(huán)神經(jīng)網(wǎng)絡被用作聲學模型,分別預測觸發(fā)、抬起、按下的狀態(tài)和力度。每個聲學模型包含 8 個卷積層用來提取高層抽象特征,2 個雙向循環(huán)神經(jīng)網(wǎng)絡層(GRU)用來學習音頻的長時依賴性。每個聲學模型的輸出都是 0 到 1 之間的連續(xù)值。

模型訓練完畢后,在推斷階段,研究者提出了一種計算絕對觸發(fā)和抬起時間的算法,可預測任意時間精度的音符觸發(fā)和抬起:

轉(zhuǎn)譜結(jié)果
00:00/00:00倍速
下圖顯示了郎朗演奏《愛之夢》片段的音頻對數(shù)梅爾譜圖、音符轉(zhuǎn)譜結(jié)果和踏板轉(zhuǎn)譜結(jié)果:

此外,研究者使用一款名為雅馬哈 Disklavier 的自動演奏鋼琴播放轉(zhuǎn)譜的 MIDI,重構(gòu)了偉大鋼琴家們的歷史演出。業(yè)內(nèi)人士分析,這項工作無疑是令人振奮的,字節(jié)跳動可能會將這項技術應用于后疫情時代的線上音樂直播、智能音樂創(chuàng)作中。
示例參見:
自動演奏鋼琴重構(gòu)李云迪《鐘》:https://www.bilibili.com/video/BV1JD4y1d7Pn
自動演奏鋼琴重構(gòu)古爾德 1981 年《哥德堡變奏曲》:https://www.bilibili.com/video/BV1M541177x4