2
1

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 3 years have passed since last update.

GoogleAIの音楽生成モデルMagentaをMacbookで動かす:melody_rnn_generate.py(編)

Last updated at Posted at 2021-08-29

( 環境構築 )

前回の記事では、MacbookでMagentaを動かすための環境構築をしました。
前回は、venv環境にpip installでmagentaを入れて、pythonインタプリタでimportするところまでやりました。

今回は、その続きで、以下を行いました。

    1. GitHubリポジトリからMagentaの資源一式を取得
    1. GitHubから貼られているリンク先から、学習済みのモデル(basic_rnn.mag)を取得
    1. 学習済みモデルを格納するフォルダと、生成ファイルを格納するフォルダを作成
    1. __melody_rnn_generate.py__を動かす
    1. Macbookに標準搭載されているGarageBandアプリで、生成された音楽ファイルを再生する

これら5つの作業すべて成功しました:saxophone::guitar::musical_keyboard:

venv環境に入る

Terminal
electron@diynoMacBook-Pro ~ % python3 -m venv venv-test    
electron@diynoMacBook-Pro ~ % source venv-test/bin/activate
(venv-test) electron@diynoMacBook-Pro ~ % 

magentaの学習済みモデルを取得

( 取得元 )

http://download.magenta.tensorflow.org/models/basic_rnn.mag

  • __Pre-trained__の下にある青文字の4つが、4種類の学習済みモデル(へのリンク)

  • __basic_rnn__へのリンク先のURLをコピーする

wgetコマンドで取得

Terminal
wget http://download.magenta.tensorflow.org/models/basic_rnn.mag
Terminal
(venv-test) electron@diynoMacBook-Pro ~ % wget http://download.magenta.tensorflow.org/models/basic_rnn.mag
--2021-08-29 22:09:32--  http://download.magenta.tensorflow.org/models/basic_rnn.mag
download.magenta.tensorflow.org (download.magenta.tensorflow.org) をDNSに問いあわせています... 2404:6800:4004:80b::2010, 172.217.161.80
download.magenta.tensorflow.org (download.magenta.tensorflow.org)|2404:6800:4004:80b::2010|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 13044885 (12M) [binary/octet-stream]
`basic_rnn.mag' に保存中

basic_rnn.mag                                100%[============================================================================================>]  12.44M  52.4MB/s 時間 0.2s     

2021-08-29 22:09:32 (52.4 MB/s) - `basic_rnn.mag' へ保存完了 [13044885/13044885]

(venv-test) electron@diynoMacBook-Pro ~ % ls | grep basic_rnn.mag
basic_rnn.mag
(venv-test) electron@diynoMacBook-Pro ~ % pwd   
/Users/electron
(venv-test) electron@diynoMacBook-Pro ~ % 
  • 任意のフォルダに格納する
  • 今回は、Users/ユーザ名/直下に、__magenta_pretrained_models__フォルダを作り、そこに格納する
Terminal
(venv-test) electron@diynoMacBook-Pro ~ % mkdir magenta_pretrained_models
(venv-test) electron@diynoMacBook-Pro ~ % mv basic_rnn.mag ./magenta_pretrained_models/basic_rnn.mag
(venv-test) electron@diynoMacBook-Pro ~ % ls ./magenta_pretrained_models 
basic_rnn.mag
(venv-test) electron@diynoMacBook-Pro ~ % ls | grep basic_rnn.mag                                   
(venv-test) electron@diynoMacBook-Pro ~ % 
  • magentaモデルから生成される楽曲ファイルの出力先フォルダを作る
  • 今回は、Users/ユーザ名/直下に、__magenta_output_files__フォルダを作り、そこに格納する
  • さっき作った、学習済みモデルの格納先フォルダと、いま作った出力ファイルの格納先フォルダの絶対パスを確認する
