PR

Mustango: テキストから音楽を紡ぎ出す革新的AIモデル

AI/MachineLearning
スポンサーリンク

はじめに

近年、人工知能(AI)技術の進歩には目を見張るものがあります。特に、テキストから画像を生成する技術は大きな注目を集めています。しかし、テキストから音楽を生成する技術は、まだ発展途上の段階にあります。本記事で紹介する「Mustango」は、この課題に取り組む革新的なアプローチを提案しています。

音楽の生成には特有の難しさがあります。まず、音楽にはテンポ、キー、コード進行など、特定のルールがあり、これらを満たしながら高品質な音楽を生成することは非常に困難です。また、音楽とそれに対応するテキスト説明のペアデータセットの入手が難しいという問題もあります。

Mustangoは、これらの課題に対処するために、音楽ドメインの知識を活用した制御可能な拡散モデルベースのテキストから音楽生成システムを提案しています。このシステムは、一般的なテキストキャプションだけでなく、コード、ビート、テンポ、キーに関する具体的な指示を含む詳細なキャプションで生成される音楽を制御することを目指しています。

それでは、Mustangoの詳細について見ていきましょう。

スポンサーリンク

MusicBench: 音楽生成のための新データセット

Mustangoの開発者たちは、既存のMusicCapsデータセットを拡張して、MusicBenchと呼ばれる新しいデータセットを作成しました。このデータセットは、音楽理論に基づく説明を含むキャプションテキストと拡張された音楽オーディオを含んでいます。

特徴抽出と説明の拡充

MusicBenchの作成にあたり、以下の4つの一般的な音楽特徴を抽出し、テキストプロンプトを強化して音楽生成をガイドするために使用しました:

  1. ビートとダウンビート: BeatNetを使用して抽出
  2. テンポ: ビート間の時間間隔の逆数の平均から推定
  3. コード: Chordinoを使用して抽出
  4. キー: EssentiaのKeyExtractorアルゴリズムを使用して抽出

これらの特徴は、テキスト形式で表現され、元のテキストプロンプトに追加されて詳細なプロンプトを形成します。例えば、「この曲はAマイナーキーです。テンポはAdagioです。ビートは4つです。コード進行はAm、Cmaj7、Gです。」というような形式で表現されます。

データ拡張と音楽の多様化

データセットの拡張のため、音楽オーディオとテキストプロンプトの両方に対して拡張を行いました。これにより、トレーニングデータの総量が11倍に増加し、オーディオ品質とモデルの制御可能性の向上を目指しました。

音楽オーディオの拡張は、以下の3つの次元に沿って個々の音楽サンプルを変更することで行われました:

  1. ピッチ: ±3半音の範囲内でピッチをシフト
  2. スピード: ±(5〜25)%の範囲で速度を変更
  3. ボリューム: 徐々にボリュームを変化させる(クレッシェンドとデクレッシェンドの両方)

テキスト説明も、音楽オーディオの変更に合わせて拡張・修正されました。また、モデルの堅牢性を高めるために、前述の音楽特徴を説明する1〜4つの文をランダムにプロンプトから削除しました。さらに、ChatGPTを使用してテキストプロンプトを言い換え、テキストプロンプトの多様性を高めました。

MusicBenchの構成

MusicBenchデータセットは、元のMusicCapsデータセットから派生し、以下のように構成されています:

  1. TrainA / TestA: 元のMusicCapsデータを分割したもの
  2. TrainB / TestB: 4つの制御文を元のプロンプトに結合したもの
  3. TrainC: ChatGPTを使用してTrainBのテキストプロンプトを言い換えたもの

さらに、音楽オーディオの拡張を行う前に、キャプションに「quality」や「low fidelity」などの用語が含まれるサンプルを除外し、高品質なサンプルのみを使用しました。最終的なMusicBenchデータセットは、52,768サンプルで構成されています。

スポンサーリンク

Mustangoモデルのアーキテクチャ

Mustangoは、2つの主要なコンポーネントで構成されています:

  1. 潜在拡散モデル(Latent Diffusion Model、LDM)
  2. MuNet(Music-Domain-Knowledge-Informed UNet)

潜在拡散モデル(LDM)

