Self-hosted Opus Clip alternative — reels.biba.live
Bug found in Žena ME TEPE third re-test: - Scribe transcribed only verse 1 (0-33s) properly - Then returned a single 98s segment [34.7-133.2] with just 1 word 'sam' - This is a known Scribe hallucination on instrumental sections - Result: SRT showed 'SAM SAM SAM SAM...' 14 times across the chorus - Looked completely wrong because the chorus audio was correct but subtitles showed 'SAM' repeatedly Three-part fix: 1. SRT GENERATOR: skip segments > 15s with < 5 words. These are hallucinations and have no real transcription value. 2. SCRIBE TRANSCRIBE: detect hallucinations in returned segments. - Mark segments > 15s with < 5 words as hallucinations - Compute true coverage % (excluding hallucinations) - Add _hallucination_count and _coverage_pct to result 3. TRANSCRIBE_FULL: auto-retry Scribe if quality is poor. - If hallucinations detected OR coverage < 50%, retry once - Keep retry result only if it has better stats - Otherwise fall back to first attempt (still better than nothing) This makes the pipeline robust against Scribe's occasional bad transcripts on songs with long instrumental breaks. Most second attempts succeed where the first failed (random Scribe variance). |
||
|---|---|---|
| app | ||
| scripts | ||
| templates | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
| requirements.txt | ||
Reels Clipper · biba.live
Self-hosted Opus Clip alternativa za FOLX TV / PTC. Pretvori 16:9 video v 9:16 reels/shorts/tiktok format z auto face tracking, podnapisi (sl/de/en) in avto-detekcijo refrena v glasbenih pesmih.
Features
- 📤 Drag & drop upload (do 2 GB)
- 📺 YouTube URL paste (yt-dlp)
- 🎯 Smart reframe: track (face follow), center, blur (za glasbo)
- 🎵 Auto-chorus detection (Whisper + energy hibrid)
- 📝 Burned-in podnapisi (faster-whisper, multi-jezik)
- 🎨 3 stili podnapisov: reels, yellow (MrBeast), minimal
- 🔐 HTTP Basic Auth
- 📊 Real-time progress (Server-Sent Events)
- 📦 Docker / Coolify ready
Quick start (lokalno)
docker compose up --build
# odpri http://localhost:8000
Default login: sebastjan / nastavi AUTH_PASS v .env.
Coolify deploy
- V Coolify ustvari nov projekt → Docker Compose iz tega repoja
- Domena:
reels.biba.live - Env vars:
AUTH_USER=sebastjan AUTH_PASS=<močno geslo> MAX_UPLOAD_MB=2000 - Volume
reels_datase ustvari avtomatsko - Deploy → Coolify postavi Traefik reverse proxy + SSL via Let's Encrypt
Pipeline
Upload / YouTube
↓
[ yt_download.py ] ← samo če YouTube
↓
[ find_chorus.py ] ← samo če auto_chorus=true (Whisper + RMS analiza)
↓
[ reframe.py ] ← 16:9 → 9:16 (track / center / blur)
↓
[ subtitle.py ] ← Whisper transkripcija + burn-in
↓
reel.mp4
API
POST /api/upload— multipart file upload, vrnejob_idPOST /api/youtube— JSON{url, mode, lang, ...}POST /api/process— start processing za uploaded jobGET /api/jobs— list vsehGET /api/jobs/{id}— statusGET /api/stream/{id}— SSE stream progressGET /api/download/{id}— final reelDELETE /api/jobs/{id}— pobriši
Dependencies
- FFmpeg (system)
- faster-whisper (transkripcija)
- OpenCV (face detection)
- yt-dlp (YouTube)
- FastAPI + uvicorn (server)