⛔ Este proyecto ya no se mantiene activamente.

Riffusion es una biblioteca para la música y la generación de audio en tiempo real con difusión estable.
Lea sobre esto en https://www.riffusion.com/about y pruébelo en https://www.riffusion.com/.
Este es el repositorio central para la imagen de riffusion y el código de procesamiento de audio.
Repositorios relacionados:
Si se basa en este trabajo, cíquelo de la siguiente manera:
@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}
}
Probado en CI con Python 3.9 y 3.10.
Se recomienda configurar un entorno virtual de Python con conda o virtualenv :
conda create --name riffusion python=3.9
conda activate riffusion
Instalar dependencias de Python:
python -m pip install -r requirements.txt
Para usar formatos de audio que no sean WAV, se requiere FFMPEG.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Si Torchaudio no tiene backend, es posible que deba instalar libsndfile . Ver este problema.
Si tiene un problema, intente actualizar los difusores. Probado con 0.9 - 0.11.
Guías:
cpu es compatible pero es bastante lento.
cuda es el backend recomendado y más desempeño.
Para usar con CUDA, asegúrese de tener la antorcha y la torchaudio instaladas con soporte CUDA. Consulte la guía de instalación o las ruedas estables.
Para generar audio en tiempo real, necesita una GPU que pueda ejecutar difusión estable con aproximadamente 50 pasos en menos de cinco segundos, como un 3090 o A10G.
Disponibilidad de prueba con:
import torch
torch . cuda . is_available () El backend mps en Apple Silicon es compatible con la inferencia, pero algunas operaciones recurren a CPU, particularmente para el procesamiento de audio. Es posible que deba establecer PYTORCH_ENABLE_MPS_FALLBACK=1 .
Además, este backend no es determinista.
Disponibilidad de prueba con:
import torch
torch . backends . mps . is_available ()Riffusion viene con una interfaz de línea de comandos para realizar tareas comunes.
Ver comandos disponibles:
python -m riffusion.cli -h
Obtenga ayuda para un comando específico:
python -m riffusion.cli image-to-audio -h
Ejecutar:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
Riffusion contiene una aplicación aerodinámica para uso y exploración interactiva.
Corre con:
python -m riffusion.streamlit.playground
Y acceso a http://127.0.0.1:8501/
La riffusion se puede ejecutar como un servidor frasco que proporciona inferencia a través de API. Este servidor permite que la aplicación web se ejecute localmente.
Corre con:
python -m riffusion.server --host 127.0.0.1 --port 3013
Puede especificar --checkpoint con su propio directorio o ID de Huggingface en formato de difusores.
Use el argumento --device para especificar el dispositivo de antorcha para usar.
El punto final del modelo ahora está disponible en http://127.0.0.1:3013/run_inference a través de la solicitud posterior.
Entrada de ejemplo (ver Inferencia INFULS para la 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
}
}
Ejemplo de salida (ver InferenceOutput para la API):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
Las pruebas viven en la test/ directorio y se implementan con unittest .
Para ejecutar todas las pruebas:
python -m unittest test/*_test.py
Para ejecutar una sola prueba:
python -m unittest test.audio_to_image_test
Para preservar salidas temporales para la depuración, establezca RIFFUSION_TEST_DEBUG :
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
Para ejecutar un solo caso de prueba dentro de una prueba:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
Para ejecutar pruebas utilizando un dispositivo de antorcha específico, establezca RIFFUSION_TEST_DEVICE . Las pruebas deben pasarse con Backends de cpu , cuda y mps .
Instale paquetes adicionales para Dev con python -m pip install -r requirements_dev.txt .
ruffblackmypy Estos están configurados en pyproject.toml .
Los resultados de mypy . , black . y ruff . Debe estar limpio para aceptar un PR.
CI se ejecuta a través de acciones de GitHub desde .github/workflows/ci.yml .
Las contribuciones son bienvenidas a través de solicitudes de extracción.