MustangoはTangoやAudioLDMに触発され、計算複雑性を低減しつつ拡散モデルの表現力を維持するために潜在拡散モデル(LDM)を活用しています。具体的には、条件 \(\mathcal{C}\) (音楽とテキストの結合条件)を持つ潜在音声事前分布 \(z_0\) の構築を目指します。

前方拡散過程では、潜在音声事前分布 \(z_0\) が標準ガウスノイズ \(z_N \sim \mathcal{N}(\mathbf{0}, \mathbf{I})\) に変換されます。これは以下の式で表されます:

$$q(z_n|z_{n-1}) = \mathcal{N}(1-\beta_n z_{n-1}, \beta_n\mathbf{I})$$

ここで、\(0 < \beta_1 < \beta_2 < \cdots < \beta_N < 1\) は事前にスケジュールされたガウスノイズです。

逆過程では、ガウスノイズ \(z_N \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \)から \(z_0\) を再構築します。この過程では、MuNetを使用して生成される音楽を与えられた条件 \(\mathcal{C}\) に向けて誘導します。

逆拡散過程はノイズ推定損失を用いて訓練されます:

$$\mathcal{L}{DM} = \sum{n=1}^N \gamma_n \mathbb{E}{\epsilon_n \sim \mathcal{N}(\mathbf{0}, \mathbf{I}), z_0} |\epsilon_n – \epsilon\theta^{(n)}(z_n, \mathcal{C})|_2^2$$

ここで、\(\epsilon_\theta^{(n)}\) は推定されたノイズ、\(\gamma_n\) は逆ステップ \(n\) の重みです。

MuNet

MuNetは、音楽ドメイン知識を活用したUNetであり、逆拡散過程中に音楽条件と一般的なテキスト条件の両方を組み込むことができます。MuNetの主要な構成要素は以下の通りです:

  1. UNet: 全体で \(L\) 個のダウンサンプリング、中間、アップサンプリングブロックで構成されています。
  2. 複数の条件付きクロスアテンションブロック:これらは音楽特徴(ビートとコード)とテキスト条件を組み込むために使用されます。
  3. 2つのエンコーダ\(\mathbf{Enc}_b\) と \(\mathbf{Enc}_c\):これらはビートとコードの特徴をエンコードします。これらのエンコーダは、最先端の基本音楽埋め込み(FME)とオンセットとビートに基づく位置エンコーディング(MPE)を活用しています。

MuNetの処理フローは以下のように表現されます:

$$U^{(1)} = z_n$$

$$A_\tau = \text{MHA}{\theta\tau}(Q=U^{(l)}, K/V=\text{FLAN-T5}(\tau))$$

$$A_b = \text{MHA}{\theta_b}(Q=A\tau, K/V=\mathbf{Enc}\mathbf{b}(\mathbf{b}))$$

$$A_c = \text{MHA}{\theta_c}(Q=A_b, K/V=\mathbf{Enc}\mathbf{c}(\mathbf{c}))$$

$$U^{(l+1)} = \text{UNet}\theta^{(l)}(A_c)$$

$$\epsilon_\theta^{(n)}(z_n, \mathcal{C}) := U^{(L+1)}$$

ここで、MHAはマルチヘッドアテンションブロック、FLAN-T5はテキストエンコーダモデルです。

ビートエンコーダ \(\mathbf{Enc}\mathbf{b}\) とコードエンコーダ \(\mathbf{Enc}\mathbf{c}\) は、それぞれ以下のように定義されます:

$$\mathbf{Enc}\mathbf{b}(\mathbf{b}) := \mathbf{W}\mathbf{b}(OH_b(\mathbf{b}[:, 0]) \oplus MPE(\mathbf{b}[:, 1]))$$

$$\mathbf{Enc}\mathbf{c}(\mathbf{c}) := \mathbf{W}\mathbf{c}(FME(\mathbf{c}[:, 0]) \oplus OH_t(\mathbf{c}[:, 1]) \oplus OH_i(\mathbf{c}[:, 2]) \oplus MPE(\mathbf{c}[:, 3]))$$

ここで、\(OH\) はワンホットエンコーディング、\(MPE\) は音楽位置エンコーディング、\(FME\) は基本音楽埋め込みを表します。

推論

