LoginSignup
0
0

AIによる東方風な音楽生成:Google Music Transformerを活用した「Super Piano 3」

Posted at

はじめに

このコードは、Google Music Transformerを利用して長期構造を持つ音楽を生成するためのもので、「Super Piano 3」というプロジェクトの一部です。以下、コードの各セクションについて詳細な解説をします。


こちらの記事もおすすめ

環境設定と依存関係のインストール

まず、Google Colabでの作業を開始するためにGoogle Driveをマウントします。


from google.colab import drive
drive.mount('/content/drive')

次に、必要なライブラリ(PyTorch、TorchVisionなど)をインストールし、GPUが利用可能かを確認します。また、必要なリポジトリをクローンします。


!pip install torch==1.13.1+cu117 torchvision==0.14.1+cu117 torchtext==0.14.1 torchaudio==0.13.1 torchdata==0.5.1 --extra-index-url https://download.pytorch.org/whl/cu117
!nvcc --version
!nvidia-smi
!git clone https://github.com/asigalov61/midi-neural-processor
!git clone https://github.com/asigalov61/MusicTransformer-Pytorch
# その他必要なライブラリのインストール

データセットの準備

MAESTROデータセットをダウンロードし、解凍します。また、カスタムMIDIデータセットの準備も可能です。


!wget 'https://storage.googleapis.com/magentadata/datasets/maestro/v2.0.0/maestro-v2.0.0-midi.zip'
!unzip maestro-v2.0.0-midi.zip
# カスタムMIDIデータセットの準備

今回は東方のMIDIデータセットを使用しました。

こちらの方々のデータをお借りしました。

モデルのトレーニング

トレーニングのパラメータを設定し、モデルのトレーニングを開始します。

パラメータは下記のようにUIで設定できるようにしました。解説もそちらをご覧ください。

file


# トレーニングパラメータの設定
input_dir = "./dataset/e_piano"
output_dir = "/content/drive/MyDrive/MusicTransformer-Pytorch/rpr"
# その他のパラメータ設定
!python3 train.py -input_dir "./dataset/e_piano" -output_dir "/content/drive/MyDrive/MusicTransformer-Pytorch/rpr" -weight_modulus 5 -print_modulus 5 -n_workers 10 -batch_size 4 -epochs 100 -max_sequence 2048 -n_layers 6 -num_heads 8 -d_model 512 -dim_feedforward 1024 -dropout 0.1 --rpr

モデルの評価と結果の可視化

トレーニングされたモデルを評価し、結果をグラフで可視化します。


!python3 evaluate.py -model_weights /content/MusicTransformer-Pytorch/rpr/results/best_acc_weights.pickle --rpr
# 精度と損失のグラフ表示

file

音楽生成

トレーニングされたモデルを使用して、新しいMIDI音楽を生成します。


!python generate.py -output_dir output -model_weights=$select_model --rpr -target_seq_length=$number_of_tokens_to_generate -num_prime=$priming_sequence_length -max_sequence=$maximum_possible_output_sequence $custom_MIDI

結果の保存とGoogle Driveへのアップロード

生成されたMIDIファイルを保存し、必要に応じてGoogle Driveにアップロードします。

このコードは、音楽生成において先進的なアプローチを用いており、長期的な音楽構造の生成に焦点を当てています。また、カスタムMIDIデータセットを使用する柔軟性も提供しています。

Google Colab

0
0
0

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
  3. You can use dark theme
What you can do with signing up
0
0