Terminal
(venv-test) electron@diynoMacBook-Pro ~ % mkdir magenta_output_files
(venv-test) electron@diynoMacBook-Pro ~ % pwd
/Users/electron
(venv-test) electron@diynoMacBook-Pro ~ % ls /Users/electron/magenta_pretrained_models 
basic_rnn.mag
(venv-test) electron@diynoMacBook-Pro ~ % ls /Users/electron/magenta_output_files     
(venv-test) electron@diynoMacBook-Pro ~ % 

magentaのコード資源一式を取得

( 取得元 )

https://github.com/magenta/magenta.git

Terminal
(venv-test) electron@diynoMacBook-Pro ~ % git clone https://github.com/magenta/magenta.git
Cloning into 'magenta'...
remote: Enumerating objects: 15272, done.
remote: Counting objects: 100% (143/143), done.
remote: Compressing objects: 100% (108/108), done.
remote: Total 15272 (delta 56), reused 79 (delta 35), pack-reused 15129
Receiving objects: 100% (15272/15272), 36.27 MiB | 21.67 MiB/s, done.
Resolving deltas: 100% (11488/11488), done.
(venv-test) electron@diynoMacBook-Pro ~ % ls magenta
AUTHORS			README.md		magenta			setup.cfg
LICENSE			demos			magenta-logo-bg.png	setup.py
(venv-test) electron@diynoMacBook-Pro ~ %

__melody_rnn_generate.py__の格納場所の相対パスを確認

( 相対パス )

  • magenta/magenta/models/melody_rnn/melody_rnn_generate.py
Terminal
(venv-test) electron@diynoMacBook-Pro ~ % ls magenta/magenta/models/melody_rnn
README.md				melody_rnn_create_dataset.py		melody_rnn_model.py			melody_rnn_train.py
__init__.py				melody_rnn_create_dataset_test.py	melody_rnn_pipeline.py			primer.mid
melody_rnn_config_flags.py		melody_rnn_generate.py			melody_rnn_sequence_generator.py
(venv-test) electron@diynoMacBook-Pro ~ % 
(venv-test) electron@diynoMacBook-Pro ~ % ls magenta/magenta/models/melody_rnn | grep melody_rnn_generate.py
melody_rnn_generate.py
(venv-test) electron@diynoMacBook-Pro ~ %
Terminal
(venv-test) electron@diynoMacBook-Pro ~ % python -V
Python 3.7.9
(venv-test) electron@diynoMacBook-Pro ~ % python --version
Python 3.7.9
(venv-test) electron@diynoMacBook-Pro ~ %

実行

Terminal
(venv-test) electron@diynoMacBook-Pro ~ % python magenta/magenta/models/melody_rnn/melody_rnn_generate.py \
> --config=basic_rnn \
> --bundle_file=/Users/electron/magenta_pretrained_models/basic_rnn.mag \
> --output_dir=/Users/electron/magenta_output_files \
> --num_outputs=5 \
> --qpm=120.0 \
> --primer_melody="[60]"

/Users/electron/venv-test/lib/python3.7/site-packages/librosa/util/decorators.py:9: NumbaDeprecationWarning: An import was requested from a module that has moved location.
Import requested from: 'numba.decorators', please update to use 'numba.core.decorators' or pin to Numba version 0.48.0. This alias will not be present in Numba version 0.50.0.
 from numba.decorators import jit as optional_jit
/Users/electron/venv-test/lib/python3.7/site-packages/librosa/util/decorators.py:9: NumbaDeprecationWarning: An import was requested from a module that has moved location.
Import of 'jit' requested from: 'numba.decorators', please update to use 'numba.core.decorators' or pin to Numba version 0.48.0. This alias will not be present in Numba version 0.50.0.
 from numba.decorators import jit as optional_jit
