人工知能で曲を作ってみた

陶芸体験の電動ろくろ体験教室はこちら。

**********************

人工知能とアートの融合を実現するべく、日夜奮闘しているのだが、今回はAIを使って楽曲を作ってみたいと思う。

さて、どうやって作るかだが、かのGoogleが人工知能tensorflowを利用した「Magenta」という楽曲生成プロジェクトをやっているらしいので、それを利用することにした。

インストール方法は、「ubuntu magenta インストール」等でググってみてください。

ああっと。ubuntuのOSが入っていないwindowsの方は、vmwareなどの仮想ソフトを入れてubuntuを導入してみてください。
もしくはwindows10の方は、ubuntuを直接入れられるのでチャレンジして欲しい。
ここら辺も検索すれば出てくるので、ググってみてください。

さて、今回はubuntuがすでに搭載済みの通常のノートパソコンで作ってみることにした。

インストール作業が予想外に手間取り、時間を掛けている暇もないので、dockerを使った簡単インストールの方法を選択した。
インストしたい方は、「docker magenta インストール」等でググってみて欲しい。

さてインストール完了後、コマンドラインを立ち上げて、まずmagentaを起動してみる。

以下、1行です。
$ docker run -it -p 6006:6006 -v /tmp/magenta:/magenta-data tensorflow/magenta

するとmagentaが起動する。

使い方を調べてみると、単音生成とか和音生成など、いろいろあるようだ。
単音生成をやってみたのだが、イマひとつな感触なので和音生成を紹介しよう。

下記のコマンドを入力。
なんでもバッハ調のメロディらしい。

以下、1行です。
# polyphony_rnn_generate –bundle_file=/magenta-models/polyphony_rnn.mag –output_dir=/magenta-data/ –num_outputs=5 –num_steps=256 –primer_pitches=”[62, 65, 68]” –condition_on_primer=true –inject_primer_during_generation=false

出力先は/tmp/magentaディレクトリにMIDI音源として出力されるようだ。

早速、別のコマンドラインを立ち上げて移動する。

$ cd /tmp/magenta
$ ls

すると下記のように、5曲ほどの楽曲が自動生成されている。
2019-04-18_110206_1.mid
2019-04-18_110206_2.mid
2019-04-18_110206_3.mid
2019-04-18_110206_4.mid
2019-04-18_110206_5.mid

ちなみに下記の画像には2回分の10曲が表示されている。

とりあえず適当に聞いてみよう。
下記のコマンドを入力する。

$ timidity 2019-04-18_110206_1.mid

名前がわかりずらいので、リネームしたものをアップしておきました。30秒ちょいの短いやつですが、聞いてみてください。↓

このシリーズはピアノ音源らしいですね。

人工知能の面白い所は、自分で集めたデータを学習させて、オリジナルのモデルが作れるところなんですね。

例えば、HIPHOPの音源をたくさん集めてこのAIに学習させるとします。
すると、HIPHOPの特徴をつかんだAIが出来上がるので、そいつに曲を作らせるとHIPHOP調の曲になるわけです。

今回はデータが揃っていないので、AIに学習させていません。
インストールした時に、すでに学習済みのモデルが入っているので、それを利用して曲を作ったわけです。

時間をみてオリジナルのモデルを作りたいですね。
ゲームに使う音源などは、これで十分作れるでしょう。

このようにAIってのは、自分の足りない部分をアシストしてくれる便利な道具として使えば、非常に使いがいのあるツールなんですね。
曲が作れない、絵が描けない、文章が書けないなど、できないことがあれば、AIに助けてもらって、それらができるようになる。
そんな便利な道具なんです。
みなさんもガンガンに使いこなしてください。

さてこのMagentaですが、好きな楽曲を学習させて、そのうちに名曲を作ってくれるのではと期待しております。
それにはデータ音源集めないとですけどね。

いつかこれで教室のテーマソングでも作ろうかと、計画中です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です