Files
xtts-server/DEV_SETUP.md

289 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Developer Setup Guide
Dieses Dokument befähigt jeden Entwickler dazu, das komplette XTTS2-TTS-System lokal aufzusetzen, zu verstehen, zu debuggen und zu erweitern – ohne Rückfragen.
---
# 1. Ziel des Dokuments
* Lokale Entwicklungsumgebung vollständig einrichten
* Services starten & stoppen
* Worker skalieren
* API testen
* Debugging-Strategien
* Best Practices für Code, Deployment & GPU-Nutzung
---
# 2. Voraussetzungen
## Software
* Docker ≥ 24.x
* Docker Compose ≥ v2.x
* Git
* Python 3.10–3.11
* Optional: Editor wie VS Code mit Python- & Docker-Extensions
## Hardware
* Linux (empfohlen), macOS oder Windows WSL2
* Für GPU-Betrieb: NVIDIA GPU + Container Toolkit
GPU prüfen:
```bash
nvidia-smi
```
NVIDIA Docker prüfen:
```bash
docker run --rm --gpus all nvidia/cuda:12.1.0-base nvidia-smi
```
---
# 3. Repository klonen
```bash
git clone <repo-url>
cd tts-server
```
---
# 4. Projektstruktur
```
tts-server/
├── gateway/ → FastAPI-Gateway
│ ├── main.py
│ ├── api/
│ ├── core/
│ ├── voices/
│ ├── logs/
│ └── Dockerfile
│
├── worker/ → XTTS2 Worker
│ ├── main.py
│ ├── engine/
│ ├── core/
│ └── Dockerfile
│
├── scripts/
│ └── find_port.py → Portscanner (8000–8100)
│
├── docker-compose.yml → Multi-Service Orchestration
├── Makefile → PRO Workflow
├── README.md
└── ONBOARDING.md
```
---
# 5. Docker-basiertes Development (empfohlen)
## 5.1 Images bauen
```bash
make build
```
## 5.2 Server starten
```bash
make up
```
Der Portscanner wählt automatisch den ersten freien Port (8000–8100) und legt ihn ab in:
```
gateway/port.txt
gateway/logs/gateway.log
```
## 5.3 Logs ansehen
```bash
make logs
```
## 5.4 Services stoppen
```bash
make down
```
## 5.5 Status anzeigen
```bash
make status
```
---
# 6. Ohne Docker entwickeln (lokales Debugging)
## 6.1 Virtuelle Umgebung
```bash
python3 -m venv .venv
source .venv/bin/activate
```
## 6.2 Abhängigkeiten installieren
Gateway:
```bash
pip install -r gateway/requirements.gateway.txt
```
Worker:
```bash
pip install -r worker/requirements.worker.txt
```
Redis lokal starten:
```bash
docker run -p 6379:6379 redis:7
```
Gateway starten:
```bash
python gateway/main.py
```
Worker starten:
```bash
python worker/main.py
```
---
# 7. TTS API testen
## 7.1 Healthcheck
```bash
curl http://localhost:<PORT>/health
```
## 7.2 TTS Anfrage
```bash
curl -X POST http://localhost:<PORT>/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "xtts-v2",
"input": "Das ist ein Test.",
"voice": "auto",
"format": "wav"
}' \
--output test.wav
```
## 7.3 Stimme registrieren
```bash
curl -X POST http://localhost:<PORT>/v1/voices/register \
-H "Content-Type: application/json" \
-d '{
"name": "german_narrator",
"samples": ["https://example.com/sample.wav"]
}'
```
---
# 8. Worker skalieren
Höhere Last? Mehrere Worker starten:
```bash
make worker-scale N=4
```
Redis verteilt Jobs automatisch FIFO.
---
# 9. Selftest
```bash
make selftest
```
Testet:
* Redis erreichbar
* Gateway online
* Worker zieht Jobs
* Synthese funktioniert
---
# 10. Debugging
## Gateway startet nicht
* Prüfen: `gateway/logs/`
* Port frei? `gateway/port.txt`
* Redis erreichbar?
## Worker lädt nicht
* XTTS2 Modell verfügbar?
* GPU verfügbar? `nvidia-smi`
* Torch CUDA Version kompatibel?
## Audio-Probleme
* Voice Sample ungeeignet
* Sprache nicht angegeben
* Format falsch
---
# 11. Code Guidelines
* PEP8 Stil
* Logging strukturiert (JSON empfohlen)
* Kein Hardcoding von Pfaden
* Hohe Modularität
* Unit Tests für Kernkomponenten
* Feature Branches: `feature/<name>`
* Commits: Conventional Commits
---
# 12. Best Practices
* Worker lieber horizontal skalieren statt optimieren
* Keine sensiblen Voice Samples committen
* Docker Images regelmäßig aktualisieren
* Für Public Deployments: Auth Layer aktivieren
---
# 13. Nächste Schritte für Entwickler
* Monitoring & Dashboards
* WebSocket Realtime TTS
* Mehrsprachige Voice Registry
* Model Hot-Swapping (XTTS2, F5, Kokoro)
* CI/CD Pipeline hinzufügen
---
# 14. Fertig!
Wenn du dieses Dokument verstanden hast, kannst du das Projekt vollständig entwickeln, erweitern und deployen.
Viel Erfolg! 🚀