Ateam Tech Blog

エイチームのエンジニアたちによるテックブログ

AIミュージックバトル『弁財天』を観戦してきた

こんにちは。エイチームライフデザイン技術開発室の鈴木です。普段は自然言語処理技術によるテキスト生成技術の開発などをしています。

先日、日本大学文理学部キャンパス内にて行われたAIミュージックバトル『弁財天』というイベントに行ってきました。AIによる音楽生成のドメインは詳しくないのですが、テキスト生成技術と比べて特徴的だと感じた点などを書いていきたいと思います。

イベントの概要

AIミュージックバトル『弁財天』は、AIによる音楽生成の対戦イベントです。与えられた伴奏(課題曲)を入力データとして、予め用意してきたAIを使って5分の制限時間内にアドリブを生成します。事前に行われた予選を勝ち抜いた8名の方が、それぞれ用意してきたモデルを使って、その場でアドリブを生成しました。トーナメント方式になっていて、勝敗は生成された楽曲を聞いた観戦者の投票によって決められました。 私は今回、対戦には参加せず観客席(?)で対戦を見ていました。

▲会場の様子(筆者撮影)

最初は誰がどのようなAIモデルを構築したのか共有されなかったので、純粋に生成された楽曲が良かったかどうかの投票勝負になりました。なお1回戦終了後(つまり全員が一度楽曲を披露した後)には参加者による解法共有LTがあったので、もしかしたらその後は「すごい手法を使っていた」といったバイアスも掛かっていたかもしれません。

どんな手法が用いられていたか

挑戦者は、伴奏データ1を入力としてアドリブの演奏データを出力するようなAIを事前に開発してきます。イベントの公式サイトには「スターターキット」としてサンプルプログラムが用意されていました。スターターキットにはTensorFlowで実装されたLSTM-VAEと、Magentaによるimprov RNNの2種類がありました。今からでもこれらのプログラムを動かす事で、どのように音楽が生成されるのか確認ができると思います。

実際の挑戦者による解法は様々でした。これらスターターキットをベースに開発をしたものもあれば、自然言語処理技術など別のドメインの知識で開発されたモデルもありました。トーナメントの決勝戦はサンプルプログラムのTensorflow版をベースにしたものとMagenta版をベースにしたものとの対戦となり、特定の手法に偏るような事はなく多様な解法が披露されました。私が特に面白いなと思ったのは、画像生成技術を用いて楽譜を生成するという手法でした。

▲共有された解法の中でも画像生成モデルを利用した手法を参考に、筆者にてOpenAI DALL·E 2を用いて楽譜の生成を試みたもの。今回のAIミュージックバトルの規定に適合した形式にはなっていない2ものの、画像生成モデルにマスクした楽譜を与えることで楽曲の生成が可能であることはわかります。

アドリブ音楽生成の特徴的な点

一般的な生成系AIの開発と比べて、今回のイベントで特徴的だと感じた点をいくつか紹介します。

生成結果の再現性

今回のイベントでは、1試合ごとに課題曲が与えられてから制限時間5分以内で結果を提出する必要がありました。そこでどういった出力結果が出ても、その場で出た結果を5分以内に提出します。入力となる課題曲は試合が始まるまで秘密となっているため、AIによってどのような生成結果が出るか事前には分からず、予想外の出力が出てしまう事も考えられます。実際のイベントでは、恐らく想定されていなかったような数小節に及ぶ非常に長いロングトーンだけで楽曲が終わってしまったり、逆に伴奏のリズムに偶然ぴったりハマったことで格好良い演奏となったりしたものも披露されました。

一般的な生成系AIの開発においては、様々な入力に対して安定した結果を返すモデルが高く評価されることが多いのではないかと思います。Kaggle等の機械学習コンペティションでも、モデルの評価用データは十分な量で様々な内容のものが用意されることが普通です。

一方で今回のイベントでは、イベントの場で与えられる限られた少量の入力に対して最も良い楽曲を生成するモデルに高い価値がある、という点が生成モデルの開発とすこし観点が異なっていて面白いと思いました。生成結果の再現性を保証するような対戦形式ではなかったので、もしかしたら同じモデル・同じ課題曲でもう1回対戦したとしても全く異なる結果になったかもしれません。だったとしても、本番一発の勝負の場でより良い演奏をした方が勝利になります。これは産業においてAIを応用するという考え方よりも、ライブの場で音楽を披露する観点に近いのではないかと感じました。

繰り返しの扱い

イベントの途中には、音楽生成を研究されている北原先生によるロングトークがありました。そこで「繰り返しをどうやって生成するかが問題になる」という話がありました。一般にある多くの楽曲は同じモチーフを繰り返し用いることで印象的な曲を構成していますが、それをAIによってどう生成するかが問題のようです。

一方で、普段私は言語モデルによるテキスト生成を仕事で扱っていますが、同じ文章が繰り返し出力されてしまうというのはテキスト生成モデルにおいて一般的な問題です。繰り返しを避けるために、様々な手法が提案されています。例えばHuggingface Transformersには同じ語が繰り返し出力しないように制限を掛けるno_repeat_ngram_sizeというパラメータが存在します。

▲文章生成モデルであるOpenAI GPT-3による、同じ表現が繰り返し出力されてしまう例。なお、ここでは繰り返しの問題が現れやすいようTemperatureのパラメータを意図的に下げています。

このように、テキスト生成モデルにおいて意図しない繰り返しが出力されてしまうことはよく問題となり、繰り返しを避けるために様々な手法があります。一方で音楽の生成になると、効果的な繰り返しをどのように生成するのかが問題になる点が面白いと思いました。

まとめ

AIミュージックバトル『弁財天』は非常に面白いイベントでした。特に、私が普段取り扱っている生成モデルの開発とは技術的には似たものであっても観点が異なってくる点が面白いと思いました。 AIミュージックバトル『弁財天』は第2回も企画されているとの事なので、次回が楽しみです。


  1. 入力として与えられたのは伴奏のMIDIファイルとコード進行を記したテキストファイルです。伴奏のMIDIファイルはプロの作曲家が本イベントのために書き下ろした曲とのことで非常にクオリティが高い反面、AIの入力として扱う難易度は高いとされており、基本的にはコード進行のテキストデータのみを入力として扱っていたのではないかと思います。
  2. 今回のAIミュージックバトルでは生成結果に和音を含めることは禁止されていました。また最終的に楽譜や演奏録音等ではなくMIDIファイルを提出する必要がありました。共有された解法では、楽譜の画像データを読み取ってMIDIファイルに変換する手順まで紹介されていました。