DEMON: 음악적으로 오케스트레이션된 노이즈를 위한 확산 엔진 (Diffusion Engine for Musical Orchestrated
요약
DEMON은 ACEStep 1.5를 기반으로 한 실시간 오디오 생성 엔진으로, StreamDiffusion 아키텍처를 활용해 음악적 노이즈를 오케스트레이션합니다. VAE 증류와 TensorRT 최적화를 통해 악기처럼 실시간 리믹싱이 가능한 수준의 빠른 반응성을 제공합니다.
핵심 포인트
- ACEStep 1.5 기반의 실시간 오디오 생성 엔진
- StreamDiffusion 및 링버퍼 아키텍처를 통한 저지연 구현
- VAE 증류 및 TensorRT를 활용한 높은 처리량 확보
- 실시간 리믹싱, LoRA 핫스왑, 파라미터 스케줄링 지원
안녕,
저는 Ryan입니다, 여러분을 만나게 되어 반갑습니다. 저는 한동안 오디오 반응형 Comfy 노드, Comfy 내 ACEStep 지원 확장 등 오픈 소스 생성형 오디오(generative audio) 관련 작업에 기여해 왔습니다. 제가 몇 달 동안 작업해 온 새로운 오디오 프로젝트를 방금 오픈 소스로 공개했으며, 여러분께 소개해 드리고 싶습니다.
이것은 무엇인가
DEMON: Diffusion Engine for Musical Orchestrated Noise
이것은 이미지를 대신해 오디오를 사용하고, Stable Diffusion 대신 ACEStep 1.5를 사용하는 StreamDiffusion입니다. 악기처럼 연주하고 거의 실시간(near real-time)으로 리믹스할 수 있을 만큼 반응성이 뛰어납니다.
또한 ACEStep VAE를 증류(distilled)했습니다. 약간의 품질을 희생하는 대신 더 빠릅니다.
또한 ACEStep 1.5 및 1.5XL을 위해 약 200개의 lora/dora를 학습시켰습니다. 이것들은 5개 또는 10개 정도씩 묶음으로 출시할 예정입니다.
이것을 만든 이유
두 가지 이유가 있습니다:
- 음악을 만드는 것은 본질적으로 실시간(real-time) 활동입니다.
- 그냥 해보고 싶었습니다 (Why not bro)
몇 가지 수치
여기서 언급하는 수치는 30/4090으로 별도 표기되지 않는 한 5090 기준입니다. 또한, 수치는 TensorRT를 사용한 것이지만, eager/torch compile 백엔드도 지원됩니다.
처리량 (Throughput):
- 5090에서 60초 길이 음악 기준 초당 12.3회 생성; 4090에서 8.9/s, 3090에서 4.2/s
- 이는 최대 240초까지 검증되었으며, VRAM은 이에 따라 확장됩니다.
반응성 (Responsiveness): 처리량과 파라미터 업데이트 지연 시간(latency) 모두의 함수이며, 이는 링 버퍼(ringbuffer) 깊이로 조정 가능합니다:
| 깊이 (Depth) | 틱 (Tick, ms) | 완료 간격 (Completion interval, ms) | 초당 생성 (Gens/sec) | 프롬프트 첫 효과 (Prompt first-effect, ms) |
|---|---|---|---|---|
| 1 | 14.0 | 112.0 | 8.9 | 112 ms |
| 2 | 24.3 | 97.2 | 10.3 | 219 ms |
| 4 | 42.8 | 88.5 | 11.3 | 471 ms |
| 8 | 81.1 | 81.1 | 12.3 | 649 ms |
단계별(per-step)로 참조되는 파라미터를 사용할 경우, 첫 효과(first-effect)는 모든 깊이에서 약 1틱입니다.
몇 가지 런타임 기능
- 곡의 실시간 리믹싱 (Real-time remixing)
- 노이즈 제거 (Denoise), 구조 (Structure), 음색 강도 (Timbre strength) 조절
- 참조 트랙 교체 (Reference track swapping)
- 프롬프트 블렌딩 (Prompt blending), 커브를 이용한 파라미터 스케줄링 (Parameter scheduling with curves)
- LoRA 핫스왑 (Hotswapping), 런타임 강도 조절
- 잠재 채널 (Latent channel) (연구 프리뷰)
- 피드백 (Feedback)
- Melformer를 이용한 보컬 스템 커팅/붙여넣기 (s/o u/BuffMcBigHuge)
- XL 지원 (덜 안정적이며, VRAM 압박 문제 등을 해결 중)
- 가사/보컬 기능 곧 추가 예정 (SOON)
- 스펙트럼 품질 연구 곧 추가 예정 (SOON)
- 기타 사항들
기술적 구현 방식 (How it is)
- StreamDiffusion 링버퍼 (Ringbuffer) 아키텍처
- VAEWindowing
- 혼합 정밀도 TensorRT (Mixed precision TensorRT)
- W8A8 양자화 (Quantization) (XL용)
- StreamDiffusion에서 영감을 받은 유사도 필터 (Similarity filter)
- 링버퍼 배출 (Ringbuffer drain)을 우회하는 다양한 방법들
몇 가지 제한 사항 (Some limitations)
- ACEStep이 (정확하게) 노래의 '시작'과 '끝'을 결정합니다. 이 시스템은 노래 전체를 리믹싱하거나 루프를 지속적으로 리믹싱하도록 최적화되어 있습니다. 루프는 잘 작동하지만, 이것이 순수하고 연속적인 음악은 아닙니다. 이 부분에서는 Autogression이 우위에 있습니다.
- 그 외 많은 사항들이 있으며, 더 상세한 목록은 프로젝트 페이지를 통해 전체 기술 문서를 참조해 주세요.
- 제한 사항을 발견하시면 저희에게 알려주세요. 가능하다면 해결할 수 있도록 노력하겠습니다.
데모 앱을 제작하고 지원, 디버깅, 테스트를 도와준 Daydream 팀에게 큰 감사를 전합니다.
전체 세부 사항은 프로젝트 페이지를 통해 확인할 수 있는 기술 문서를 참조해 주세요.
링크 (Links)
제 YouTube (DEMON 튜토리얼): https://youtu.be/FBv1b5gmjcE
Github: https://github.com/daydreamlive/DEMON
프로젝트 페이지: https://daydreamlive.github.io/DEMON
LoRA: https://civitai.com/models/2416425/acestep-loras
DreamVAE: https://huggingface.co/daydreamlive/DreamVAE
DISCORD: https://discord.gg/g7F2HCa9VB
설치 없이 체험하기: https://music.daydream.live
AI 자동 생성 콘텐츠
본 콘텐츠는 r/StableDiffusion의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기