LoginSignup
3

More than 1 year has passed since last update.

MagentaでAIを学習させて音楽を作る方法

Last updated at Posted at 2022-02-10

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/b61c7be999c448583075
https://qiita.com/ysk8888/items/6ea1ff39ea17a55384c7
https://github.com/magenta/magenta/tree/main/magenta/models/performance_rnn

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
3