⛔ Este projeto não é mais mantido ativamente.

A Riffusion é uma biblioteca para música em tempo real e geração de áudio com difusão estável.
Leia sobre isso em https://www.riffusion.com/about e experimente em https://www.riffusion.com/.
Este é o principal repositório para a imagem de riffusão e o código de processamento de áudio.
Repositórios relacionados:
Se você desenvolver este trabalho, cite o seguinte:
@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}
}
Testado em IC com Python 3.9 e 3.10.
É altamente recomendável configurar um ambiente de Python virtual com conda ou virtualenv :
conda create --name riffusion python=3.9
conda activate riffusion
Instale as dependências do Python:
python -m pip install -r requirements.txt
Para usar formatos de áudio diferentes do WAV, o FFMPEG é necessário.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Se o Torchaudio não tiver back -end, pode ser necessário instalar libsndfile . Veja esta questão.
Se você tiver um problema, tente atualizar os difusores. Testado com 0,9 - 0,11.
Guias:
cpu é suportada, mas é bastante lenta.
cuda é o back -end recomendado e a maioria dos desempenhos.
Para usar com o CUDA, verifique se você tem tocha e torchaudio instalado com suporte ao CUDA. Consulte o guia de instalação ou rodas estáveis.
Para gerar áudio em tempo real, você precisa de uma GPU que possa executar difusão estável com aproximadamente 50 etapas em menos de cinco segundos, como um 3090 ou A10G.
Disponibilidade de teste com:
import torch
torch . cuda . is_available () O back -end mps no Apple Silicon é suportado para inferência, mas algumas operações voltam à CPU, principalmente para o processamento de áudio. Pode ser necessário definir PYTORCH_ENABLE_MPS_FALLBACK=1 .
Além disso, esse back -end não é determinístico.
Disponibilidade de teste com:
import torch
torch . backends . mps . is_available ()A Riffusion vem com uma interface da linha de comando para executar tarefas comuns.
Veja os comandos disponíveis:
python -m riffusion.cli -h
Obtenha ajuda para um comando específico:
python -m riffusion.cli image-to-audio -h
Executar:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
A Riffusion contém um aplicativo de streamlit para uso e exploração interativa.
Correr com:
python -m riffusion.streamlit.playground
E acesso em http://127.0.0.1:8501/
A riffusão pode ser executada como um servidor de frasco que fornece inferência via API. Este servidor permite que o aplicativo da web seja executado localmente.
Correr com:
python -m riffusion.server --host 127.0.0.1 --port 3013
Você pode especificar --checkpoint com seu próprio diretório ou ID do HuggingFace no formato difusores.
Use o argumento --device para especificar o dispositivo da tocha a ser usado.
O Model Endpoint está agora disponível em http://127.0.0.1:3013/run_inference via solicitação de postagem.
Exemplo de entrada (consulte InferênciaInput para a 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
}
}
Exemplo de saída (consulte InferenceOutput para a API):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
Os testes vivem no test/ diretório e são implementados com unittest .
Para executar todos os testes:
python -m unittest test/*_test.py
Para executar um único teste:
python -m unittest test.audio_to_image_test
Para preservar saídas temporárias para depuração, defina RIFFUSION_TEST_DEBUG :
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
Para executar um único caso de teste em um teste:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
Para executar testes usando um dispositivo de tocha específico, defina RIFFUSION_TEST_DEVICE . Os testes devem passar com cpu , cuda e mps backends.
Instale pacotes adicionais para o DEV com python -m pip install -r requirements_dev.txt .
ruffblackmypy Estes são configurados em pyproject.toml .
Os resultados de mypy . , black . , e ruff . Deve estar limpo para aceitar um pr.
O CI é executado através de ações do GitHub de .github/workflows/ci.yml .
As contribuições são bem -vindas por meio de solicitações de tração.