论文|Onsets and frames: dual-objective piano transcription

1.文章出处

发在2018ISMIR,来自Google Brain团队,paper链接
论文笔记放在github上了

2.文章简介

“这篇文章已经把钢琴自动转录未来五年甚至十年的工作都做完了”. 我们用程序Demo转换了一首比较复杂的钢琴曲,听到转录的结果, 于是发出了这样的感叹.

本篇论文主要解决的问题是复音钢琴自动转录,也就是将原始的钢琴演奏音频转换为MIDI表示.

这篇论文的主要方法使用了一个onset检测器和一个framewise检测器,framewise检测器的预测值收到onset检测器值的限制:只有onset检测器同意在帧中有onset的存在,framewise检测器才会预测一个新的音符.作者认为只有同时改善音符的onset和offset才符合人类对音乐的感知.作者还拓展了模型预测velocity值,使得转录的结果听起来更加自然.

在MAPS数据集的转录结果在Note,Frame,以及Note(带offset)的F1 score相较于之前的state-of-the-art都有足足一倍的提升!!

本文还提出了一个新的评价指标:note with offset

3.文章主要方法

3.1 mel-spectrograms参数

229 mel-bins, 2048 FFT Window size, 16000Hz采样率.将该频谱结果作为CNN的输入.

3.2 onset detector

卷积层的输出作为128 units双向LSTM的输入,LSTM后接一个88 维输出的全连接层,88维的输出表示88个钢琴key的onset概率.

3.3 framewise detector

这个检测器的构成略有不同,首先是卷积层,接一个88维输出的全连接层,这个88维的输出向量会和onset detection端的对88个钢琴key的onset预测向量concatenate成一个176维向量,再过一个88维输出的全连接层.

3.4 Loss

总的loss是由onset端和note端两个cross-entrophy组成.

pmin​p_{min}​pminpmax​p_{max}​pmax表示MIDI的音高范围,T代表样本中有帧的数目,Ionset(p,t)​I_{onset}(p,t)​Ionset(p,t) 是一个标志值,当在帧t和音高p处有一个真实的onset时,它的值为1.Ponset(p,t)​P_{onset}(p,t)​Ponset(p,t)表示模型在帧t和音高p处预测概率表示,CE代表交叉熵.

作者在这里定义了note端frame loss: 当在帧t如果音高p有真实标注值时,Iframe(p,t)I_{frame}(p,t)Iframe(p,t)是1,Pframe(p,t)P_{frame}(p,t)Pframe(p,t)则是代表模型预测的帧t处音高p被激活的概率.

值得注意的是,作者为了激励模型对音符起始端的预测准确率,对上面的frame loss加了一个额外的权值.我们记上面的frame loss为Lframe′(l,p)L'_{frame}(l,p)Lframe(l,p),假设一个音符的onset在帧t1t_{1}t1处,在帧t2t_{2}t2处完成onset,在t3t_{3}t3处结束音符,如果我们给权值向量在音符的初始帧处赋予更高的权值,那么激励模型更加准确的预测音符的起始端.也就能够保留piece中最重要的musical events.

这里c=5.0,作者做了coarse hyperparameter得到的.

作者将模型继续拓展,增加了一个模型预测每一个onset的velocities,这个模型和其他两个模型相同且包含了同样的卷积层,但是这个模型和其他两个没有联系.

在上述实验中velocity的标签被归一化到了[0,1]间,是一个piece中所有的vecolity都被除以了这个piece中最大的velocity,将归一化后的velocity转换回来使用以下映射.

作者发现在帧上和pitch上做对velocity的评价指标在之前的研究是一片空白,为此作者提出了新的note-level上的precision,recall,F1 scores.

直接对velocity评价不易,因为不像pitch和帧,velocity没有绝对的意义.比如说两个转录都包含了同一个确定的velocity,如果这两个velocity由某个常数因子偏移或者缩放了,导致每个音符的velocity完全不同,但是这两个转录系统仍然是非常等价的.

为此作者做了以下处理:先将转录中的真实velocity全部归一化到[0,1],将所有音符根据音高,onset和offset匹配好,为这些匹配好的音符加上真实的velocity和模型估计的velocity,然后做一个线性回归
其中M是匹配的个数,估计出m和b之后,使用这两个参数估计新的vev_{e}ve

最后定一个阈值τ\tauτ=0.1,选取∣ve^(i)−vr(i)∣<τ\begin{array}{l}\left|\widehat{v_e}(i)-v_r(i)\right|<\tau\\\end{array}ve

(i)vr(i)<τ,这样就消除了偏移或者缩放的问题.

选取符合条件的匹配,重新计算precision,recall,F1 score.

4.实验结果


可以看到Onsets and Frames算法在四类评价指标上在之前的state-of-the-art相比都取得了巨大的提升,甚至在某些指标上取得了100%的提升.

值得一提的是,这篇文章发在2018年ISMIR上,大约四月截稿,在2018年10月截稿的2019年一篇ICASSP论文"Deep Polyphonic ADSR Piano Note Transcription",来自奥地利的研究者又在MAPS数据集上刷新了state-of-the-art谷歌brain的人并不服输,还是这篇论文的作者们在2019年ICLR上的一篇论文"Enabling Factorized Piano Music Modeling and Generation with the MAESTRO Dataset"又在ICASSP这篇文章上结果上大幅刷新state-of-the-art.有趣的是.这篇文章是2018.10.29提交到arxiv上的,而2019icassp正好是10.29截止.好险,要是再晚一两个月.说不定那篇文章就中不了了.由此也可以看出这个钢琴转录的课题普通课题组绝对不要碰了,浪费时间.

2019.7.3补充
在最近的一篇论文|Enabling Factorized Piano music Modeling And Generation With The Maestro dataset。performance又大幅得到提升,主要原因得益于新的数据集音符标注和音频小于3ms。

