⛔ Ce projet n'est plus activement maintenu.

La riffusion est une bibliothèque pour la musique et la génération audio en temps réel avec une diffusion stable.
Lisez à ce sujet sur https://www.riffusion.com/about et essayez-le sur https://www.riffusion.com/.
Il s'agit du référentiel de base pour l'image de riffusion et le code de traitement audio.
Référentiels connexes:
Si vous construisez sur ce travail, veuillez le citer comme suit:
@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}
}
Testé en CI avec Python 3.9 et 3.10.
Il est fortement recommandé de configurer un environnement Python virtuel avec conda ou virtualenv :
conda create --name riffusion python=3.9
conda activate riffusion
Installez les dépendances Python:
python -m pip install -r requirements.txt
Afin d'utiliser des formats audio autres que WAV, FFMPEG est requis.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Si Torchaudio n'a pas de backend, vous devrez peut-être installer libsndfile . Voir ce problème.
Si vous avez un problème, essayez de mettre à niveau les diffuseurs. Testé avec 0,9 à 0,11.
Guides:
cpu est pris en charge mais est assez lent.
cuda est le backend recommandé et le plus performant.
Pour utiliser avec CUDA, assurez-vous que la torche et la torch audio aient installé avec le support CUDA. Voir le guide d'installation ou les roues stables.
Pour générer de l'audio en temps réel, vous avez besoin d'un GPU qui peut exécuter une diffusion stable avec environ 50 étapes en moins de cinq secondes, comme un 3090 ou A10G.
Test la disponibilité avec:
import torch
torch . cuda . is_available () Le backend mps sur le silicium Apple est pris en charge pour l'inférence, mais certaines opérations se retournent au CPU, en particulier pour le traitement audio. Vous devrez peut-être définir PYTORCH_ENABLE_MPS_FALLBACK=1 .
De plus, ce backend n'est pas déterministe.
Test la disponibilité avec:
import torch
torch . backends . mps . is_available ()La riffusion est livrée avec une interface de ligne de commande pour effectuer des tâches communes.
Voir les commandes disponibles:
python -m riffusion.cli -h
Obtenez de l'aide pour une commande spécifique:
python -m riffusion.cli image-to-audio -h
Exécuter:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
La riffusion contient une application rationalisée pour une utilisation et une exploration interactives.
Courir avec:
python -m riffusion.streamlit.playground
Et accès à http://127.0.0.1:8501/
La riffusion peut être exécutée en tant que serveur FLASK qui fournit une inférence via l'API. Ce serveur permet à l'application Web d'exécuter localement.
Courir avec:
python -m riffusion.server --host 127.0.0.1 --port 3013
Vous pouvez spécifier --checkpoint avec votre propre répertoire ou votre ID HuggingFace au format diffuseurs.
Utilisez l'argument --device pour spécifier le périphérique de torche à utiliser.
Le point de terminaison du modèle est désormais disponible sur http://127.0.0.1:3013/run_inference via la demande de poste.
Exemple d'entrée (voir InferenceInput pour l'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
}
}
Exemple de sortie (voir InferenceOutput pour l'API):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
Les tests vivent dans le test/ répertoire et sont implémentés avec unittest .
Pour exécuter tous les tests:
python -m unittest test/*_test.py
Pour exécuter un seul test:
python -m unittest test.audio_to_image_test
Pour préserver les sorties temporaires pour le débogage, définissez RIFFUSION_TEST_DEBUG :
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
Pour exécuter un seul cas de test dans un test:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
Pour exécuter des tests à l'aide d'un périphérique de torche spécifique, définissez RIFFUSION_TEST_DEVICE . Les tests doivent passer avec les backends cpu , cuda et mps .
Installez des packages supplémentaires pour Dev avec python -m pip install -r requirements_dev.txt .
ruffblackmypy Ceux-ci sont configurés dans pyproject.toml .
Les résultats de mypy . , black . et ruff . Doit être propre pour accepter un PR.
CI est exécuté par des actions GitHub à partir de .github/workflows/ci.yml .
Les contributions sont les bienvenues grâce aux demandes de traction.