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

Python

はじめに

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


こちらの記事もおすすめ

【作曲AI】AIを使って曲を作成しよう!【suno.ai】
はじめにこんにちは!今回は、AIを使って曲を作る方法をご紹介します。従来のBGMのようなものだけでなく、人の声が入った曲も作れる時代になりました。興味を持った方は、以下の手順に従って一緒に挑戦してみましょう!解説動画 @maki.sunw...
CG制作もChatGPTでワンパン~BlenderとChatGPTを活用して簡単にオーディオビジュアル(オーディオスペクトラム)を作成しよう!~
はじめにBlender とChatGPT の組み合わせて、あっと驚く簡単さでオーディオビジュアルを作る方法を学びましょう!初心者の方でも分かりやすく解説していきますので、ぜひ最後までご覧ください。解説動画 @maki.sunwood.ai...

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

まず、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データセットを使用しました。

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

自作東方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

Google Colaboratory

コメント

タイトルとURLをコピーしました