8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Googleの作曲家AI「Magenta」を使って、バッハ調のメロディを自動作曲してみた

Posted at

#1.はじめに

Tensorflowを用いて自動作曲するAI「Magenta」がGoogleのプロジェクトチームによって作成されてGithub上に公開されています(参照:こちら)。
Magentaを使ってAIに作曲をしてもらおうと思います。

#2.Magentaのインストール

Magentaを使用するには、Magenta本体と学習済みモデルが必要になります。
今回はMagentaプロジェクトが、コンテナ管理ソフト「Docker」向けに提供する設定済み環境を利用します。

##2-1.動作環境
ホストOSには「Ubuntu 16.04 LTS」を使用します。

##2-2.Ubuntu環境でMagentaのインストール
Ubuntu上でターミナルを開きます。
下記のコマンドでDockerをインストールします。
$ sudo apt update
$ sudo apt install docker.io
$ sudo gpasswd -a [スーパーユーザー名] docker
スクリーンショット 2017-12-23 1.09.46.png
スクリーンショット 2017-12-23 1.11.03.png
スクリーンショット 2017-12-23 1.13.22.png
下記コマンドで再起動をします。
$ reboot
スクリーンショット 2017-12-23 1.14.09.png

ターミナルに下記コマンドを入力すれば、Magentaのコンテナが起動します。
$ docker run -it -p 6006:6006 -v /tmp/magenta:/magenta-data tensorflow/magenta
スクリーンショット 2017-12-23 1.18.42.png

#3.Magentaでメロディを作曲してみる

ターミナル上に下記コマンドを入力して、単音の旋律をMIDI形式で出力してみます。

# melody_rnn_generate --config=lookback_rnn --bundle_file=/magenta-models/lookback_rnn.mag --output_dir=/magenta-data/ --num_outputs=5 --num_steps=128 --primer_melody="[60]"

--bundle_file
ここでディープラーニングの学習済みモデルを指定しています。
--output_dir
音楽ファイルの出力先を指定しています。/megenta-data/には/tmp/magentaに割り当てていますので、出力ファイルは/tmp/magenta配下に出来上がります。
--num_outputs
出力する音楽ファイルの数を設定します。
--num_steps
出力する音楽ファイルの長さを指定します。
--primer_melody
出力する音楽の最初の音を指定します。数字はMIDI規格のノート番号に対応しており、60はド(C)の音です。
スクリーンショット 2017-12-23 1.33.08.png

実行すると、/tmp/magentaディレクトリに出力されます。
通常のMIDI形式の音楽ファイルですので、標準のMIDIプレイヤーなどで再生することができます。
スクリーンショット 2017-12-23 1.37.08.png

実際に作曲されたメロディを聞いてみたところ、ちょっとイマイチな印象でした…。

#4.Magentaでバッハ調のメロディを作曲してみる

先ほどは単音のメロディでしたが、次は和音を出力する学習済モデルを使用して作曲してみます。

##4-1.バッハ調のメロディを作曲する

ターミナル上に下記コマンドを入力して、和音の旋律をMIDI形式で出力してみます。

# polyphony_rnn_generate --bundle_file=/magenta-models/polyphony_rnn.mag --output_dir=/magenta-data/ --num_outputs=5 --num_steps=128 --primer_pitches="[60, 64, 67]" --condition_on_primer=true --inject_primer_during_generation=false

スクリーンショット 2017-12-24 1.30.38.png
スクリーンショット 2017-12-24 1.31.16.png

実行すると、/tmp/magentaディレクトリに出力されます。

スクリーンショット 2017-12-24 1.31.31.png

##4-2.「荒城の月」をバッハ調のメロディでアレンジ作曲してみる

「--inject_primer_during_generation」オプションを有効にすることで、指定したメロディ(今回は「荒城の月」)から始まるバッハ調の曲を作成します。
ターミナル上に下記コマンドを入力して、和音の旋律をMIDI形式で出力してみます。

# polyphony_rnn_generate --bundle_file=/magenta-models/polyphony_rnn.mag --output_dir=/magenta-data/ --num_outputs=5 --num_steps=128 --primer_melody="[64, -2, -2, -2, 64, -2, -2, -2, 69, -2, -2, -2, 71, -2, -2, -2, 72, -2, -2, -2, 71, -2, -2, -2, 69, -2, -2, -2, -2, -2, -2, -2]" --condition_on_primer=false --inject_primer_during_generation=true

--primer_melody
冒頭のメロディを指定します。
今回は「荒城の月」を冒頭のメロディとしています。
--condition_on_primerオプションは無効にして、冒頭にメロディを注入する--inject_primer_during_generationを有効にします。

スクリーンショット 2017-12-24 1.33.57.png
スクリーンショット 2017-12-24 1.34.31.png
実行すると、/tmp/magentaディレクトリに出力されます。
スクリーンショット 2017-12-24 1.36.31.png

#5.終わりに

和音作曲の方が曲っぽくなっていました。
ただし、音楽的に美しいかと言われると、、うーん…という感じがします。
Googleプロジェクトでも今後よりよくしていくとのコメントがありますので、期待は大です!

参考にした資料
まるわかり! AI開発 最前線2018 (日経BPムック)

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?