ARIA-AGENT/xtts/docker-compose.yml

78 lines
2.5 KiB
YAML

# ════════════════════════════════════════════════
# ARIA XTTS v2 — GPU TTS Server
# Laeuft auf dem Gaming-PC (RTX 3060)
# Verbindet sich zum RVS fuer TTS-Requests
# ════════════════════════════════════════════════
#
# Voraussetzungen:
# - Docker Desktop mit WSL2
# - NVIDIA Container Toolkit
# - .env mit RVS-Verbindungsdaten
#
# Start: docker compose up -d
# Test: curl http://localhost:8000/docs
# ════════════════════════════════════════════════
services:
# ─── XTTS v2 API Server (GPU) ─────────────────
xtts:
image: daswer123/xtts-api-server:latest
container_name: aria-xtts
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
ports:
- "8000:8020"
volumes:
- xtts-models:/app/xtts_models # Model-Cache (~2GB)
- ./voices:/voices # Custom Voice Samples
environment:
- COQUI_TOS_AGREED=1
# Local-Modus: Modell bleibt dauerhaft im GPU-VRAM (~2GB). Vorteile:
# - Render startet sofort (kein reload pro Request)
# - /tts_stream funktioniert → echtes Streaming mit ~500ms time-to-first-audio
# Ohne diesen command: apiManual-Modus, jede Anfrage laedt Modell neu, kein Streaming.
# Der NVIDIA-Entrypoint erwartet Python als ausfuehrbares Command, nicht nur Flags.
command:
- python
- -m
- xtts_api_server
- -hs
- "0.0.0.0"
- -p
- "8020"
- -ms
- local
- -o
- /app/output
- -mf
- /app/xtts_models
- -sf
- /voices
restart: unless-stopped
# ─── XTTS Bridge (verbindet zu RVS) ───────────
xtts-bridge:
build: .
container_name: aria-xtts-bridge
depends_on:
- xtts
volumes:
- ./voices:/voices # Shared mit XTTS-Server
environment:
- XTTS_API_URL=http://xtts:8020
- RVS_HOST=${RVS_HOST}
- RVS_PORT=${RVS_PORT:-443}
- RVS_TLS=${RVS_TLS:-true}
- RVS_TLS_FALLBACK=${RVS_TLS_FALLBACK:-true}
- RVS_TOKEN=${RVS_TOKEN}
restart: unless-stopped
volumes:
xtts-models: