AIで音楽を自動生成したり、絵を描かせることが実用的になってきました。
音楽の自動生成としては、GoogleのMagentaが無料で使えますので、これを使わない手はありません。しかし、それだけに、インストール方法は一筋縄ではいかず、ネットにもあまり情報がありません。
わたしも相当手こずりました。
結論から言うと、Apple Siliconつまり、M1 MacでのMagenta導入は断念しました。Tensorflowの導入までは何とかなったのですが、Magentaのインストールがうまくいきません。intelプロセッサ版Macだと、Anaconda3やMiniforgeを使うことで成功するのですが、M1 Macではうまくいきません。
M1 Macでの導入は、Python3.7が簡単にインストールできないことがネックになっています。
M1 Mac上でintel Macのアプリを動かすソフトとして、Rosetta2があります。これをターミナル上で動かしてみたらどうか、試してみました。
結果として、magentaのインストールは成功しました。しかし、実際に動かしてみようとしたところ、その前提となるtensorflowを動かすことができないため、magentaも稼働させることができませんでした。
ターミナルは、Rosettaで開きます。
仮想環境のためのpyenvが入っている場合は、うまくいかないため、削除しておきます。Pythonは、3.7と3.8で試してみました。Miniforgeを使ってintel Macと同じように仮想環境の設定からmagentaのインストールまで行ってみたところ、うまくいきました。
しかし、magentaを実行してみると、tensorflowが動きません。
“zsh: illegal hardware instruction python”
というエラーが発生してしまいます。どうやら、Rosetta2上で動かしたとしても、intel Macと同じようには動かせない、ということなのだと思います。
では、Appleが提供している、tensorflow plug-inを入れてみたらどうか、と試してみました。Pythonは3.8から対応しているとのことで、仮想環境を3.8にしてmagentaをインストールをしてみました。これは成功しましたが、Appleのプラグインはインストールできません。x86対応のものを試してみてもダメです。Rosetta2でx86ならなんでもというわけではないようです。
ここで完全に詰みました。
M1 Mac(arm64)では、Pythonは3.9からしか対応していません。tensorflowのプラグインを動かすことができます。pyenvでPython3.8を入れることも可能ですが、magentaが入りません。
Rosetta(x86)で入れると、magentaをインストールできますが、tensorflowを動かすことができません。
完全にデッドロック状態です。
Pythonはモジュールのバージョン構成が複雑なので、このような問題が生じてしまいます。
幸い、intelプロセッサ版のMacが手元に残っていましたので、そちらでMagentaを使うことにしました、本当は強力なM1 proの能力を使いたかったのですが仕方ありません。
ですので、MacでMagentaを使いたい場合には、intel版をおすすめします。
Anaconda3のインストール
まずは、Pythonの環境を整える必要があります。これが土台になります。
Anaconda3は、こちらからダウンロードしてインストールします。
Anaconda3のインストールは指示に従えばよいので、特に問題は生じないはずです。
pythonを使うためには、ターミナルを起動し、以下のコマンドを入力してconda環境を有効化します。
$ conda activate
conda環境を有効化すると、先頭に(base)が付きますので、「python」と入力するとpythonが使えるようになります。
(base)フォルダ名 $ python
次に、仮想環境を作成します。仮想環境は、別の部屋というイメージです。このまま一つの環境で色々なパッケージを入れていくと不具合が生じたりします。pythonのバージョンを変えたい、と思っても、動かなくなったら困ってしまいますので、安易にバージョンを変えることもできなくなります。
そこで、仮想環境の出番となります。仮想環境を作ることで、別々の部屋を作成し、その部屋の中でしか影響しないようにすれば、複数バージョンのpythonを動かすことも可能になります。
このように、プログラミング開発では、仮想環境の利用は必須となっていますので、早速仮想環境を作りたいと思います。
今回は、Magentaを使いたいので、magenta環境を作りたいと思います。
(base)フォルダ名 $ conda create -n magenta
magenta仮想環境を作成したら、有効化します。
(base)フォルダ名 $ conda activate magenta
すると、先頭が(magenta)に変わります。
(magenta)フォルダ名 $
これで、Magenta開発環境のための箱ができました。ここに、Magentaをインストールしていくことになります。こうしておくことで、magenta環境以外には影響させることがなくなります。最悪、失敗しても、Macの再インストールをすることなく、仮想環境を作り直すことで何度でもやり直すことができます。
Magentaのインストール
Magentaのインストールです。次のコマンドを実行します。
(magenta)フォルダ名 $ curl https://raw.githubusercontent.com/tensorflow/magenta/main/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
bash /tmp/magenta-install.sh
いったんターミナルを閉じます。再びターミナルを開き、magenta環境を有効化します。
Magenta開発環境の設定をします。
git clone https://github.com/tensorflow/magenta.git
(magenta)フォルダ名 $ pip install -e .
これで終了です。ターミナルを閉じ、再びターミナルを開いて、magenta環境を有効にすればMagentaが使えるようになります。
Magentaの起動
magentaフォルダに移ります。ご自身のフォルダ構成をFinderで確認してください。
$ cd magenta
試しに、楽曲を生成してみましょう。
basic_rnn.magはMagentaのgitからダウンロードして、melody_rnnフォルダに放り込んでおきます。また、生成したmidiデータを格納するためのフォルダ(ここでは、Ai-midi)も事前に作成しておきます。
$ python magenta/models/melody_rnn/melody_rnn_generate.py \
--config=basic_rnn \
--bundle_file=/Users/ユーザー名/magenta/magenta/models/melody_rnn/basic_rnn.mag \
--output_dir=/Users/ユーザー名/Ai-midi \
--num_outputs=3 \
--num_steps=64 \
--qpm=120.0 \
--primer_melody="[60]"
Ai-midiに3曲が生成されていると思います。
Magenta Studioをインストールするという方法もある
手軽にMagentaを試してみたい、という場合には、普通のアプリのように操作ができる、Magenta Studioをインストールする、という方法もあります。M1 Macにもインストールすることができます。
ただし、機能はかなり限定的です。本格的にMagentaを使いたい、という場合には、ターミナルから本家Magentaをインストールする必要があります。