⛔ Dieses Projekt ist nicht mehr aktiv aufrechterhalten.

Riffusion ist eine Bibliothek für Echtzeit-Musik- und Audiogenerierung mit stabiler Diffusion.
Lesen Sie es unter https://www.riiffusion.com/about und probieren Sie es unter https://www.riffusion.com/.
Dies ist das Kern -Repository für Riffusionsbild- und Audioverarbeitungscode.
Verwandte Repositories:
Wenn Sie auf dieser Arbeit aufbauen, zitieren Sie sie bitte wie folgt:
@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}
}
Getestet in CI mit Python 3.9 und 3.10.
Es wird dringend empfohlen, eine virtuelle Python -Umgebung mit conda oder virtualenv einzurichten:
conda create --name riffusion python=3.9
conda activate riffusion
Installieren Sie Python -Abhängigkeiten:
python -m pip install -r requirements.txt
Um andere Audioformate als WAV zu verwenden, ist FFMPEG erforderlich.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Wenn Torchaudio kein Backend hat, müssen Sie möglicherweise libsndfile installieren. Siehe dieses Problem.
Wenn Sie ein Problem haben, versuchen Sie, Diffusoren zu aktualisieren. Getestet mit 0,9 - 0,11.
Führer:
cpu wird unterstützt, ist aber ziemlich langsam.
cuda ist das empfohlene und leistungsstärkste Backend.
Um mit CUDA zu verwenden, stellen Sie sicher, dass Sie mit CUDA -Unterstützung Torch und Torchaudio installiert haben. Siehe die Install- oder Stallräder.
Um Audio in Echtzeit zu generieren, benötigen Sie eine GPU, die eine stabile Diffusion mit ungefähr 50 Schritten in weniger als fünf Sekunden ausführen kann, z. B. 3090 oder A10G.
Testverfügbarkeit mit:
import torch
torch . cuda . is_available () Das mps -Backend für Apple Silicon wird für die Inferenz unterstützt, aber einige Vorgänge fallen auf die CPU zurück, insbesondere für die Audioverarbeitung. Möglicherweise müssen Sie PYTORCH_ENABLE_MPS_FALLBACK=1 festlegen.
Darüber hinaus ist dieses Backend nicht deterministisch.
Testverfügbarkeit mit:
import torch
torch . backends . mps . is_available ()Riffusion wird mit einer Befehlszeilenschnittstelle für gemeinsame Aufgaben ausgeliefert.
Siehe verfügbare Befehle:
python -m riffusion.cli -h
Holen Sie sich Hilfe für einen bestimmten Befehl:
python -m riffusion.cli image-to-audio -h
Ausführen:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
Riffusion enthält eine stromlitische App für die interaktive Verwendung und Erkundung.
Rennen mit:
python -m riffusion.streamlit.playground
Und Zugang unter http://127.0.0.1:8501/
Riffusion kann als Flask -Server ausgeführt werden, der über API inferenziert. Mit diesem Server kann die Web -App lokal ausgeführt werden.
Rennen mit:
python -m riffusion.server --host 127.0.0.1 --port 3013
Sie können angeben --checkpoint im Diffusoren -Format mit Ihrem eigenen Verzeichnis oder einer ID der Umarmung.
Verwenden Sie das Argument --device , um das zu verwendende Torch -Gerät anzugeben.
Der Modellendpunkt ist ab sofort unter http://127.0.0.1:3013/run_inference per Post -Anforderung verfügbar.
Beispieleingabe (siehe InferenceInput für die API):
{
"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
}
}
Beispielausgabe (siehe Inferenzoutput für die API):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
Tests live im test/ Verzeichnis und werden mit unittest implementiert.
Alle Tests durchführen:
python -m unittest test/*_test.py
Einen einzelnen Test durchführen:
python -m unittest test.audio_to_image_test
Setzen Sie RIFFUSION_TEST_DEBUG :
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
Um einen einzelnen Testfall innerhalb eines Tests auszuführen:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
Setzen Sie RIFFUSION_TEST_DEVICE , um Tests mit einem bestimmten Torchgerät auszuführen. Die Tests sollten mit cpu , cuda und mps -Backends bestehen.
Installieren Sie zusätzliche Pakete für Dev mit python -m pip install -r requirements_dev.txt .
ruffblackmypy Diese sind in pyproject.toml konfiguriert.
Die Ergebnisse von mypy . , black . und ruff . muss sauber sein, um eine PR zu akzeptieren.
CI wird durch Github -Aktionen aus .github/workflows/ci.yml ausgeführt.
Beiträge sind durch Pull -Anfragen willkommen.