はじめに
自動作曲関連のAI技術を調べていたところ、「Music Transformer」が面白そうだったので実験してみました。
基本的には公開されているColabのコードを動かすだけで試せますが、一部注意点もあったのでメモしておきます。
Music Transformerとは
自然言語処理分野を中心にもはや定番となっているTransformerを音楽生成に適用したネットワーク。2018年にGoogleが発表したもの。
(Music Transformer: Generating Music with Long-Term Structure)
これ以前にもLSTMなどを使った自動作曲モデルはありましたが、音楽において重要である時間的な繰り返しを上手く扱えないという課題がありました。
それに対し、Music Transformerでは長い時間スケールにわたって繰り返し構造が生み出され、より高度な音楽生成が可能となっています。
Music Transformerについて詳細はこちらの解説記事がとてもわかりやすいです。
実験
以下のColabページでMusic Transformerを試すことができます。
Generating Piano Music with Transformer
機能として、以下のような事が可能です。
- ランダムに音楽生成
- 指定した曲に続く音楽を予測して生成
- 指定したメロディに対して伴奏を生成
やってみたこと
今回はシンプルな入力として、童謡『かえるの合唱』の冒頭15秒ほどを与えて続きの生成を試してみました。
Colabの「Choose Priming Sequence」にて「Upload your own」を選択し、作成しておいた『かえるの合唱』のmidiファイルを指定しました。
この時、max_primer_secondsにより冒頭の何秒を入力として使用するかを指定できます。
そして、「Generate Continuation」を実行し続きの生成を行いました。
※注意点として、モデルのセットアップ時点でnumpy関連のエラーが出る場合があります。
自分の場合、numpyのバージョンを変更(1.21.5 --> 1.19.5)することで解決しました。
結果
結果は以下のような感じになりました。可視化ツールとしてシンセシアを使用しています。
最初の約15秒(緑色)が入力として与えた部分で、それ以降の青色がMusic Transformerによる生成結果です。
入力として与えた曲の内容(スケールや3度の進行)を再利用しつつ、微妙にアレンジを加えてくれているのがわかります。
他にも何曲か(リスト) で試してみましたが、曲によってはアレンジがかなり独創的な物もあり面白かったです。
おわり
自動作曲モデルのMusic Transformerで遊んでみました。
他にもTransformerを使った音楽生成ネットワークとして「MuseNet」というものもあるようなので、
そちらも今度試してみたいと思います。