首页 > 天际云想 > 基于深度学习算法的乐谱生成器:Music Eye
基于深度学习算法的乐谱生成器:Music Eye
22计算机系
作品介绍

作者:周恩贤 计算机系

指导老师:胡晓林 计算机系

关键词:深度学习、CNNattention、乐谱生成、音乐

 

摘要

我们通过改进一个现有模型,提出了一个基于全卷积神经网络的听谱模型Music Eye,能够高效快速地实现音频文件向midi事件的转换,并且能在有和弦、多音色、多声部的复杂的条件下实现高准确率的识别。

 

数据集制作

我们使用midi文件生成带标注的数据。通过timidity实现midi文件到音频文件的转换,并使用常数Q变换得到的频谱图。为了让模型获得相位信息,我们将频谱图分为模、实部、虚部三个通道。我们通过解析midi文件获得对应的按键事件。

为了防止过拟合,我们使用以下几个数据增强方法:1.加入麦克风录制的噪音。2.对乐曲随机移调,变速,并在乐曲头尾插入可变长度的空白。3.为各声部随机替换乐器。

考虑到运算资源的开销,我们限定每个样本的时间长度为8s。下面是数据的一个样例:

1.输入数据样例

 

从左到右依次为频谱图的实部,频谱图的虚部,对应的midi事件。

 

模型介绍

我们所知的一个相关模型为[1],我们对该模型进行了改进。

将识谱问题表示为一个像素级二分类问题,对于常数Q变换产生的频谱图,我们让频率的坐标为对数坐标,并让一个钢琴按键对应频率轴上的4个像素。如图。模型所做的是为每一个时刻每一个按键输出按键是否被按下,按下是1,没按下是0

2.模型介绍示意图

 

其中,蓝色框从左到右依次为C的根音、一阶泛音、二阶泛音、三阶泛音,而我们最终只需要根音。由于音频是可以重叠的,根音和泛音可能会叠加在一起,会导致根音难以分离,所以这是实现的难点之一。

为了解决泛音的问题,我们在第xxxx层使用很宽(相当于4个八度)的卷积核。为了保留较高的时间分辨率,我们只对频率轴进行池化(池化是由卷积实现的)。模型如图所示:

3. Music Eye 神经网络模型

 

真实样本测试

由于计算资源有限,虽然我们准备了上万首midi文件,但是我们只用了其中的37首,每首通过数据增强得到4个样本,共计148个样本。但是模型依然表现出良好的性能,处理速度约为每0.5s能处理8s的录音。我们在下列几个数据上进行了测试,难度由低到高。为了能有更加直观的感受,我们在附件中提供了输入音频与从输出中重构的音频。

1. 测试集中的midi文件:千本樱,时代前进

2.YouTube上钢琴弹奏的录音: Chopin

3.扬声器播放并用麦克风录制的录音: 卡农

我们发现模型仍有许多不足:1.不能准确识别音长、存在漏音和多音的现象。2.midi音色过拟合。3.在麦克风录音时受到严重干扰。

因此在下一步我们打算:1.加入注意力机制,对音符序列进行建模。2.加大数据量。3.使用增加一些降噪手段,同时更真实的模拟麦克风的滤波。

 

真实样本结果

   部分输入音频与输出音频结果如下(上方为输入音频,下方为输出后重构的音频),链接https://cloud.tsinghua.edu.cn/d/9273445e0ae54154a514/

    1.千本樱

【音频:千本樱-输入

【音频:千本樱-重构

    .卡农

【音频:卡农-输入

【音频:卡农-重构

    3.Chopin

【音频:Chopin-输入

【音频:Chopin-重构

    4.时代前进

【音频:时代前进-输入

【音频:时代前进-重构

 

文献引用

[1].https://www.lunaverus.com/cnn

评论 文明上网理性发言,请遵守评论服务协议
登录  登录后可以发言~
全部评论
主办方
承办方