近期,字节跳动发布了全球最大的古典钢琴数据集 GiantMIDI-Piano [1]。在数据规模上,数据集不同曲目的总时长是谷歌 MAESTRO 数据集的 14 倍。
论文地址:https://arxiv.org/abs/2010.07061
项目地址:https://github.com/bytedance/GiantMIDI-Piano
字节跳动研究科学家表示:「GiantMIDI-Piano 将所有古典钢琴作品转录成 MIDI 格式,并向全世界开放,此举旨在推动音乐科技和计算机音乐学的发展」。
GiantMIDI-Piano 的用途包括但不限于:音乐信息检索、自动作曲、智能音乐创作、计算音乐学等。下图展示了 GiantMIDI-Piano 中前 100 位不同作曲家的曲目数量分布:
GiantMIDI-Piano 的特点是使用钢琴转谱技术,通过计算机将音频文件自动转为 MIDI 文件,并通过该技术转谱了大规模的 MIDI 数据集。
研究者首先从开放的国际音乐数字图书馆 IMSLP 获取了 18,067 位作曲家的 143,701 首作品名信息,并通过 YouTube 搜索到 60,724 个音频。然后,研究者设计了基于音频卷积神经网络(CNN)的钢琴独奏检测算法,筛选出来自 2,786 位作曲家的 10,854 部钢琴作品。最后,研究者开发并开源了一套高精度钢琴转谱系统(High-resolution Piano Transcription with Pedals by Regressing Precise Onsets and Offsets Times)[2],将所有音频转谱成 MIDI 文件,进而构建了 GiantMIDI-Piano 数据库。
数据集特点
GiantMIDI-Piano 数据集具备以下特点:
包含来自 2,784 位作曲家 10,854 首作品的 MIDI 文件。
包含 34,504,873 个音符。
所有的曲目都是不同的,MIDI 文件的总时长为 1,237 小时。
由高精度转谱系统转谱音频而成。转谱的 MIDI 文件包括音符的起始时间、力度和踏板信息。
GiantMIDI-Piano 的转谱相对错误率为 0.094,在 Maestro 钢琴数据集上的转谱 F1 值为 96.72%。
所有 MIDI 文件都有统一的格式,文件名格式为「姓_名_曲目名_youtubeID.mid」。
包含作曲家国籍和出生年份信息。
数据集大小为 193 Mb。
使用许可为 CC BY 4.0。
钢琴转谱
钢琴转谱是一项十分具有挑战性的任务,原因之一在于钢琴是复音乐器,存在多个钢琴按键同时被按下的情况,不同音的组合方式多达上万种。针对此任务,字节跳动开源了一套高精度钢琴转谱系统 [2]:
论文地址:https://arxiv.org/abs/2010.01815
项目地址:https://github.com/bytedance/piano_transcription
该转谱系统的特点包括:
能够将任意声部数目、任意复杂度,甚至双钢琴、多钢琴的钢琴音频转谱为 MIDI 文件。
实现了任意时间精度的音符检测,突破了之前算法 32 毫秒识别精度的限制。
对每个音符实现了 128 个粒度的力度识别。
同时包含了钢琴音符和钢琴踏板的识别。
在 MAESTRO 评测数据集上取得 96.72% 的 F1 值,超越了 Google 系统的 94.80%。
预训练模型的代码以 Apache 2.0 协议开源。
在钢琴中,琴键的触发(onset)、抬起(offset)、按下的状态(frame)和力度(velocity)是钢琴发声的重要因素。字节跳动研究者提出了一种通过预测触发、抬起绝对时间进行钢琴转谱的方法。在训练中,网络的训练标签不再是二值 0 或 1,而是和绝对时间有关的连续值 g(△),以此实现任意精度的钢琴转谱:
训练的标签能够表示毫秒级别的触发和抬起偏移:
研究者搭建了基于深层神经网络的转谱模型。一段音频波形首先被转换成对数梅尔谱图(Log mel spectrogram)作为输入特征。卷积循环神经网络被用作声学模型,分别预测触发、抬起、按下的状态和力度。每个声学模型包含 8 个卷积层用来提取高层抽象特征,2 个双向循环神经网络层(GRU)用来学习音频的长时依赖性。每个声学模型的输出都是 0 到 1 之间的连续值。
模型训练完毕后,在推断阶段,研究者提出了一种计算绝对触发和抬起时间的算法,可预测任意时间精度的音符触发和抬起:
转谱结果
下图显示了郎朗演奏《爱之梦》片段的音频对数梅尔谱图、音符转谱结果和踏板转谱结果:
此外,研究者使用一款名为雅马哈 Disklavier 的自动演奏钢琴播放转谱的 MIDI,重构了伟大钢琴家们的历史演出。业内人士分析,这项工作无疑是令人振奋的,字节跳动可能会将这项技术应用于后疫情时代的线上音乐直播、智能音乐创作中。
示例参见:
自动演奏钢琴重构李云迪《钟》:https://www.bilibili.com/video/BV1JD4y1d7Pn
自动演奏钢琴重构古尔德 1981 年《哥德堡变奏曲》:https://www.bilibili.com/video/BV1M541177x4
参考文献:
[1] Qiuqiang Kong, Bochen Li, Xuchen Song, Yuan Wan, and Yuxuan Wang. "High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times." arXiv preprint arXiv:2010.01815 (2020).
[2] Qiuqiang Kong, Bochen Li, Xuchen Song, Yuan Wan, and Yuxuan Wang. "High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times." arXiv preprint arXiv:2010.01815 (2020).
代码&数据集:
https://github.com/bytedance/piano_transcription
https://github.com/bytedance/GiantMIDI-Piano