cedro-blog

MusicGenで、テキストと参考メロディーから音楽を生成する。

1.はじめに

 今回ご紹介するのは、テキストと参考メロディーから音楽を生成するMusicGenという技術です。

2.MusicGenとは?

  MusicGenは、条件付き音楽生成タスクの新しいアプローチで、圧縮された離散音楽表現を操作する単一の言語モデル(LM)です。これは以前の方法とは異なり、単一ステージのトランスフォーマーと効率的なトークン・インターリーブ・パターンを利用し、複数モデルのカスケード接続を不要にしています。

3.コード

 この[リンク]をクリックすると、Google Colab を開くことが出来ます。コードは、UI操作が可能なGradioを使用しているため、たった1つのコードブロックがあるだけです。これを実行します。

 このログが表示されたら、Running on public URL(赤枠内)をクリックすると、別のタブに下記の画面が表示されます。

 まず、テストデータで試してみましょう。画面下にあるExamplesから一番上の行(赤枠)をクリックすると、Input Text Melody Condition (optional) に自動的にテストデータがセットされます。そうしましたら、「送信」ボタン(赤枠)をクリックして下さい。最初の音楽生成には少し時間が掛かります(2〜3分)が、2回目以降はもっと早くなります。

 

 処理が完了すると、下記のように右上に曲が生成されますので聞いてみましょう。曲の右肩をクリックするとダウンロード出来ます。

 なお、自分のデータでやる場合は、Input Text に英文を記入し、Melody Condition (optional)に自分のPCから曲をアップロードして、「送信」ボタンを押して下さい。なお、設定の中で、Dulationは曲の長さ(秒)、Modelはテキストのみから曲を生成するモデル(medium, small, large)も選択することが出来ます。

https://cedro3.com/wp-content/uploads/2023/06/tmpkocscuxu.mp4

 これは、バッハの曲を参考に「An 80s driving pop song with heavy drums and synth pads in the background(重厚なドラムとシンセパッドをバックに据えた、80 年代のドライブ感あふれるポップソング)」という文から生成した曲です。

 Examplesの4行目でも、やってみましょう。

https://cedro3.com/wp-content/uploads/2023/06/tmp_sekou37.mp4

 これは、バッハの曲を参考に「a light and cheerly EDM track, with syncopated drums, aery pads, and strong emotions(シンコペーションされたドラム、軽やかなパッド、そして強い感情を備えた、軽くて陽気な EDM トラック)」という文から生成した曲です。

(サンプルURL)https://ai.honu.io/papers/musicgen/

(オリジナルgithub)https://github.com/facebookresearch/audiocraft