⛔โครงการนี้ไม่ได้รับการดูแลอย่างแข็งขันอีกต่อไป

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:
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 ดูปัญหานี้
หากคุณมีปัญหาลองอัพเกรด diffusers ทดสอบด้วย 0.9 - 0.11
คำแนะนำ:
cpu รองรับ แต่ค่อนข้างช้า
cuda เป็นแบ็กเอนด์ที่แนะนำและมีประสิทธิภาพมากที่สุด
หากต้องการใช้กับ CUDA ตรวจสอบให้แน่ใจว่าคุณมีคบเพลิงและ Torchaudio ติดตั้งด้วยการสนับสนุน CUDA ดูคู่มือการติดตั้งหรือล้อที่มีเสถียรภาพ
ในการสร้างเสียงแบบเรียลไทม์คุณต้องใช้ GPU ที่สามารถทำงานการแพร่กระจายที่มั่นคงโดยมีประมาณ 50 ขั้นตอนในเวลาไม่ถึงห้าวินาทีเช่น 3090 หรือ A10G
ทดสอบความพร้อมใช้งานด้วย:
import torch
torch . cuda . is_available () แบ็กเอนด์สมาชิก mps ของ Apple Silicon ได้รับการสนับสนุนสำหรับการอนุมาน แต่การดำเนินการบางอย่างกลับไปที่ CPU โดยเฉพาะอย่างยิ่งสำหรับการประมวลผลเสียง คุณอาจต้องตั้งค่า 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
Riffusion มีแอพ streamlit สำหรับการใช้งานและการสำรวจแบบโต้ตอบ
วิ่งด้วย:
python -m riffusion.streamlit.playground
และการเข้าถึงที่ http://127.0.0.1:8501/
ความรุนแรงสามารถเรียกใช้เป็นเซิร์ฟเวอร์ขวดที่ให้การอนุมานผ่าน API เซิร์ฟเวอร์นี้ช่วยให้เว็บแอปทำงานได้
วิ่งด้วย:
python -m riffusion.server --host 127.0.0.1 --port 3013
คุณสามารถระบุ --checkpoint ด้วยไดเรกทอรีของคุณเองหรือ HuggingFace ID ในรูปแบบ diffusers
ใช้อาร์กิวเมนต์ --device เพื่อระบุอุปกรณ์คบเพลิงที่จะใช้
ตอนนี้จุดสิ้นสุดรุ่นมีให้บริการที่ http://127.0.0.1:3013/run_inference ผ่านคำขอโพสต์
ตัวอย่างอินพุต (ดู InferenceInput สำหรับ 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
}
}
ตัวอย่างเอาต์พุต (ดู InferenceOutput สำหรับ 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
ยินดีต้อนรับการมีส่วนร่วมผ่านคำขอดึง