GPT-2を応用した、Transformerベースの音楽生成AI、「Chord2Melody」がリリースされました。
リリース内容
これまで、日本語版GPT-2プロジェクトを通じて、GPT-2及びTransformerをベースとしたニューラルネットワークの学習について知見を得てきました。
この度、GPT-2を応用した、Transformerベースの音楽生成AI、「Chord2Melody」を作成し、リリースしました。
「Chord2Melody」は、音楽を構成する音符を時間単位に分割し、音階とトラックからなる‘単語’の列を、GPT-2の文章生成と同じように生成する事が出来ます。
これはつまり、AIによる音楽の作曲と言えます。
「Chord2Melody」の特徴は、コード進行からメロディーを生成する機能や、(GPT-2と同じように)途中まで作った曲の続きを作曲する機能がある点です。
「Chord2Melody」は、以下のGitHubにて公開しています。
https://github.com/tanreinama/chord2melody
Related Works
これまで、音楽を生成するAIとしては、敵対的生成ネットワーク(GAN)を使用した、MuseGANがありました。
MuseGANは、AmazonのDeepComposer(Amazonの作曲AI)のベースとして利用されていることでも知られています。
MuseGANでは、音符をpianorollとして扱い、1トラックの情報を2次元の画像状に加工します。そして、複数のトラックを含めた3次元データを、畳み込みニューラルネットワーク(CNN)を使ったGANで生成しています。
一方、Transformerベースの画像を生成するAIとして、Image-GPTがあります。
Image-GPTは、画像を構成する画素を、k-meanによってクラスタリングし、画素の並びを‘単語’列として扱うことで、GPT-2と同じように画像を生成しています。
Image-GPTは、Transformerベースのモデルは、離散的な時系列的データであれば、様々なデータを生成可能な事を示しています。
Our Works
音楽を構成する音符を時間単位に分割し、音階とトラックからなる‘単語’の列を作成しました。
‘単語’の列は、音が鳴っている事を表す‘Note’と、時間を進める事を表す‘Timenote’があり、‘Note’は、トラック(鳴らす楽器)と、音階を表す固有のIDからなっています。
‘Timenote’は、音楽を16分音符単位で時間的に分割し、次の単位へと移動することを表します。
つまり、「NoteA・NoteB・NoteB・Timenote」という単語の進行は、A,B,Cという三つの音を同時にならす和音の、16分音符分の時間を表しています。
学習させたデータは、Lakh Pianoroll Datasetを使用し、Data Augmentationとしてランダムに変調したデータを6倍用意しました。
そのデータを、GPT-2と同等のTransformerベースのモデルに学習させました。
モデルは、12層のヘッダー、12層のTransformers、768のノード数、1024のコンテキスト数からなり、GPT-2(117M)と同等の深さがあります。
Lakh Pianoroll Datasetは、5トラックからなるデータと、17トラックからなるデータがあるので、学習したモデルも2種類あります。
トラック数により出力される‘単語’の総数が変わるので、モデルのパラメーターも異なります。各モデルは、それぞれ86,167,296個と86,941,440個のパラメーターからなっています。
Samples
「Chord2Melody」が生成した音楽のサンプルは、以下のURLからダウンロード出来ます。
https://github.com/tanreinama/chord2melody/tree/main/samples