iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A browser-based karaoke audio mixer with a GitHub Pages frontend and a Demucs-powered FastAPI backend for real vocal/instrumental separation.README 전문 보기 ↗A browser-based karaoke audio mixer with a GitHub Pages frontend and a Demucs-powered FastAPI backend for real vocal/instrumental separation.
GitHub Pages frontend
│
│ POST /api/separate → 202 Accepted + job_id
│ GET /api/jobs/{id} → poll for status/progress
│ GET /api/results/{job_id}/{vocals|instrumental}.mp3
▼
Coolify backend
FastAPI + Demucs (CPU-only PyTorch)
/
├── index.html # Production frontend / GitHub Pages entry
├── karaoke-mixer-prototype.html # Prototype/reference frontend
├── README.md
└── backend/
├── app.py # FastAPI API + async job queue + Demucs
├── Dockerfile # CPU-only PyTorch build
├── docker-compose.yml # Local/Coolify service definition
├── requirements.txt # Python dependencies (torch installed separately)
├── .env.example # Example configuration
└── results/ # Runtime-generated stems (auto-cleaned)
POST /api/separate
Content-Type: multipart/form-data
audio=<audio file>
Returns 202 Accepted:
{
"job_id": "abc123...",
"status": "queued",
"status_url": "https://YOUR-API-DOMAIN/api/jobs/abc123..."
}
GET /api/jobs/{job_id}
While processing:
{
"job_id": "abc123...",
"status": "processing",
"stage": "separating",
"progress": 42,
"queue_position": 1
}
When done:
{
"job_id": "abc123...",
"status": "done",
"stage": "done",
"progress": 100,
"format": "mp3",
"vocals": "https://YOUR-API-DOMAIN/api/results/abc123.../vocals.mp3",
"instrumental": "https://YOUR-API-DOMAIN/api/results/abc123.../instrumental.mp3"
}
GET /api/results/{job_id}/vocals.mp3
GET /api/results/{job_id}/instrumental.mp3
GET /health
{
"ok": true,
"service": "karaoke-mixer-separation",
"demucs_model": "htdemucs",
"output_format": "mp3",
"active_jobs": 0
}
All variables have defaults; copy backend/.env.example and adjust for production.
| Variable | Default | Description |
|---|---|---|
ALLOWED_ORIGINS | https://harisakthi1994-spec.github.io | Comma-separated CORS origins |
PUBLIC_BASE_URL | (empty) | Backend base URL, e.g. https://karaoke-api.example.com |
DEMUCS_MODEL | htdemucs | Demucs model name |
OUTPUT_FORMAT | mp3 | Stem format: mp3 or wav |
MP3_BITRATE | 192 | MP3 bitrate in kbps |
MAX_UPLOAD_MB | 150 | Maximum upload size in MB |
DEMUCS_TIMEOUT_SECONDS | 1800 | Per-job timeout |
MAX_CONCURRENT_JOBS | 1 | Parallel Demucs workers |
MAX_QUEUED_JOBS | 5 | Max jobs waiting in queue |
RATE_LIMIT_PER_HOUR | 10 | Separations per IP per hour (0 = disabled) |
RESULTS_TTL_MINUTES | 120 | How long stems are kept on disk |
RESULTS_ROOT | /app/results | Stem output directory |
index.html is a static HTML/CSS/JavaScript application served from GitHub Pages.
The browser reads the separation API URL from:
window.SEPARATION_API_URL // set in a <script> tag in index.html
or falls back to:
localStorage.getItem('SEPARATION_API_URL')
For a quick browser test without redeploying:
localStorage.setItem('SEPARATION_API_URL', 'https://YOUR-API-DOMAIN/api/separate');
location.reload();
If the backend is unavailable or separation fails, the frontend falls back to the original audio so playback never completely breaks.
After separation, a Split outputs toggle appears in the Audio Output Device card. When enabled:
Each output has a delay slider (0–500 ms) to compensate for Bluetooth latency (~150–300 ms typical).
Pitch and tempo sliders are coupled: changing pitch also shifts the playback speed, and changing tempo also shifts the pitch. This is a Web Audio API limitation — true independent control requires a more complex DSP pipeline.
cd backend
docker compose up --build
API: http://localhost:5000 (host port mapped in docker-compose.yml)
Health: http://localhost:5000/health
cd backend
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install -r requirements.txt
uvicorn app:app --host 0.0.0.0 --port 8000
FFmpeg must be installed for common audio input formats.
Repository: https://github.com/harisakthi1994-spec/karoke-mixer.github.io.git
Base Directory: /backend
Compose File: docker-compose.yml
Service: karaoke-api
Container Port: 8000
Set ALLOWED_ORIGINS, PUBLIC_BASE_URL, and any tuning variables in Coolify Environment Variables.
| Symptom | Check |
|---|---|
SEPARATION_API_URL not configured | window.SEPARATION_API_URL in index.html or localStorage |
HTTP 404 on /api/separate | Coolify backend running; domain → port 8000 |
| CORS error | ALLOWED_ORIGINS contains the exact frontend origin |
Job returns status: error | Coolify runtime logs; likely OOM or FFmpeg missing |
| Stems out of sync in split mode | Increase delay on the non-Bluetooth output |
| Health check fails | GET https://YOUR-API-DOMAIN/health should return {"ok":true,...} |
RESULTS_TTL_MINUTES; do not rely on them persisting indefinitely.