Magentaとは、GoogleのAIで曲を作るプロジェクトです。
よくbazelを使った情報がありますが、廃止されたらしいので新しい方法をお伝えします
前提条件 |
---|
Debian系のOSを使用している。 |
Gitコマンドがインストールされている。 |
AnacondaまたはMinicondaが入っている。 |
性能のよいCPUまたはGPUが接続されている。 |
GPUの場合最新版のCUDAがインストールされている。 |
学習させる曲(midi)が~/source-midi にある。 |
~/source-midi には拡張子が.midi または.mid 以外のファイルが入っていない。 |
Magentaのダウンロード
Magentaをダウンロードします。cd
git clone git@github.com:magenta/magenta
# SSH鍵登録されてなければ git clone https://github.com/magenta/magenta
学習の準備
Python環境の整理
Magentaが使う機能の一部にPython3.7で廃止されたものがあるのでAnacondaを使い3.6の環境を作ります。conda create --name py36 python=3.6
conda activate py36
Magentaをインストール
Magentaをインストールします。python3 -m pip install magenta
midiファイル群の変換
midiファイルたちをmagentaにとって都合の良いファイルに変換します。cd magenta/magenta
mkdir ../work
python3 ./scripts/convert_dir_to_note_sequences.py --input_dir=~/source-midi --output_file=~/magenta/work/notesequences.tfrecord --recursive
学習の下準備
学習の下準備をします。python3 ./models/performance_rnn/performance_rnn_create_dataset.py \
--input=~/magenta/work/notesequences.tfrecord \
--output_dir=~/magenta/work/sequence_examples \
--eval_ratio=0.10
学習
いよいよ学習させます。 結構時間かかりますが、途中でCtrl+Cで中断しても良いです。python3 ./models/performance_rnn/performance_rnn_train.py \
--run_dir=~/magenta/work/logdir/run1 \
--sequence_example_file=~/magenta/work/sequence_examples/training_performances.tfrecord \
--num_training_steps=2300 #数字を変更すると何回学習させるかを決められる。例として筆者が一番良いと感じた2300になっている。
曲を完成させる
最後に作曲してから曲の.midiファイルを出力します。python3 ./models/performance_rnn/performance_rnn_generate.py \
--run_dir=~/magenta/work/logdir/run1 \
--output_dir=~/magenta/work/generated \
--num_outputs=1 \
--num_steps=3000 \
--primer_melody="[60]"
完成!
曲が完成しました! 作曲したファイルは~/magenta/work/generatedにあります。納得行かない場合generatedディレクトリを削除して学習のところの最後の数字を変えてもう一度学習してみてください。 ちなみにあの数字は「何回増やすか」なので2300を実行してからさらに2400を実行した場合、合計4700回の学習が行われます。参考文献
https://qiita.com/tackey/items/b61c7be999c448583075https://qiita.com/ysk8888/items/6ea1ff39ea17a55384c7
https://github.com/magenta/magenta/tree/main/magenta/models/performance_rnn