「Stable Diffusionで文章から音楽を作成できるとは?」
「画像も音楽もAIで簡単に作成したい」
このような場合には、Riffusionがオススメです。
この記事では、Riffusionについて解説しています。
本記事の内容
- Riffusionとは?
- Riffusion 簡易Webアプリのシステム要件
- Riffusion 簡易Webアプリのインストール
- Riffusion 簡易Webアプリの動作確認
それでは、上記に沿って解説していきます。
Riffusionとは?
Riffusionとは、リアルタイム音楽生成のためのアプリです。
Riffusion
https://www.riffusion.com/
アプリの機能としては、テキストから音楽を作成できます。
所謂、Text-to-Music(txt2music)ですね。
Riffusion GitHubページ
https://github.com/hmartiro/riffusion-app
上記ページでも、Riffusionはアプリだと主張されています。
しかし、Riffusionの実体はモデルです。
riffusion/riffusion-model-v1 · Hugging Face
https://huggingface.co/riffusion/riffusion-model-v1
Hugging Face上のページで公開されているモデルが、Riffusionの実体になります。
riffusion/riffusion-model-v1
このモデルは、Stable Diffusionで他モデルと同様に利用できます。
例えば、次のプロンプトを利用するとします。
dogs and cats are resting
左が、runwayml/stable-diffusion-v1-5で作成した画像です。
右が、riffusion/riffusion-model-v1で作成した画像になります。
つまり、Riffusionを利用するとスペクトログラム画像を作成できるのです。
そして、このスペクトログラム画像をもとに次のような音楽を作成することができます。
スペクトログラム画像から音楽を生成する機能は、Scipyにも備わっています。
したがって、スペクトログラム画像から音楽を生成するのは何も珍しいことではありません。
現状、このモデルを使ったRiffusion関連のアプリには次のモノがあります。
- Riffusion(公式アプリ)
- Riffusion 簡易Webアプリ
Riffusion(公式アプリ)は、冒頭で紹介しています。
Riffusion 簡易Webアプリは、Hugging Face上のデモになります。
Riffusion 簡易Webアプリ
https://huggingface.co/spaces/fffiloni/spectrogram-to-music
両方とも、ソースが公開されています。
この記事では、ローカルマシンに導入し易いRiffusion 簡易Webアプリを取り上げます。
以上、Riffusionについて説明しました。
次は、Riffusion 簡易Webアプリのシステム要件を説明します。
Riffusion 簡易Webアプリのシステム要件
簡易Webアプリは、Hugging Face上で公開されています。
システム要件は、大きくは次の二つになります。
- Python
- PyTorch
それぞれを以下で説明します。
Python
Pythonのバージョンは、次のPython公式開発サイクルに従います。
バージョン | リリース日 | サポート期限 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
3.11 | 2022年10月25日 | 2027年10月 |
ここでは、PyTorch 3.10を推奨します。
PyTorch 3.10であれば、WindowsでもxFormersが簡単にインストール可能です。
xFormers自体は、必須ではありません。
ただし、xFormersがあればPyTorchの処理を高速化できます。
PyTorch
各自の環境にあったバージョンをインストールします。
基本的には、GPU版PyTorchを利用しましょう。
以上、Riffusion 簡易Webアプリのシステム要件を説明しました。
次は、Riffusion 簡易Webアプリのインストールを説明します。
Riffusion 簡易Webアプリのインストール
Riffusion 簡易Webアプリのインストールは、Python仮想環境の利用をオススメします。
Python仮想環境は、次の記事で解説しています。
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
そして、システム要件としてはGPU版PyTorchをインストール済という状況です。
このような状況において、次の手順でRiffusion 簡易Webアプリのインストールを進めます。
- Riffusion 簡易Webアプリの取得(Hugging Faceから)
- requirements.txtを使った一括インストール
それぞれを下記で説明します。
Riffusion 簡易Webアプリの取得(Hugging Faceから)
Riffusion 簡易Webアプリの取得(Hugging Faceから)
https://huggingface.co/spaces/fffiloni/spectrogram-to-music/tree/main
上記ページでファイルを確認できます。
これだけのファイルなら、一つづつダウンロードするのは可能です。
でも、次のツールで一気にダウンロードします。
huggingface_hubを利用すると、自動的にファイルをダウンロードしてくれます。
huggingface_hubをインストールできたら、次のコードを実行します。
from huggingface_hub import snapshot_download snapshot_download( repo_id="fffiloni/spectrogram-to-music", repo_type="space", revision="main", cache_dir="./")
上記コードを実行すると、ダウンロード処理が開始されます。
ダウンロードは、すぐに終わります。
処理が完了すると、ディレクトリ上に「spaces–fffiloni–spectrogram-to-music」を確認できます。
そして、「snapshots」以下にあるファイル・ディレクトリをコピーします。
「2c5bfcf268704c66c10f7f89e3eadb3c1a7f0bc0」は、リポジトリのバージョンです。
バージョンが更新されれば、この値も変わってきます。
この長たらしいディレクトリより下のモノをコピーしましょう。
コピーしたファイルは、コンテンツルートに保存します。
requirements.txtを使った一括インストール
コンテンツルートには、コピーしたrequirements.txtが存在している状態です。
requirements.txt
--extra-index-url https://download.pytorch.org/whl/cu113 torch torchaudio typing pydub scipy diffusers transformers accelerate
事前に、各自の環境にあったPyTorchをインストールしています
そのため、PyTorch関連は無効にします。
#--extra-index-url https://download.pytorch.org/whl/cu113 #torch #torchaudio
その代わりに以下を追加しておきます。
gradio
gradioについては、次の記事で説明しています。
変更後のrequirements.txt
#--extra-index-url https://download.pytorch.org/whl/cu113 #torch #torchaudio typing pydub scipy diffusers transformers accelerate gradio
変更後のrequirements.txtを利用して、必要なモノを一気にインストールします。
実行するのは、次のコマンドです。
pip install -r requirements.txt
処理完了までは、しばらく時間がかかります。
処理が完了したら、Riffusion 簡易Webアプリのインストールは終了です。
Riffusion 簡易Webアプリの動作確認
Riffusion 簡易Webアプリの動作確認を行います。
ダウンロードしたapp.pyを実行します。
初回時は、モデルのダウンロードが始まります。
これが、Riffusionの本体と言えるモデルです。
ファイル容量は、5.1GBほどになります。
app.pyが無事に起動すれば、次のように表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
では、Chromeなどのブラウザで「http://127.0.0.1:7860」にアクセスします。
Hugging Face上のデモと同じ画面を確認できます。
では、実際に動かしてみましょう。
Installation of Riffusion to generate music from text
この記事の英訳タイトルを入力します。
入力できたら、「Get a new spectrogram!」ボタンをクリック。
スペクトログラムの画像も確認できますね。
この画像を作成するのが、Riffusionの機能になります。
スペクトログラム画像から音声への変換は、Riffusionの機能ではないということです。
あくまで、Riffusionはモデルに過ぎません。
また、10秒程度で音楽(8秒の再生時間)が生成されました。
もっと再生時間の長い音楽を作成したいなら、Duratironを調整しましょう。
生成される音楽は、プロンプトが同じなら毎回似たような音楽となります。
つまり、毎回同じようなスペクトログラム画像が生成されるということです。
もちろん、プロンプトが異なると大きく違った波形の画像が作成されます。
ここまで確認できれば、Riffusion 簡易Webアプリの動作は問題ないでしょう。
以上、Riffusion 簡易Webアプリの動作確認を説明しました。