⛔ Proyek ini tidak lagi dipertahankan secara aktif.

Riffusion adalah perpustakaan untuk musik real-time dan generasi audio dengan difusi yang stabil.
Baca tentang hal itu di https://www.riffusion.com/about dan coba di https://www.riffusion.com/.
Ini adalah repositori inti untuk kode pemrosesan gambar dan audio.
Repositori terkait:
Jika Anda membangun pekerjaan ini, silakan mengutipnya sebagai berikut:
@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}
}
Diuji dalam CI dengan Python 3.9 dan 3.10.
Sangat disarankan untuk mengatur lingkungan Python virtual dengan conda atau virtualenv :
conda create --name riffusion python=3.9
conda activate riffusion
Pasang dependensi Python:
python -m pip install -r requirements.txt
Untuk menggunakan format audio selain WAV, FFMPEG diperlukan.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Jika Torchaudio tidak memiliki backend, Anda mungkin perlu menginstal libsndfile . Lihat masalah ini.
Jika Anda memiliki masalah, coba upgrade diffusers. Diuji dengan 0,9 - 0,11.
Panduan:
cpu didukung tetapi cukup lambat.
cuda adalah backend yang direkomendasikan dan paling berkinerja.
Untuk digunakan dengan CUDA, pastikan Anda memiliki Torch dan Torchaudio yang diinstal dengan dukungan CUDA. Lihat panduan instal atau roda stabil.
Untuk menghasilkan audio secara real-time, Anda memerlukan GPU yang dapat menjalankan difusi stabil dengan sekitar 50 langkah dalam waktu kurang dari lima detik, seperti 3090 atau A10G.
Ketersediaan tes dengan:
import torch
torch . cuda . is_available () Backend mps pada silikon apel didukung untuk inferensi tetapi beberapa operasi kembali ke CPU, terutama untuk pemrosesan audio. Anda mungkin perlu mengatur PYTORCH_ENABLE_MPS_FALLBACK=1 .
Selain itu, backend ini tidak deterministik.
Ketersediaan tes dengan:
import torch
torch . backends . mps . is_available ()Riffusion hadir dengan antarmuka baris perintah untuk melakukan tugas umum.
Lihat perintah yang tersedia:
python -m riffusion.cli -h
Dapatkan bantuan untuk perintah tertentu:
python -m riffusion.cli image-to-audio -h
Menjalankan:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
Riffusion berisi aplikasi streamlit untuk penggunaan dan eksplorasi interaktif.
Jalankan dengan:
python -m riffusion.streamlit.playground
Dan akses di http://127.0.0.1:8501/
Riffusion dapat dijalankan sebagai server Flask yang memberikan inferensi melalui API. Server ini memungkinkan aplikasi web untuk berjalan secara lokal.
Jalankan dengan:
python -m riffusion.server --host 127.0.0.1 --port 3013
Anda dapat menentukan --checkpoint dengan Direktori Anda Sendiri atau ID Huggingface dalam Format Diffusers.
Gunakan argumen --device untuk menentukan perangkat obor yang akan digunakan.
Titik akhir model sekarang tersedia di http://127.0.0.1:3013/run_inference melalui permintaan pos.
Contoh input (lihat inferencinput untuk 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
}
}
Contoh output (lihat InferenceOutput untuk API):
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
Tes hidup di test/ Direktori dan diimplementasikan dengan unittest .
Untuk menjalankan semua tes:
python -m unittest test/*_test.py
Untuk menjalankan satu tes:
python -m unittest test.audio_to_image_test
Untuk mempertahankan output sementara untuk debugging, atur RIFFUSION_TEST_DEBUG :
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
Untuk menjalankan satu test case dalam tes:
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
Untuk menjalankan tes menggunakan perangkat obor tertentu, atur RIFFUSION_TEST_DEVICE . Tes harus lulus dengan cadangan cpu , cuda , dan mps .
Instal Paket Tambahan untuk Dev dengan python -m pip install -r requirements_dev.txt .
ruffblackmypy Ini dikonfigurasi dalam pyproject.toml .
Hasil mypy . , black . , dan ruff . harus bersih untuk menerima PR.
CI dijalankan melalui tindakan github dari .github/workflows/ci.yml .
Kontribusi dipersilakan melalui permintaan tarik.