Skip to main content

Music_translate

论文名称:High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times

作者: Qiuqiang Kong, Bochen Li, Xuchen Song, Yuan Wan, Yuxuan Wang

Code:https://github.com/bytedance/piano_transcription

前言

自动音乐转谱(Automatic music transcription)是将音频转化为符号表示的任务,例如 Piano Rolls, guitar fretboard chart 和 Music Instrument Digital Interface(MIDI),AMT 之于人工智能音乐就如同词嵌入之于自然语言处理一般不可或缺,其发展将会使下游任务受益匪浅。

钢琴转谱 AMT 中的一个具有较高挑战性的任务,它包含音高(pitch)、起音(onset)、偏移(offset)和速度(velocity,实际上指得是击键的速度,也就是音符的力度)(等音乐事件,其难点主要在于钢琴的复音(多个键同时被按下)

在之前的工作中,提出了用于多基音估计的概率谱平滑原理;频域和时域相结合的钢琴转录方法;非负矩阵分解 (NMF) 用于将频谱分解为复音音符,等等等等

这些转谱系统都需要先将音频分为帧(frames),每帧中储存着其音高、起音、偏移等信息,然而这存在一些问题:

  1. 钢琴音符的起音可以持续几帧而不是一帧

  2. 这些系统对标签和音频的错位很敏感,例如某个起始点错位了几帧,整个训练将会受到影响

  3. 为起音和偏移事件分配标签时存在歧义,例如由于混响和淡出效果,音符的偏移并不明显

  4. 系统的精度取决于跳帧的长度

  5. 缺乏对延音踏板的研究

针对上述问题,提出了一个高分辨率的踏板预测钢琴转谱系统,它将音符视作一个个连续的量,分为起音、衰减、延音和释音,并且能实现任意分辨率的转谱

相关工作

RAME-WISE TRANSCRIPTON

这类转谱网络主要分为以下步骤:

  1. 将音频的频谱转为 对数梅尔谱,输入大小为 T×FT\times FTT 为采样的帧数,FF 为对数梅尔谱的采样个数
  2. 将其输入分类网络中(实际上就是分类 piano rolls 上的每一个音符的存在与否),输出为 PianoRollsPiano-Rolls,大小为 T×KT\times KKK 为钢琴音符的数量,一般为 88
  3. 一般使用交叉熵函数,损失函数定义为 lon=t=1Tk=1Klbce(Ion(t,k),Pon(t,k))l_{on}=\sum_{t=1}^{T}\sum_{k=1}^{K}l_{bce}(I_{on}(t,k),P_{on}(t,k))\\,lfr=t=1Tk=1Klbce(Ifr(t,k),Pfr(t,k))l_{fr}=\sum_{t=1}^{T}\sum_{k=1}^{K}l_{bce}(I_{fr}(t,k),P_{fr}(t,k))\\

Onsets and frames transcription systems

改进了 frame-wise transcription systems 需要对钢琴音符时间的进行精细处理,引入了 onsetframe 结合,能够得到更加丰富的信息。其中每一帧都会被分配 1 或 0 来表示 onsetoffset

HIGH-RESOLUTION PIANO TRANSCRIPTION

图中红线表示实际音符开始的位置,方格则表示帧

可以看到前三种转谱方法虽然能够愈发精细地建模钢琴声音的起落、延续和衰减,但是并不能得到音符精确的开始位置,因此其转谱的分辨率是有限的

通过预测钢琴音符的连续起始和结束时间来进行建模,而非对每一帧中起始和结束存在的概率进行预测,这个灵感来源于 YOLO,直接预测每帧中心和音符精确开始或结束时间之间的距离,因此,该方法理论上可以以任意分辨率捕获精确的起始和结束的信息。

在训练中,我们通过函数 gg 将时间差 Δi\Delta_i 编码为 g(Δi)g(\Delta_i)

{g(Δi)=1ΔiJΔ,i<Jg(Δi)=0,i>J\begin{cases} g(\Delta_i)=1-\frac{|\Delta_i|}{J\Delta},|i|<J\\ g(\Delta_i)=0,|i|>J \end{cases}

这里的 JJ 是一个控制目标清晰度 sharpness 的超参数

较大的 JJ 表示更 smoother 的目标

较小的 JJ 表示更 sharper 的目标

J=1,Δ0=0J=1,\Delta_0=0 时,等价与 Onsets&frames

下图表示了当 J=5J=5 时的情况

image-20210720185219639

可以看到,它与 Attack&decay 有一定的相似性,然是该方法能够包含更精准的音符开始时间

细节

Regress onsets and offsets times

如上述所说,通过预测钢琴音符的连续起始和结束时间来进行建模

在训练中,onsetsoffsets 的回归目标都是形状为 T×kT\times k 的矩阵,其值介于 0 与 1 之间,设其为 Gon,GoffG_{on},G_{off},设预测值为 Ron,RoffR_{on},R_{off},则其 loss 定义为:

lon=t=1Tk=1Klbce(Gon(t,k),Ron(t,k))loff=t=1Tk=1Klbce(Goff(t,k),Roff(t,k))l_{on}=\sum_{t=1}^{T}\sum_{k=1}^{K}l_{bce}(G_{on}(t,k),R_{on}(t,k))\\ l_{off}=\sum_{t=1}^{T}\sum_{k=1}^{K}l_{bce}(G_{off}(t,k),R_{off}(t,k))

Velocity estimation

VelocityVelocity 在这里表示的是手指敲击琴键的速度,简介代表着声音的响度,在 MIDI 文件中,其值为 [0,128)[0,128),先将其归一化到 [0,1)[0,1),与预测 onset 和 offset 类似,其损失函数定义为:

lvel=t=1TIon(t,k)lbce(Ivel(t,k),Pvel(t,k))l_{vel}=\sum_{t=1}^{T}I_{on}(t,k)\cdot l_{bce}(I_{vel}(t,k),P_{vel}(t,k))

这里的 Ivel,PvelI_{vel},P_{vel} 分别代表标签和预测,IonI_{on} 为 01 二值矩阵,1 表示 onset,因为只需要预测存在 onset 的帧的响度

最后乘以 128 放缩回去

Entire system

image-20210720205303278

与其他系统的输入相同,将音频转换为形状为 T×FT\times F 的对数梅尔谱矩阵

整个系统主要分为四个模块——速度回归起始回归逐帧分类结束回归

在每个模块中,使用多层卷积进行建模,然后使用双向门控循环单元 (biGRU),其中卷积层用于提取高级信息,而 biGRU 用于提取长距离信息

在 GRU 之后会使用全连接层进行回归或者分类

在这里,使用力度回归的结果对起始回归的预测进行指导,显然它们存在着相互影响的关系

同理,使用起始回归结束回归的结果对逐帧分类的预测进行指导

总的损失函数如下(都在上文提到过):

lnote=lfr+lon+loff+lvell_{note}=l_{fr}+l_{on}+l_{off}+l_{vel}

Inference

最终输出时,将结果处理为 [note,onset,offset,velocity][note,onset,offset,velocity] 的格式,我们会得到如图所示结果,然而,这样的分辨率仍然受限于跳帧大小,因此提出一种高分辨率转谱方法

image-20210720185219639

  1. 首先,对上图的 起始回归 预测进行局部最大值的检测,若大于起始阈值(onset threshold),则说该帧附近存在 onsetonsetoffsetoffset

  2. 接下來分析其精确的开始或结束时间。对于具有局部最大值的帧,取其前后各一帧组成三帧三元组,分别表示为 A、B、C

    image-20210721201947507

    点 G 则是精确时间,我们认为 AG 和 CG 关于垂线 GI 对称,假设,C 的输出值大于 A,由相似三角形容易得到:

    BH=xBxA2yCyAyByABH=\frac{x_B-x_{A}}{2}\frac{y_C-y_A}{y_B-y_A}
  3. 同理,当 结束回归 超过结束阈值或者帧预测低于帧阈值,则检测到音符结束

整个转谱算法的伪代码如下:

image-20210721210115506

SUSTAIN PEDAL TRANSCRIPTION

延音踏板是钢琴的重要组成部分之一,当踩下延音踏板时,制动器将从琴弦上移开以使琴弦自由振动来达到延音的效果,然而,之前的很多工作都没有将踏板预测包含其中。

在 MIDI 格式中,踏板的值为 [0,128)[0,128),为了简化这个问题,本系统仅会预测踏板的 onoff,并且不考虑高级延音踏板技术,如半踏板等,MIDI 值大于 64 的被视为 on,小于 64 的被视为 off。

与音符预测类似,将踏板预测目标分为 起始回归结束回归逐帧分类,分别表示为 Gped_on,Gped_off,Iped_frG_{ped\_on},G_{ped\_off},I_{ped\_fr},逐帧目标依然是 01 二值

整个踏板预测系统的损失函数为:

lped_on=T=1Tlbce(Rped_on(t),Pped_on(t))lped_off=T=1Tlbce(Rped_off(t),Pped_off(t))lped_fr=T=1Tlbce(Iped_fr(t),Rped_fr(t))lped=lped_on+lped_off+lped_frl_{ped\_on}=\sum_{T=1}^{T}l_{bce}(R_{ped\_on}(t),P_{ped\_on}(t))\\ l_{ped\_off}=\sum_{T=1}^{T}l_{bce}(R_{ped\_off}(t),P_{ped\_off}(t))\\ l_{ped\_fr}=\sum_{T=1}^{T}l_{bce}(I_{ped\_fr}(t),R_{ped\_fr}(t))\\ l_{ped}=l_{ped\_on}+l_{ped\_off}+l_{ped\_fr}

踏板预测的伪代码如下:

image-20210721210340582

EXPERIMENTS

数据集:使用 MAESTRO 数据集,一个包含成对录音和 MIDI 文件的大规模数据集,集成了超过 200 小时的钢琴独奏曲,时间分辨率约为 3 毫秒,每个音乐录音都包含作曲家、名称和表演年份的信息

预处理