見出し画像

AUTOMATIC1111版WebUIで自動音楽生成

 昨年(2022年)12月、画像生成AIのStable Diffusionを利用して、入力したプロンプトに沿った楽曲を自動生成するRiffusionが公開されました。
 
今回は、Riffusionの仕組みとこれをAUTOMATIC1111版WebUIで利用する方法について説明します。

Riffusionのデモサイトの画面

1.Riffusionの仕組み

 Riffusionは、Seth Forsgren氏とHayk Martiros氏が作成した自動音楽生成AIモデルで、昨年12月にデモサイトが公開され、コードウェブアプリモデルチェックポイントも公開されています。
 以下のデモサイトでは、入力したプロンプトに沿った楽曲をseed値を切り替えながらループ再生してくれます。

 Riffusionは、Stable Diffusion(SD)に調整を加えて、プロンプトから関連する楽曲のスペクトログラム(音の周波数分析の結果について、横軸に時間、縦軸に周波数、信号の強度を各点の明るさや色で表したグラフ)の画像を出力できるように学習させています。
 そして、このスペクトログラム画像をオーディオデータに変換することによって、楽曲を生成する仕組みとなっています。

 言葉はよく分かりませんが、人の歌声も生成されます。また、楽曲でない様々な音も生成できます。
 また、SDと同様に、seed値を変更することで無限のバリエーションを生成することができ、img2img、インペインティング、ネガティブプロンプト、補間などのSDで使用できる機能の多くをそのまま利用することができます。

 また、デモサイトでは、画像生成の要領で、異なる楽曲のスペクトログラム画像の補間画像を複数生成するという手法を使って、異なる楽曲をスムーズに繫げることに成功しています。

Seed Aで生成した画像とSeed Bで生成した画像の間の補間画像を複数生成

〇 Riffusionの公式解説(英語)


2.RiffusionをAUTOMATIC1111版WebUIで利用する方法

(1) Riffusionと追加機能を導入するためのコード

 Riffusionは、モデルチェックポイントが公開されていますので、これを他のモデルデータと同じようにAUTOMATIC1111版WebUI(以下、WebUIと言います。)に導入すれば、入力したプロンプトをスペクトログラム画像に変換することができます。
 なお、新しいモデルデータを追加する方法は、以下のnote記事を参考にしてください。

 さらに、WebUIでRiffusionのスペクトログラム画像から楽曲を再生する追加機能Riffusion extension for AUTOMATIC1111 Web UIのコードをenlythさんが公開しており、これらを組み合わせれば、WebUIでRiffusionを利用することができます。

 実際に、WebUIにRiffusionのモデルチェックポイントを導入し、スペクトログラム画像から楽曲を再生する機能を追加するコードは以下の通りです。

!git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui
!git clone https://github.com/enlyth/sd-webui-riffusion /content/stable-diffusion-webui/extensions/sd-webui-riffusion
!rm /content/stable-diffusion-webui/extensions/sd-webui-riffusion/install.py /content/stable-diffusion-webui/extensions/sd-webui-riffusion/requirements.txt
!pip -q install pedalboard
%cd /content/stable-diffusion-webui
!wget https://huggingface.co/ckpt/riffusion-model-v1/resolve/main/riffusion-model-v1.ckpt -O /content/stable-diffusion-webui/models/Stable-diffusion/riffusion-model-v1.ckpt
!python launch.py --share --xformers --enable-insecure-extension-access

 このコードをColabノートにコピーし、GPUを選択してセルを実行し、Running on public URL:の後のリンクをクリックすると、WebUIの操作画面が立ち上がります。4分半くらいで起動します。
 なお、このコードは、camenduruさんの公開しているコードを利用しています。

(2) 追加機能の利用方法

 操作画面の左下のScriptからRiffusion Audio Generatorを選び、Riffusion enabledにチェックを入れてください。
 次に、通常の画像生成のようにプロンプトに生成したい楽曲の内容を入力し、Generateボタンをクリックすると、5秒くらいでスペクトログラム画像が生成されます。
 その後で、Refresh Inline Audio (Last Batch)のボタンをクリックすると、楽曲再生用の表示が現れます。ここで▶ボタンをクリックすると再生を開始します。

AUTOMATIC1111版WebUIの操作画面の左下部分

 再生時間は5秒間で、縦に点が3つ並んだところをクリックして、楽曲データのダウンロードと再生速度の変更が可能です。
 次に新しいスペクトログラム画像を生成したときは、もう一度、Refresh Inline Audio (Last Batch)のボタンをクリックすると、新しい楽曲に切り替わります。
 また、Riffusionタブに切り替えて、フォルダー内のスペクトログラム画像ファイルを一度にまとめて楽曲ファイルに変換することもできます。


3.プロンプトのアイデア

 プロンプトのアイデアとしては、以下のサイトを参考にしてください。

 次のような言葉がプロンプトとして効果が高いようです。

音楽のジャンル:gospel, jazz, epic, 90s house, uk garage, bubblegum eurodance, reggaeton, lo-fi, synthpop
楽器など:trumpet, sax, saxophone, opera singer
歌手名:Taylor Swift, Caravan Palace, Ariana Grande, Britney Spears
その他:typing, toilet flush, church bells, dog barking

 また、Riffusionのモデルが学習した語彙の巨大なリストも公開されています。このリストの番号の小さい方がよく学習されており、プロンプトの効果が高くなる可能性が高いそうです。
 Riffusionを実際に使用した感想としては、効果のあるプロンプトの種類が少ないと感じました。アメリカで有名な歌手やグループの名前は効果が高いようです。日本の歌手名などは、あまり効果がないようです。


4.感想

 再生時間が5秒間と短く、デモサイトのようにループ再生機能がないのが少し残念です。

 Riffusionは、まだ学習が足りていないのか、プロンプトに対する精度があまり高くないと感じました。今後、このような音楽生成AIが普及していくにしたがって、精度が上がっていくのでしょうか。
 Stable Diffusionの開発元であるStability AIも音楽生成AIを開発中であると聞きます。

 しかし、精度が上がってくると、今度は、画像よりも厳しいと言われる音楽の著作権問題に直面することになるでしょう。
 音楽生成AIは、最近、隆盛を極めているジェネラティブAI(生成AI)の中でも重要な一角を占めるものであり、今後、どのように発展していくのか目が離せません。



いいなと思ったら応援しよう!