#NSynthとは
アートや音楽を機械学習で作り出す事を目指す「Magenta」プロジェクトは、そのソースコードがGitHubで公開されています。「Magenta」はリカレントニューラルネットワークを利用して音楽を学習し、学習済みのモデルから新しい音楽を生み出そうとしているようです。「Magenta」の入力形式はMIDIファイルであり、通常のCD音源では学習することができません。しかしながら「Magenta」レポジトリの中にひっそりと置かれる「NSynth」は、WaveNet(※)を利用した音のオートエンコーダーで16次元の特徴空間にエンコードすることが可能です。
※DeepMindが提案した生音を生成するニューラルネットワークのモデル。グーグルアシスタントに搭載されている。詳しくはWeb pageをご参照ください。
生音とNsynthでエンコード・デコードした音楽を比較のために掲載します。
(元の音源) https://soundcloud.com/yu-suzuki-8/skoz-04-skoz-sympho-nick
(デコード後) https://soundcloud.com/yu-suzuki-8/gen-skoz-04-skoz-sympho-nick-embeddings
元の音源は4分30秒ほど、デコード後の音源は20秒ほどですが、初めの20秒のみ比較してお聞きください。
#データセット
学習用の音楽データセットは著作権があったり、有償のものだったりで、無料でライセンスがフリーなものはなかなか良いものが見つかりませんでしたが、今回は下記のデータベースを使用しました。
項目 | 値 |
---|---|
データベース名 | FMA datasets |
曲数 | 106,574 |
ジャンル | 161 |
URL | http://freemusicarchive.org/music/Devil_Music/ |
GitHub | https://github.com/mdeff/fma |
FMAデータベースはアメリカのネットラジオ 「WFMU」のアーカイブを基に作成されています。
クリエイティブコモンズ4.0ライセンスであるため、改変したり、再配布が可能です。
GitHubにはSVMやディープラーニング等を利用した、ジャンル分類の分析例が紹介されています。
この中から学習のしやすそうな、ブレイクビートの音楽を27曲ダウンロードし学習を行いました。また、学習したモデルに入力するシードとして1曲ダウンロードしました。
#曲生成の方針
以下に曲生成の方針をポン知恵で示します。NSynthでエンコードし、特徴空間の中でLSTMによる学習を行い、最後にNSynthでデコードを行います。
#LSTMのモデル
LSTMのネットワークの構成は以下のようになります。
入力ユニット数、および出力ユニット数の16はNSynthのデコード次元を表しています。
GRUVというライブラリを参考にしました。
#結果
生成された音楽は以下です。シードの約3秒間はブレークビートが聞こえますが、それ以降は前衛音楽のようです。。。
Sound Cloud
#感想
NSynthでエンコードした次元を、そのまま時系列として学習し、そのモデルで音楽を生成することは難しいのかもしれません。しかしながら、生音から学習し、音楽の生成に成功した例は沢山あります。今回、私の試みは上手くいきませんでしたが、是非、皆さんは音楽生成にトライして観てください。google wavenet により生成された音楽はプロが作曲し演奏しているようで素晴らしいです。