REMI:基于节奏建模的流行钢琴曲生成

REMI:基于节奏建模的流行钢琴曲生成

remi "Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions", ACM Multimedia 2020 remi 项目地址: https://gitcode.com/gh_mirrors/rem/remi

项目介绍

REMI(REvamped MIDI-derived events) 是一种新颖的事件表示法,由黄宇翔和杨亦轩在ACM Multimedia 2020会议上提出,用于将MIDI乐谱转换成文本般的离散令牌。相比现有基于Transformer的音乐创作模型采用的MIDI类事件表示,REMI提供了音乐节奏模式建模所需的节拍上下文。通过使用REMI作为事件表示,研究者训练了一个Transformer-XL模型,能够生成具有表现力、连贯且节奏和谐清晰的一分钟长的流行钢琴音乐,无需任何后期处理来优化结果。此模型还支持局部tempo变化和和弦进展的控制。

项目快速启动

环境准备

首先,确保你的开发环境满足以下依赖:

  • Python 3.6(建议使用Anaconda管理)
  • TensorFlow-GPU 1.14.0 (pip install tensorflow-gpu==1.14.0)
  • miditoolkit (pip install miditoolkit)

下载预训练模型与数据

你可以下载两个预训练检查点用于生成样本:

  • REMI-tempo-checkpoint (约428MB)
  • REMI-tempo-chord-checkpoint (约429MB)

以及提供的MIDI文件数据集(包括本地tempo变化及估计的和弦)。

运行示例

安装完依赖并获取预训练模型后,通过以下代码进行快速启动:

from model import PopMusicTransformer
import os

os.environ['CUDA_VISIBLE_DEVICES'] = '0'

def main():
    # 初始化模型
    model = PopMusicTransformer(checkpoint='REMI-tempo-checkpoint', is_training=False)
    
    # 从零开始生成音乐
    model.generate(n_target_bar=16, temperature=1.2, topk=5, 
                   output_path='./result/from_scratch.mid', prompt=None)
    
    # 基于已有片段继续生成
    model.generate(n_target_bar=16, temperature=1.2, topk=5, 
                   output_path='./result/continuation.mid', prompt='./data/evaluation/000.mid')
    
    # 关闭模型
    model.close()

if __name__ == '__main__':
    main()

应用案例与最佳实践

使用REMI框架,开发者可以探索不同风格和结构的音乐生成。一个最佳实践是结合音乐理论知识,调整温度和top-k参数以控制生成音乐的多样性和可控性。此外,通过自定义MIDI数据集进行微调,可以适应特定作曲风格或个人偏好。

典型生态项目

虽然该仓库专注于REMI模型本身,但其影响扩展到了音乐生成、人工智能作曲、以及音乐教育领域。开发人员可以利用REMI的原理和技术,构建如在线交互式音乐创作平台,或是集成到数字音频工作站(DAW)插件中,为艺术家提供创新工具。


请注意,由于技术进步,依赖项版本可能需适时更新。记得参考最新的仓库说明进行操作。

remi "Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions", ACM Multimedia 2020 remi 项目地址: https://gitcode.com/gh_mirrors/rem/remi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宾其

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值