⛔ Этот проект больше не поддерживается активно.

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}
}
Протестировано в CI с Python 3.9 и 3.10.
Настоятельно рекомендуется создать виртуальную среду Python с 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, убедитесь, что у вас установлена факел и Torchaudio с поддержкой CUDA. Смотрите руководство по установке или стабильные колеса.
Чтобы генерировать аудио в режиме реального времени, вам нужен графический процессор, который может запускать стабильную диффузию с приблизительно 50 шагами за пять секунд, например, 3090 или A10G.
Доступность тестирования с помощью:
import torch
torch . cuda . is_available () Бэкэнд mps на Apple Silicon поддерживается для вывода, но некоторые операции возвращаются к процессору, особенно для обработки аудио. Вам может потребоваться установить PYTORCH_ENABLE_MPS_FALLBACK=1 .
Кроме того, этот бэкэнд не детерминирован.
Доступность тестирования с помощью:
import torch
torch . backends . mps . is_available ()Риффузия поставляется с интерфейсом командной строки для выполнения общих задач.
См. Доступные команды:
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
Риффузия содержит приложение для потока для интерактивного использования и исследования.
Беги с:
python -m riffusion.streamlit.playground
И доступ по адресу http://127.0.0.1:8501/
Риффузия может быть запущена как сервер Flask, который обеспечивает вывод через API. Этот сервер позволяет веб -приложению работать локально.
Беги с:
python -m riffusion.server --host 127.0.0.1 --port 3013
Вы можете указать --checkpoint с вашим собственным каталогом или идентификатором huggingface в формате диффузоров.
Используйте аргумент --device , чтобы указать устройство для использования горелки.
Конечная точка модели теперь доступна по адресу http://127.0.0.1:3013/run_inference через запрос POST.
Пример ввода (см. SepenceInput для 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
}
}
Пример вывода (см. Вывод Output для 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
Чтобы запустить тесты, используя определенное устройство Torch, установите RIFFUSION_TEST_DEVICE . Тесты должны проходить с помощью cpu , cuda и mps .
Установите дополнительные пакеты для Dev с python -m pip install -r requirements_dev.txt .
ruffblackmypy Они настроены в pyproject.toml .
Результаты mypy . , black . , и ruff . должен быть чистым, чтобы принять PR.
CI проходит через действия GitHub от .github/workflows/ci.yml .
Взносы приветствуются с помощью запросов на притяжение.