トレーニング時には教師強制を使用し、グラウンドトゥルースのビートとコード特徴を使用して音楽生成プロセスを条件付けます。しかし、推論時には、テキストキャプションからビートとコード特徴を予測するために、2つの独立して訓練されたTransformerベースのテキストから音楽特徴生成器を使用します:

  1. ビート予測器:DeBERTa Largeモデルを使用
  2. コード予測器:FLAN-T5 Largeモデルを使用

これらの予測器により、Mustangoは純粋なテキスト入力からも音楽特徴を制御することができます。

スポンサーリンク

実験と評価

Mustangoの性能を評価するために、広範な客観的評価と主観的評価が行われました。

客観的評価

生成された音声サンプルの品質は、以下の3つの客観的指標を用いて評価されました:

  1. フレシェ距離(FD)
  2. フレシェ音声距離(FAD)
  3. Kullback-Leibler(KL)ダイバージェンス

これらの指標は、生成された音楽と実際の音楽との類似性や品質を数値化します。

また、制御可能性の評価には、テンポ、キー、コード、ビートに関する9つの指標が定義されました。これらの指標は、生成された音楽が入力テキストプロンプトの指示にどれだけ忠実であるかを評価します。

主観的評価

一般リスナーと音楽の専門家を対象とした2ラウンドの主観評価が行われました。評価項目には、音声レンダリング品質、テキストプロンプトとの関連性、全体的な音楽品質、リズムの一貫性、音楽の調和と協和性などが含まれます。

スポンサーリンク

Pythonでの使い方

こちらに、公式が提供してくれているDemoがあります。

import IPython
import soundfile as sf
from mustango import Mustango

model = Mustango("declare-lab/mustango")

prompt = "This is a new age piece. There is a flute playing the main melody with a lot of staccato notes. The rhythmic background consists of a medium tempo electronic drum beat with percussive elements all over the spectrum. There is a playful atmosphere to the piece. This piece can be used in the soundtrack of a children's TV show or an advertisement jingle."

music = model.generate(prompt)
sf.write(f"{prompt}.wav", audio, samplerate=16000)
IPython.display.Audio(data=music, rate=16000)
スポンサーリンク

結果と考察

実験結果は、Mustangoが音楽品質と制御可能性の両面で優れた性能を示していることを明らかにしました。特に、MusicBenchデータセットで訓練されたモデルは、MusicCapsで訓練されたモデルよりも優れた性能を示しました。

Mustangoは、音楽特有の指示(コード進行、テンポ、キーなど)に関して、他のモデルよりも高い制御性を示しました。特に、コード制御性に関しては、他のモデルを大きく上回る性能を示しました。

また、MusicBenchデータセットを使用した訓練により、大規模な音声事前訓練なしでも、音楽生成タスクで競争力のある性能を達成できることが示されました。

スポンサーリンク

将来の展望

Mustangoの成功は、テキストから音楽生成の分野に新たな可能性をもたらしました。今後の研究では以下のような方向性が考えられます:

  1. 非西洋音楽への対応:現在のMustangoは西洋音楽を中心に設計されていますが、インド音楽や中国古典音楽など、異なる音楽理論体系を持つ音楽への対応が求められます。
  2. 長時間の音楽生成:現在のMustangoは10秒程度の音楽生成に限定されています。より長い楽曲の生成は、計算リソースの最適化とモデルアーキテクチャの改良が必要となります。
  3. マルチモーダル入力への対応:テキストだけでなく、画像や動画などの視覚情報と組み合わせた音楽生成は、映像制作などの分野で大きな需要があると考えられます。
  4. リアルタイム対話型システムの開発:ユーザーとのリアルタイムな対話を通じて音楽を生成し、即座にフィードバックを反映できるシステムは、音楽教育や作曲支援ツールとして有用でしょう。
  5. 音楽理論に基づいたより高度な構造生成:現在のMustangoは基本的な音楽要素(コード、テンポ、キーなど)を制御できますが、より複雑な音楽構造(例:ソナタ形式、フーガなど)の生成にも挑戦する価値があります。
  6. 低資源言語でのテキストから音楽生成:現在の多くのAIモデルは英語中心ですが、様々な言語でのテキストから音楽生成を可能にすることで、音楽の多様性と文化的包摂性を高めることができるでしょう。