WARNING:tensorflow:From /Users/electron/venv-test/lib/python3.7/site-packages/tensorflow/python/compat/v2_compat.py:96: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.
Instructions for updating:
non-resource variables are not supported in the long term
2021-08-29 22:19:19.319838: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2021-08-29 22:19:19.332913: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArray is deprecated. It will cease to work in GraphDef version 16. Use TensorArrayV3.
2021-08-29 22:19:19.333112: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArrayScatter is deprecated. It will cease to work in GraphDef version 19. Use TensorArrayGradV3.
2021-08-29 22:19:19.333369: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArrayRead is deprecated. It will cease to work in GraphDef version 16. Use TensorArrayReadV3.
2021-08-29 22:19:19.334375: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArrayWrite is deprecated. It will cease to work in GraphDef version 16. Use TensorArrayWriteV3.
2021-08-29 22:19:19.334458: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArraySize is deprecated. It will cease to work in GraphDef version 16. Use TensorArraySizeV3.
2021-08-29 22:19:19.334550: W tensorflow/core/framework/op_def_util.cc:371] Op TensorArrayGather is deprecated. It will cease to work in GraphDef version 16. Use TensorArrayGatherV3.
WARNING:tensorflow:The saved meta_graph is possibly from an older release:
'model_variables' collection should be of type 'byte_list', but instead is of type 'node_list'.
W0829 22:19:19.356595 4522139072 meta_graph.py:884] The saved meta_graph is possibly from an older release:
'model_variables' collection should be of type 'byte_list', but instead is of type 'node_list'.
INFO:tensorflow:Restoring parameters from /var/folders/dw/kq_8pwps5s771nklvc8krws40000gn/T/tmp_ps6istm/model.ckpt
I0829 22:19:19.357554 4522139072 saver.py:1298] Restoring parameters from /var/folders/dw/kq_8pwps5s771nklvc8krws40000gn/T/tmp_ps6istm/model.ckpt
INFO:tensorflow:Beam search yields sequence with log-likelihood: -148.834183 
I0829 22:19:19.736538 4522139072 events_rnn_model.py:380] Beam search yields sequence with log-likelihood: -148.834183 
INFO:tensorflow:Beam search yields sequence with log-likelihood: -147.136459 
I0829 22:19:19.958060 4522139072 events_rnn_model.py:380] Beam search yields sequence with log-likelihood: -147.136459 
INFO:tensorflow:Beam search yields sequence with log-likelihood: -82.408890 
I0829 22:19:20.161226 4522139072 events_rnn_model.py:380] Beam search yields sequence with log-likelihood: -82.408890 
INFO:tensorflow:Beam search yields sequence with log-likelihood: -129.472076 
I0829 22:19:20.370533 4522139072 events_rnn_model.py:380] Beam search yields sequence with log-likelihood: -129.472076 
INFO:tensorflow:Beam search yields sequence with log-likelihood: -150.948441 
I0829 22:19:20.574712 4522139072 events_rnn_model.py:380] Beam search yields sequence with log-likelihood: -150.948441 
INFO:tensorflow:Wrote 5 MIDI files to /Users/electron/magenta_output_files
I0829 22:19:20.578648 4522139072 melody_rnn_generate.py:217] Wrote 5 MIDI files to /Users/electron/magenta_output_files
(venv-test) electron@diynoMacBook-Pro ~ % 

出力ファイルを確認

Terminal
(venv-test) electron@diynoMacBook-Pro ~ % ls /Users/electron/magenta_output_files
2021-08-29_221919_1.mid	2021-08-29_221919_2.mid	2021-08-29_221919_3.mid	2021-08-29_221919_4.mid	2021-08-29_221919_5.mid
(venv-test) electron@diynoMacBook-Pro ~ % 
(venv-test) electron@diynoMacBook-Pro ~ % ls /Users/electron/magenta_output_files | wc -l
      5
(venv-test) electron@diynoMacBook-Pro ~ % 

引数で指定した通り、5個の音楽ファイルがある

__QuickTime Player__では開けない

![](https://user-images.githubusercontent.com/87643752/131252377-b88da114-ad22-4189-be87-942dd3b0c49c.png)

__GarageBandr__で開けた

  • 開けた!

  • 再生もできた!
  • 単純なメロディですが、音もちゃんと鳴りました。

  • 2つ目の生成ファイルも開けた

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?