学习谷歌开源工具Magenta

Magenta介绍

Magenta是谷歌开源的一个人工智能工具,使用tensorflow编写,可以自动生成音乐与旋律等。

github:https://github.com/tensorflow/magenta。

操作系统:mac或者ubuntu。

Magenta下载

python安装

1)前置安装

安装python之前,需要安装一些其他东西,防止出错:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
sudo apt-get install libbz2-dev
sudo apt-get install libsndfile1

2)下载python3

wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
# 解压文件
tar -xvzf Python-3.7.0.tgz
# 进入目录
cd Python-3.7.0
# 配置
./configure --with-ssl
# 编译
make
# 编译安装
sudo make install

下载完成后可以使用python3命令进行测试,如果能顺利进入python环境就安装成功啦!

magenta环境安装

安装完python之后,我们就该进行magenta项目环境的安装了。

# 下载脚本文件
curl https://raw.githubusercontent.com/tensorflow/magenta/master/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
# 执行脚本文件
bash /tmp/magenta-install.sh

环境安装完毕!!!!

使用Magenta

在一开始,我们先使用官方已经训练好的模型进行生成鼓点。

使用命令下载:

wget -o drum https://http://download.magenta.tensorflow.org/models/drum_kit_rnn.mag

具体链接在github项目中的每个modules文件的.md开头中。

编辑shell脚本

使用命令mkdir创建gen.sh文件,用来生成音乐,内容如下:

BUNDLE_PATH=/root/python_demo/magenta-test/drum_kit_rnn.mag  # 文件地址
CONFIG=drum_kit  # <one of 'one_drum' or 'drum_kit', matching the bundle> 选一个类型
#
drums_rnn_generate --config=${CONFIG} \
    --bundle_file=${BUNDLE_PATH} \
    --output_dir=/root/python_demo/magenta-test/music \
    --num_outputs=10 --num_steps=128 --primer_drums="[(36,)]"

赋予权限后,运行编辑好的脚本文件,将会自动在output_dir目录生成.midi文件,是不是很神奇!虽然并不是很好听(默默吐槽)。

用自己的midi文件进行训练

我们来训练melody类型的~首先通过midishow平台,通过评论拿积分进行下载大量的midi流行音乐,然后上传至ubuntu,进行训练。

下载地址

midishow平台:https://www.midishow.com

1)midi文件转换成.tfrecord文件

训练需要将.midi音乐文件转换成.tfrecord格式的文件,创建并编辑脚本文件,transfer.sh:

# midi文件总目录地址,如/root/....
INPUT_DIRECTORY=<folder containing MIDI and/or MusicXML files. can have child folders.>

# TFRecord file that will contain NoteSequence protocol buffers.生成目录的地址
SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord

convert_dir_to_note_sequences \
  --input_dir=$INPUT_DIRECTORY \
  --output_file=$SEQUENCES_TFRECORD \
  --recursive

首行写上midi文件总目录,在第二行即SEQUENCES_TFRECORD写上生成文件安放的目录,赋予执行权限,运行。

2)生成SequenceExamples

这一步是配置训练的一系列参数,具体如下:

melody_rnn_create_dataset \
--config=<one of 'basic_rnn', 'mono_rnn', lookback_rnn', or 'attention_rnn'> \
--input=/tmp/notesequences.tfrecord \
--output_dir=/tmp/melody_rnn/sequence_examples \
--eval_ratio=0.10

其中配置我们选attention_rnn,input写上我们之前生成的.tfrecord文件目录,output_dir写上要放置的目录。
将其保存为config.sh。

3)训练

最后一步,我们需要进行模型的训练,创建train.sh,内容如下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/training_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000

run_dir自己配置即可,是运行的目录,然后其他参数仿照上面。训练次数为20000次,赋予权限后再此运行。

4)评估

训练完之后,可以进行模型的评估,具体脚本代码如下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/eval_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000 \
--eval

注意,这里的sequence_example_file是sequence_examples目录下的另一个文件。

可以运行tensorboard去浏览器来观看模型的效果。

tensorboard --logdir=/tmp/melody_rnn/logdir

使用ip:6006进行访问。

自动生成音乐

接下来,就可以使用训练好的模型来进行训练啦!!!!
编辑脚本文件gen.sh:

melody_rnn_generate \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--output_dir=/tmp/melody_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--primer_melody="[60]"

生成目录自己替换即可。最后就会得到一份midi文件,将其传至本地,就可以听取啦!!!虽然我很想吐槽这个音乐是真的迷。

总结

magenta是个很有趣的tensorflow项目,内置了很多功能,在我的学习的过程中,也遭遇了非常多的坎坷,但也正是因为这些坎坷,才能变强(秃)。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值