⛔ لم يعد هذا المشروع يتم الحفاظ عليه بنشاط.

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}
}
تم اختباره في CI مع Python 3.9 و 3.10.
يوصى بشدة بإعداد بيئة بيثون افتراضية مع 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. انظر دليل التثبيت أو العجلات المستقرة.
لتوليد الصوت في الوقت الفعلي ، تحتاج إلى وحدة معالجة الرسومات التي يمكنها تشغيل انتشار مستقر بحوالي 50 خطوة في أقل من خمس ثوان ، مثل 3090 أو A10G.
اختبار توافر مع:
import torch
torch . cuda . is_available () يتم دعم الواجهة الخلفية mps على Silicon Apple للاستدلال ، لكن بعض العمليات تعود إلى وحدة المعالجة المركزية ، وخاصةً لمعالجة الصوت. قد تحتاج إلى تعيين 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. يمكّن هذا الخادم تطبيق الويب من التشغيل محليًا.
الجري مع:
python -m riffusion.server --host 127.0.0.1 --port 3013
يمكنك تحديد --checkpoint مع الدليل الخاص بك أو معرف المعانقة بتنسيق الناشرون.
استخدم وسيطة --device لتحديد جهاز الشعلة للاستخدام.
تتوفر نقطة نهاية النموذج الآن على http://127.0.0.1:3013/run_inference عبر طلب البريد.
مثال على الإدخال (انظر InterferenceInput لـ 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
}
}
مثال على الإخراج (انظر InterferenceOutput لـ 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 .
قم بتثبيت حزم إضافية لـ Dev مع python -m pip install -r requirements_dev.txt .
ruffblackmypy تم تكوين هذه في pyproject.toml .
نتائج mypy . ، black . و ruff . يجب أن تكون نظيفة لقبول العلاقات العامة.
يتم تشغيل CI من خلال إجراءات github من .github/workflows/ci.yml .
المساهمات مرحب بها من خلال طلبات السحب.