學習谷歌開源工具Magenta

Magenta介紹

Magenta是谷歌開源的一我的工智能工具,使用tensorflow編寫,能夠自動生成音樂與旋律等。python

github:github.com/tensorflow/… git

操做系統:mac或者ubuntu。github

Magenta下載

python安裝

1)前置安裝

安裝python以前,須要安裝一些其餘東西,防止出錯:sql

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install build-essential python-dev python-setuptools python-pip python-smbus
sudo apt-get install build-essential libncursesw5-dev libgdbm-dev libc6-dev
sudo apt-get install zlib1g-dev libsqlite3-dev tk-dev
sudo apt-get install libssl-dev openssl
sudo apt-get install libffi-dev
sudo apt-get install libbz2-dev
sudo apt-get install libsndfile1
複製代碼

2)下載python3

wget http://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
# 解壓文件
tar -xvzf Python-3.7.0.tgz
# 進入目錄
cd Python-3.7.0
# 配置
./configure --with-ssl
# 編譯
make
# 編譯安裝
sudo make install
複製代碼

下載完成後可使用python3命令進行測試,若是能順利進入python環境就安裝成功啦!shell

magenta環境安裝

安裝完python以後,咱們就該進行magenta項目環境的安裝了。ubuntu

# 下載腳本文件
curl https://raw.githubusercontent.com/tensorflow/magenta/master/magenta/tools/magenta-install.sh > /tmp/magenta-install.sh
# 執行腳本文件
bash /tmp/magenta-install.sh
複製代碼

環境安裝完畢!!!!瀏覽器

使用Magenta

在一開始,咱們先使用官方已經訓練好的模型進行生成鼓點。bash

使用命令下載:curl

wget -o drum https://http://download.magenta.tensorflow.org/models/drum_kit_rnn.mag工具

具體連接在github項目中的每一個modules文件的.md開頭中。

編輯shell腳本

使用命令mkdir建立gen.sh文件,用來生成音樂,內容以下:

BUNDLE_PATH=/root/python_demo/magenta-test/drum_kit_rnn.mag  # 文件地址
CONFIG=drum_kit  # <one of 'one_drum' or 'drum_kit', matching the bundle> 選一個類型
#
drums_rnn_generate --config=${CONFIG} \
    --bundle_file=${BUNDLE_PATH} \
    --output_dir=/root/python_demo/magenta-test/music \
    --num_outputs=10 --num_steps=128 --primer_drums="[(36,)]"
複製代碼

賦予權限後,運行編輯好的腳本文件,將會自動在output_dir目錄生成.midi文件,是否是很神奇!雖然並非很好聽(默默吐槽)。

用本身的midi文件進行訓練

咱們來訓練melody類型的~首先經過midishow平臺,經過評論拿積分進行下載大量的midi流行音樂,而後上傳至ubuntu,進行訓練。

下載地址

midishow平臺:www.midishow.com

1)midi文件轉換成.tfrecord文件

訓練須要將.midi音樂文件轉換成.tfrecord格式的文件,建立並編輯腳本文件,transfer.sh:

# midi文件總目錄地址,如/root/....
INPUT_DIRECTORY=<folder containing MIDI and/or MusicXML files. can have child folders.>

# TFRecord file that will contain NoteSequence protocol buffers.生成目錄的地址
SEQUENCES_TFRECORD=/tmp/notesequences.tfrecord

convert_dir_to_note_sequences \
  --input_dir=$INPUT_DIRECTORY \
  --output_file=$SEQUENCES_TFRECORD \
  --recursive
複製代碼

首行寫上midi文件總目錄,在第二行即SEQUENCES_TFRECORD寫上生成文件安放的目錄,賦予執行權限,運行。

2)生成SequenceExamples

這一步是配置訓練的一系列參數,具體以下:

melody_rnn_create_dataset \
--config=<one of 'basic_rnn', 'mono_rnn', lookback_rnn', or 'attention_rnn'> \ --input=/tmp/notesequences.tfrecord \ --output_dir=/tmp/melody_rnn/sequence_examples \ --eval_ratio=0.10 複製代碼

其中配置咱們選attention_rnn,input寫上咱們以前生成的.tfrecord文件目錄,output_dir寫上要放置的目錄。 將其保存爲config.sh。

3)訓練

最後一步,咱們須要進行模型的訓練,建立train.sh,內容以下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/training_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000
複製代碼

run_dir本身配置便可,是運行的目錄,而後其餘參數仿照上面。訓練次數爲20000次,賦予權限後再此運行。

4)評估

訓練完以後,能夠進行模型的評估,具體腳本代碼以下:

melody_rnn_train \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--sequence_example_file=/tmp/melody_rnn/sequence_examples/eval_melodies.tfrecord \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--num_training_steps=20000 \
--eval
複製代碼

注意,這裏的sequence_example_file是sequence_examples目錄下的另外一個文件。

能夠運行tensorboard去瀏覽器來觀看模型的效果。

tensorboard --logdir=/tmp/melody_rnn/logdir
複製代碼

使用ip:6006進行訪問。

自動生成音樂

接下來,就可使用訓練好的模型來進行訓練啦!!!! 編輯腳本文件gen.sh:

melody_rnn_generate \
--config=attention_rnn \
--run_dir=/tmp/melody_rnn/logdir/run1 \
--output_dir=/tmp/melody_rnn/generated \
--num_outputs=10 \
--num_steps=128 \
--hparams="batch_size=64,rnn_layer_sizes=[64,64]" \
--primer_melody="[60]"
複製代碼

生成目錄本身替換便可。最後就會獲得一份midi文件,將其傳至本地,就能夠聽取啦!!!雖然我很想吐槽這個音樂是真的迷。

總結

magenta是個頗有趣的tensorflow項目,內置了不少功能,在個人學習的過程當中,也遭遇了很是多的坎坷,但也正是由於這些坎坷,才能變強(禿)。

相關文章
相關標籤/搜索