⛔该项目不再积极维护。

Riffusion是一个具有稳定扩散的实时音乐和音频产生的库。
在https://www.riffusion.com/about上阅读有关它的信息,并在https://www.riffusion.com/上尝试一下。
这是复兴图像和音频处理代码的核心存储库。
相关存储库:
如果您以这项工作为基础,请引用如下:
@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}
}
用Python 3.9和3.10在CI中测试。
强烈建议使用conda或virtualenv建立虚拟的Python环境:
conda create --name riffusion python=3.9
conda activate riffusion
安装Python依赖性:
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一起使用,请确保安装了CUDA支持的火炬和Torchaudio。请参阅安装指南或稳定的车轮。
要实时生成音频,您需要一个GPU,该GPU可以在五秒钟内以大约50个步骤运行稳定的扩散,例如3090或A10G。
测试可用性:
import torch
torch . cuda . is_available ()苹果硅上的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/上访问
重新源可以作为通过API推断的烧瓶服务器运行。该服务器使Web应用程序可以在本地运行。
运行:
python -m riffusion.server --host 127.0.0.1 --port 3013
您可以以扩散器格式--checkpoint使用您自己的目录或拥抱面ID。
使用--device参数指定要使用的火炬设备。
现在可以通过邮政请求通过http://127.0.0.1:3013/run_inference run_inference获得该模型端点。
示例输入(请参阅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
}
}
示例输出(请参阅API的推荐点):
{
"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 .必须干净才能接受公关。
CI通过.github/workflows/ci.yml的github动作运行。
欢迎通过拉拉请求供款。