【Research】深度学习音乐生成

本文探讨了深度学习在音乐生成领域的应用,特别是Compound Word Transformer模型。通过将音乐事件组合成超级令牌,该模型能更好地处理音乐结构。文章详细介绍了数据处理、音乐表示、模型架构,包括Transformer解码器的改进,以及使用Adaptive Sampling Policy来增加生成音乐的多样性和质量。音乐生成的研究结合了符号域和音频域,旨在模仿人类音乐创作过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

音乐生成是音乐信息检索(MIR)的一个研究领域,旨在创造新的音乐。为了理解和比较音乐创作系统,理解人类如何感知、学习和创作音乐是至关重要的。由于不同的原因,不同的人对音乐的感知是不同的。人类音乐创作的工作流程主要由作曲家的文化背景、对音乐的理解和原创性决定。发展作曲家所拥有的初始概念是作曲的一种方法。这个概念除了象征性的或与乐谱有关的音乐思想外,还包括音色或动态等表演元素,特别是当作曲家是一个有成就的音乐家时。初始概念(又称主题)的延续是由作曲家在写音乐作品时做出的决定来进行的。更多的MIR领域,如音频乐器分类或自动和弦识别(ACR)涉及到基于AI的音乐生成[1]。为了对音乐的结构进行建模,音乐可以被解释为一种分层结构的语言。根据数据的输入和输出特征,基于人工智能的音乐生成基本上可以从两个角度来看:符号域(symbolic domain)和音频域(audio domain)。

相关研究解析(含代码)

  • Music Transformer(2019):首次使用Transformer
  • Pop Music Transformer(2020):REMI音乐表示
  • Compound Word Transformer(2021)【论文】|【代码】:CP音乐表示
  • Multitrack Music Transformer(2022):多轨音乐

Compound Word Transformer(2021)

创新点

  1. 之前的模型平等地对待了每种type,现将types分类,分成note types、metric types等。
  2. 提出一个新的transformer decoder:对不同的token type使用不同的feed-forward heads。
  3. 使用expansion-compression trick:将相近的token组合成compound words。
  4. 展示了结果可以用图论表达(discrete-time dynamic directed hypergraphs)。

0. 训练集处理

  1. From audio to midi_transcribed:Onsets and Frames转录到midi文件
  2. From midi_transcribed to midi_synchronized:beat/downbeat tracking,时间映射到节拍上,beat resolution=480
  3. From midi_synchronized to midi_analyzed:和弦识别,节奏抽取。 (chord token)
  4. From midi_analyzed to Corpus:量化音符(duration, velocity, bpm),添加EOS结束token
  5. From Corpus to Representation:选择CP或REMI作为表示
    1. corpus -> events:排列方式
    2. events -> words:数值化
    3. compile:丢弃过长歌曲,为特定模型转换数组形状,生成length mask 

最终数据集Pop1k7转换CP:train_data.shape= (歌曲数量,歌曲长度,7),其中7为token数

Pop1k7转换CP for transformer-XL:train_data.shape= (BATCH, GROUP,WINDOW,7)

# Corpus 字典
# dict_keys(['notes', 'chords', 'tempos', 'labels', 'metadata']

'notes': {0: defaultdict(list,
              {0: [Note(start=-9, end=1474, pitch=45, velocity=60)],
               240: [Note(start=294, end=959, pitch=52, velocity=62)],
               480: [Note(start=470, end=1095, pitch=56, velocity=58)],
               600: [Note(start=648, end=844, pitch=61, velocity=64)],
               840: [Note(start=812, end=1460, pitch=64, velocity=70)],
               960: [Note(start=959, end=1460, pitch=52, velocity=62)],

'chords': defaultdict(list,
            {0: [Marker(text="N_N_N", time=0), Marker(text=&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值