⛔이 프로젝트는 더 이상 적극적으로 유지되지 않습니다.

Riffusion은 안정적인 확산으로 실시간 음악 및 오디오 생성을위한 라이브러리입니다.
https://www.riffusion.com/about에 대해 읽고 https://www.riffusion.com/에서 사용해보십시오.
이것은 Riffusion 이미지 및 오디오 처리 코드의 핵심 저장소입니다.
관련 저장소 :
이 작업을 구축하면 다음과 같이 인용하십시오.
@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}
}
파이썬 3.9 및 3.10으로 CI에서 테스트.
conda 또는 virtualenv 사용하여 가상 파이썬 환경을 설정하는 것이 좋습니다.
conda create --name riffusion python=3.9
conda activate riffusion
파이썬 종속성 설치 :
python -m pip install -r requirements.txt
WAV 이외의 오디오 형식을 사용하려면 FFMPEG가 필요합니다.
sudo apt-get install ffmpeg # linux
brew install ffmpeg # mac
conda install -c conda-forge ffmpeg # conda
Torchaudio에 백엔드가 없으면 libsndfile 설치해야 할 수도 있습니다. 이 문제를 참조하십시오.
문제가있는 경우 디퓨저를 업그레이드하십시오. 0.9-0.11로 테스트했습니다.
가이드 :
cpu 지원되지만 상당히 느립니다.
cuda 권장되고 가장 성능이 높은 백엔드입니다.
CUDA와 함께 사용하려면 Torch와 Torchaudio가 Cuda 지원으로 설치되어 있는지 확인하십시오. 설치 안내서 또는 안정적인 휠을 참조하십시오.
실시간으로 오디오를 생성하려면 3090 또는 A10G와 같이 5 초 미만으로 약 50 단계로 안정적인 확산을 실행할 수있는 GPU가 필요합니다.
테스트 가용성 :
import torch
torch . cuda . is_available () Apple Silicon의 mps 백엔드는 추론을 위해 지원되지만 일부 작업은 CPU, 특히 오디오 처리를 위해 돌아갑니다. PYTORCH_ENABLE_MPS_FALLBACK=1 설정해야 할 수도 있습니다.
또한이 백엔드는 결정적이지 않습니다.
테스트 가용성 :
import torch
torch . backends . mps . is_available ()Riffusion에는 일반적인 작업을 수행하기위한 명령 줄 인터페이스가 제공됩니다.
사용 가능한 명령을 참조하십시오 :
python -m riffusion.cli -h
특정 명령에 대한 도움을 받으십시오.
python -m riffusion.cli image-to-audio -h
실행하다:
python -m riffusion.cli image-to-audio --image spectrogram_image.png --audio clip.wav
Riffusion에는 대화식 사용 및 탐색을위한 유선형 앱이 포함되어 있습니다.
실행 :
python -m riffusion.streamlit.playground
http://127.0.0.1:8501/에서 액세스하십시오.
Riffusion은 API를 통해 추론을 제공하는 Flask 서버로 실행할 수 있습니다. 이 서버를 사용하면 웹 앱이 로컬로 실행될 수 있습니다.
실행 :
python -m riffusion.server --host 127.0.0.1 --port 3013
자신의 디렉토리를 사용하여 --checkpoint 또는 Diffusers 형식의 HuggingFace ID를 지정할 수 있습니다.
--device 디바이스 인수를 사용하여 사용할 토치 장치를 지정하십시오.
모델 엔드 포인트는 이제 사후 요청을 통해 http://127.0.0.1:3013/run_inference run_inference에서 사용할 수 있습니다.
예제 입력 (API의 inferenceInput 참조) :
{
"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
}
}
예제 출력 (API의 InferenceOutput 참조) :
{
"image": "< base64 encoded JPEG image >",
"audio": "< base64 encoded MP3 clip >"
}
테스트는 test/ 디렉토리에 살고 있으며 unittest 와 함께 구현됩니다.
모든 테스트를 실행하려면 :
python -m unittest test/*_test.py
단일 테스트를 실행하려면 :
python -m unittest test.audio_to_image_test
디버깅을위한 임시 출력을 보존하려면 RIFFUSION_TEST_DEBUG 설정하십시오.
RIFFUSION_TEST_DEBUG=1 python -m unittest test.audio_to_image_test
테스트 내에서 단일 테스트 케이스를 실행하려면 :
python -m unittest test.audio_to_image_test -k AudioToImageTest.test_stereo
특정 토치 장치를 사용하여 테스트를 실행하려면 RIFFUSION_TEST_DEVICE 설정하십시오. 테스트는 cpu , cuda 및 mps 백엔드와 함께 통과해야합니다.
python -m pip install -r requirements_dev.txt 사용하여 DEV 용 추가 패키지를 설치하십시오.
ruffblackmypy 이들은 pyproject.toml 로 구성됩니다.
mypy . , black . , 그리고 ruff . PR을 수락하려면 깨끗해야 합니다 .
CI는 .github/workflows/ci.yml 의 github 작업을 통해 실행됩니다.
기부금은 풀 요청을 통해 환영합니다.