2020/11/08 09:32

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