スポンサーリンク

技術的な洞察

Mustangoの成功の鍵は、音楽ドメイン知識を効果的にモデルに組み込んだことにあります。特に、MuNetの設計は注目に値します。

MuNetは、音楽の構造的特徴(ビート、コード)とテキスト情報を統合するために、複数のクロスアテンションレイヤーを使用しています。これにより、生成プロセスの各段階で、音楽とテキストの両方の情報を考慮することができます。

また、基本音楽埋め込み(FME)と音楽位置エンコーディング(MPE)の使用は、音楽理論の知識をモデルに効果的に組み込むための重要な工夫です。FMEは音程の変換不変性を捉え、MPEはビートの構造を表現することで、より音楽的に意味のある表現を可能にしています。

さらに、ビート予測器とコード予測器の導入により、純粋なテキスト入力からでも音楽特徴を制御できるようになりました。これは、Mustangoの汎用性と使いやすさを大きく向上させる重要な機能です。

スポンサーリンク

実用的な応用

Mustangoの技術は、音楽産業や関連分野に多くの実用的な応用可能性を持っています:

  1. 作曲支援ツール:プロの作曲家や音楽プロデューサーが、新しいアイデアを素早く具現化するために使用できます。
  2. 広告・映像制作:特定の雰囲気や感情を表現する音楽を、テキスト指示から迅速に生成することができます。
  3. ゲーム開発:ゲームのシーンや状況に合わせて、動的に音楽を生成することが可能になります。
  4. 音楽教育:学生が音楽理論を実践的に学ぶための対話型ツールとして活用できます。
  5. パーソナライズされた音楽療法:患者の状態や好みに合わせて、即座に適切な音楽を生成することができます。
  6. クリエイティブな音楽探索:アーティストや音楽愛好家が、新しい音楽のアイデアを探索するためのツールとして使用できます。
スポンサーリンク

倫理的考察

Mustangoのような強力な音楽生成AIの登場は、いくつかの倫理的問題も提起します:

  1. 著作権の問題:AIが生成した音楽の著作権をどのように扱うべきか、法的および倫理的な議論が必要です。
  2. アーティストへの影響:AIによる音楽生成が、人間の音楽家やアーティストの創作活動や雇用にどのような影響を与えるかを考慮する必要があります。
  3. 文化的バイアス:現在のモデルは主に西洋音楽に基づいているため、他の文化の音楽表現が適切に扱われない可能性があります。
  4. データの使用と同意:訓練データとして使用される音楽の作者や権利者からの適切な同意取得が重要です。
  5. 音楽の価値:AIによる大量の音楽生成が、音楽の希少性や価値にどのような影響を与えるかを考える必要があります。

これらの問題に対しては、技術開発と並行して、法律、倫理、文化の専門家を交えた継続的な議論と検討が必要です。

スポンサーリンク

結論

Mustangoは、テキストから音楽を生成する技術に大きな進歩をもたらしました。音楽ドメイン知識を効果的に活用し、高度な制御可能性を実現したこのモデルは、音楽生成AIの新たな地平を切り開いたと言えるでしょう。

特に、MusicBenchデータセットの作成と公開は、この分野の研究を加速させる重要な貢献です。また、MuNetの設計は、音楽の構造的特徴とテキスト情報を統合する新しいアプローチを示しています。

Mustangoの成功は、AIによる創造的タスクの可能性を広げるものであり、音楽産業や関連分野に大きな影響を与える可能性があります。同時に、著作権や文化的多様性の問題など、慎重に検討すべき課題も提起しています。

今後、Mustangoのような技術がさらに発展し、より長い楽曲の生成や多様な音楽スタイルへの対応が実現されれば、音楽創作の新たな可能性が開かれるでしょう。ただし、その過程では技術的な課題だけでなく、倫理的・社会的な影響についても十分な議論と検討が必要です。

Mustangoは、AIと音楽の融合がもたらす可能性と課題を示す重要な一歩であり、今後のこの分野の発展が楽しみです。音楽創作の未来は、人間とAIの協調によってさらに豊かなものになるかもしれません。

コメント

タイトルとURLをコピーしました