Onset and Frames模型改动

  • 加入了offset detection head, 受到论文Deep Polyphonic ADSR Piano Note Transcription的启发,offset head直接喂给frame detector,但是在解码的时候没有直接使用,offset head定义成每个音符的最后32ms
  • 双向LSTM,从128增加到256个units, 卷积层的卷积核个数从32/32/64 增加到48/48/96 , 全连接层从512 增加到768
  • 停止梯度从frame network端流向onset端
  • 将mel 频谱转换成HTC 频率
  • 作者在训练的首使用了数据增强,比如使用半音pitch shift,压缩,加入噪音等,数据增强的方式使得这个模型在MAPS数据集上有效果提升,但是在Maestro数据集上验证的结果则是由轻微地变差

钢琴转录论文Onsets and Frames:dual-objective piano transcription相关推荐

  1. 使用 Transformer 序列到序列的钢琴转录

    论文原文 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用--反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 摘要 近年来,自动音乐转录通过在大型数 ...

  2. 论文阅读 Contrastive Learning-Based Dual Dynamic GCN for SAR Image Scene Classification (TNNLS2022)

    论文标题 Contrastive Learning-Based Dual Dynamic GCN for SAR Image Scene Classification 论文作者.链接 作者: Liu, ...

  3. 带瀑布流的电钢琴_让人人都能学会弹钢琴——零基础入门的智能电钢琴 POP Piano...

    原标题:让人人都能学会弹钢琴--零基础入门的智能电钢琴 POP Piano 前言 其实你一直希望成为一个会弹琴的人,只是一直没有机会开始. 如果是20世纪是网络纪元,那么21世纪就是AI纪元.当人类创 ...

  4. 【论文解读】Mining Dual Emotion for Fake News Detection

    本文主要内容: 本文主要是对以下论文进行解读 <Xueyao Zhang, Juan Cao, Xirong Li, Qiang Sheng, Lei Zhong, and Kai Shu. 2 ...

  5. 人脸检测之DSFD算法——论文翻译(DSFD: Dual Shot Face Detector)

    论文:DSFD: Dual Shot Face Detector 原文链接:https://arxiv.org/abs/1810.10220 DSFD是2019年的人脸检测算法,来自腾讯优图实验室 先 ...

  6. 论文导读:A Diversity-Promoting Objective Function for Neural Conversation Models

    Paper 链接 0. Abstract部分 0.1 用于生成对话的Seq2Seq NN(序列到序列神经网络模型) 倾向于产生安全,平常的反应(例如,我不知道,任何问题都能这么回答)而不考虑输入如何. ...

  7. MT3: 多任务多轨音频转录

    论文原文 最近笔者做了一个基于人工智能实现音乐转谱和人声分离功能的在线应用--反谱(Serocs),感兴趣的读者欢迎试用与分享,感谢您的支持!serocs.cn 摘要 自动音乐转录(AMT),从原始音 ...

  8. [论文阅读]Neural music synthesis for flexible timbre control

    本文提出了一种新的合成音乐的方法,直接从MIDI音符序列合成为由不同乐器演奏的音乐,并且可以自由地对音色进行操控,具体来说:网络输入MIDI音符序列,输出梅尔频谱,乐器嵌入作为对网络的约束,有了约束之 ...

  9. 从这篇YouTube论文,剖析强化学习在工业级场景推荐系统中的应用

    作者 | 吴海波 转载自知乎用户吴海波 [导读]本文作者根据两篇工业界背景的论文解答了 RL 在推荐场景需要解决的问题与困难,以及入门需要学习得相关知识点. 2 个月前,业界开始流传 youtube ...

最新文章

  1. mybatis delete返回值_从零开始学习在IntelliJ IDEA 中使用mybatis
  2. OpenCvSharp_FindContours函数参数详解
  3. 如何根据分页的当前页数查询数据_数据量很大的情况下,如何分页查询优化方案?...
  4. sqlserver中删除重复行的方法
  5. Exception在语义上的处理。在系统中的意义。
  6. 枚举enum、NS_ENUM 、NS_OPTIONS
  7. 查找树的指定层级_阿里面试,问了B+树,这个回答让我通过了
  8. Leetcode 392.判断子序列
  9. LSTM+attention代码原理详解
  10. mysql自动去重_关于mysql自联去重的一些记录
  11. 20200619每日一句
  12. 2022 软件库APP源码前端 后端整套独立后台+搭建教程
  13. Nod32的内网升级方案
  14. 各大互联网大厂JAVA实习招聘岗位要求
  15. Matlab中绘制颜色渐变曲线
  16. 网站商务BD(Bussiness Development--商务拓展)
  17. GNU Radio: 射频子板
  18. ModuleNotFoundError: No module named ‘common‘
  19. Keil5中No Cortex-M4 SW Device Found 解决方法
  20. python替换excel字符串_【Python代替Excel】9:列表、字符串、字典、推导式

热门文章

  1. 对网页 ‘’为所欲为‘’ 之手动实现深色模式?
  2. 制作linux只读文件系统,一种Squashfs只读根文件系统的远程升级方法及系统的制作方法...
  3. 面经合集(包含python、mysql、linux、测试等内容)
  4. 电商数据分析指标体系
  5. kafka文档: 配置选项翻译
  6. Li‘s 影像组学视频学习笔记(25)-查看准确度、灵敏度、特异度及混淆矩阵
  7. 微信小程序自动生成打卡海报
  8. 【在线研讨会-倒计时】12月12日Softing工业物联网解决方案 助力工业4.0
  9. 对Redis中主从复制、哨兵模式和集群进行部署
  10. HTG审核CODE键盘:老式建筑满足现代设施