训练的模型是Melody RNN
,详情查看官方GitHub页面。
参考资料:教练我想写日式流行歌!——黑科技magenta残差网络训练教程
首先安装python、tensorflow、magenta!
……这部分可自行搜索安装教程。
检查安装情况:
cmd:
activate #这个是激活conda虚拟环境,没有虚拟可以不开
python #进python命令行
python:
import tensorflow
import magenta
import magenta.music as mm
3个import都成功就ok了
首先在官方GitHub页面选择要使用的预训练模型,可以点击这个链接下载attention_rnn.mag。
进入有magenta环境的cmd,cd命令进入有attention_rnn.mag
的文件夹,这里起名为melodyRNN。
cd 你的路径\melodyRNN
之后的生成命令中,win路径记得加双\\
。
在本目录中准备一个单独的文件夹(这里叫generate
)用来放输出的音乐,把路径加入下面命令的output_dir
参数中。
在cmd直接输入生成命令,示例为用【60】单音生成:
melody_rnn_generate --config='attention_rnn' --bundle_file=attention_rnn.mag --output_dir=generate --num_outputs=10 --num_steps=128 --primer_melody="[60]"
运行完能看到在输出路径中有新的10个midi文件了。
另一个生成的例子,以“小星星”开头4个音为旋律引子,就是添加了:60, -2, 60, -2, 67, -2, 67, -2:
melody_rnn_generate --config='attention_rnn' --bundle_file=attention_rnn.mag --output_dir=generate --num_outputs=10 --num_steps=128 --primer_melody="[60, -2, 60, -2, 67, -2, 67, -2]"
把要训练的所有mid文件,放到一个新建的文件夹里,这里使用input_mid
。
新建note_sequences
文件夹,用于存放转换的note_sequences,跑命令:
convert_dir_to_note_sequences --input_dir=input_mid --output_file=note_sequences\\notesequences.tfrecord --recursive
新建dataset
文件夹,用于存放数据集
melody_rnn_create_dataset --config=attention_rnn --input=note_sequences\\notesequences.tfrecord --output_dir=dataset --eval_ratio=0.10
用num_training_steps
控制训练步数,首次尝试最好不要设置过高,可以先简单设置为1000。
个人体验训练速度:大约1000步2h46min;2000步4h17min;6000步8h45min……
把dataset刚刚生成的training_melodies.tfrecord
复制到最外面的目录,运行:
melody_rnn_train --config=attention_rnn --run_dir=logdir\\run --sequence_example_file=training_melodies.tfrecord --hparams="batch_size=64,rnn_layer_sizes=[64,64]" --num_training_steps=1000
参考资料:解决在win系统下使用DOS命令开启TensorBoard的问题及方法步骤
打开新的cmd,启动虚拟环境,cd到log文件所在的目录。
activate #没有虚拟环境可以不开
cd 你的路径\melodyRNN\logdir\run\train
tensorboard --logdir=你的路径\melodyRNN\logdir\run1\train
第五步,打开浏览器,查看网址,此时可以看到可视化界面,tensorboard启动完成。
用【60】单音生成:
melody_rnn_generate --config=attention_rnn --run_dir=logdir\\run --output_dir=generate --num_outputs=10 --num_steps=128 --hparams="batch_size=64,rnn_layer_sizes=[64,64]" --primer_melody="[60]"
以“小星星”开头4个音为旋律引子:
melody_rnn_generate --config=attention_rnn --run_dir=logdir\\run --output_dir=generate --num_outputs=10 --num_steps=128 --hparams="batch_size=64,rnn_layer_sizes=[64,64]" --primer_melody="[60, -2, 60, -2, 67, -2, 67, -2]"