⛔このプロジェクトは積極的に維持されなくなりました。

Riffusionは、安定した拡散を備えたリアルタイムの音楽とオーディオ生成のライブラリです。
https://www.riffusion.com/aboutでそれについて読んで、https://www.riffusion.com/で試してみてください。
これは、Riffusionイメージとオーディオ処理コードのコアリポジトリです。
関連リポジトリ:
この作業に基づいて構築する場合は、次のように引用してください。
@article{Forsgren_Martiros_2022,
author = {Forsgren, Seth* and Martiros, Hayk*},
title = {{Riffusion - Stable diffusion for real-time music generation}},
url = {https://riffusion.com/about},
year = {2022}
}
Python 3.9および3.10でCIでテストしました。
condaまたはvirtualenvを使用して仮想Python環境をセットアップすることを強くお勧めします。
conda create --name riffusion python=3.9
conda activate riffusion
Python依存関係をインストールします:
python -m pip install -r requirements.txt
WAV以外のオーディオ形式を使用するには、FFMPEGが必要です。
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Torchaudioにバックエンドがない場合、 libsndfileをインストールする必要がある場合があります。この問題を参照してください。
問題がある場合は、ディフューザーをアップグレードしてみてください。 0.9-0.11でテストしました。
ガイド:
cpuはサポートされていますが、非常に遅いです。
cuda 、推奨され、最もパフォーマンスの高いバックエンドです。
CUDAで使用するには、CUDAサポートでトーチとトーチャウディオがインストールされていることを確認してください。インストールガイドまたは安定したホイールを参照してください。
オーディオをリアルタイムで生成するには、3090やA10gなど、5秒未満で約50ステップで安定した拡散を実行できるGPUが必要です。
テストの可用性:
import torch
torch . cuda . is_available ()Apple Siliconのmpsバックエンドは推論のためにサポートされていますが、一部の操作は、特にオーディオ処理の場合はCPUに戻ります。 PYTORCH_ENABLE_MPS_FALLBACK=1設定する必要がある場合があります。
さらに、このバックエンドは決定論的ではありません。
テストの可用性:
import torch
torch . backends . mps . is_available ()Riffusionには、一般的なタスクを実行するためのコマンドラインインターフェイスが付属しています。
利用可能なコマンドを参照してください:
python -m riffusion.cli -h
特定のコマンドのヘルプを取得します。
python -m riffusion.cli image-to-audio -h
実行する:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
Riffusionには、インタラクティブな使用と探索のための流線ライトアプリが含まれています。
実行:
python -m riffusion.streamlit.playground
http://127.0.0.1:8501/にアクセス
Riffusionは、APIを介して推論を提供するフラスコサーバーとして実行できます。このサーバーにより、Webアプリがローカルに実行されます。
実行:
python -m riffusion.server --host 127.0.0.1 --port 3013
Diffusers形式の独自のディレクトリまたはHuggingface IDを使用して--checkpointを指定できます。
--device引数を使用して、使用するトーチデバイスを指定します。
モデルのエンドポイントは、 http://127.0.0.1:3013/run_inference 3013/run_inferenceでPOSTリクエストを介して利用できるようになりました。
インプットの例(APIのInferenceInputを参照):
{
"alpha": 0.75,
"num_inference_steps": 50,
"seed_image_id": "og_beat",
"start": {
"prompt": "church bells on sunday",
"seed": 42,
"denoising": 0.75,
"guidance": 7.0
},
"end": {
"prompt": "jazz with piano",
"seed": 123,
"denoising": 0.75,
"guidance": 7.0
}
}
出力の例(APIのInferenceOutputを参照):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
テストはtest/ディレクトリに存在し、 unittestで実装されています。
すべてのテストを実行するには:
python -m unittest test/*_test.py
単一のテストを実行するには:
python -m unittest test.audio_to_image_test
デバッグのために一時的な出力を保持するには、 RIFFUSION_TEST_DEBUG設定します。
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
テスト内で単一のテストケースを実行するには:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
特定のトーチデバイスを使用してテストを実行するには、 RIFFUSION_TEST_DEVICEを設定します。テストは、 cpu 、 cuda 、およびmpsバックエンドで合格する必要があります。
python -m pip install -r requirements_dev.txtを使用して開発の追加パッケージをインストールします。
ruffblackmypyこれらはpyproject.tomlで構成されています。
mypy . 、 black . 、そしてruff . PRを受け入れるにはきれいでなければなりません。
CIは.github/workflows/ci.ymlからのgithubアクションを使用して実行されます。
貢献は、プルリクエストを通じて大歓迎です。