文章から音楽を生成するRiffusionのインストール

文章から音楽を生成するRiffusionのインストール 機械学習

「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を利用するとスペクトログラム画像を作成できるのです。
そして、このスペクトログラム画像をもとに次のような音楽を作成することができます。

test.mp3

スペクトログラム画像から音楽を生成する機能は、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.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月
3.112022年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アプリの動作確認を説明しました。

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