4.5 KiB
Onboarding Guide
Willkommen im Projekt! Dieses Dokument führt neue Entwickler vollständig ein – ohne Rückfragen, ohne offene Punkte.
Ziel: Du sollst in der Lage sein, das gesamte System zu verstehen, zu betreiben und weiterzuentwickeln.
1. Projektüberblick
Das XTTS2 TTS-System ist eine modulare, verteilte Plattform für hochwertige Text-to-Speech-Synthese mit Zero-Shot Voice Cloning. Der Aufbau orientiert sich an professionellen Backend-Architekturen mit Queueing, GPU-Workern und einer OpenAI-kompatiblen API.
Hauptkomponenten:
- Gateway (FastAPI): HTTP-API, Validierung, Routing, Port-Autodetection.
- Redis: Queue, Cache, interne Metadaten.
- Worker (XTTS2): führt TTS aus, nutzt GPU automatisch, arbeitet skalierbar.
Dieses System eignet sich für:
- Spielevertonung
- Automatisiertes Voice-Over
- Lokale AI-Pipelines
- Multimodale Agenten
2. Architektur
Client → Gateway → Redis Queue → Worker (XTTS2) → Gateway → Client
- Das Gateway nimmt Requests entgegen und legt Jobs in Redis ab.
- Worker verarbeiten Jobs parallel und liefern Audiodaten zurück.
- Die API ist OpenAI-kompatibel – Clients können ohne Anpassung migriert werden.
3. Voraussetzungen
Software
- Docker & Docker Compose
- Git
- Python 3.10 / 3.11 (für lokales Debugging)
- NVIDIA GPU + Container Toolkit (optional, aber empfohlen)
Hardware
- 8 GB RAM minimum
- GPU mit mindestens 4–6 GB VRAM für XTTS2
4. Repository klonen
git clone <repo-url>
cd tts-server
5. Projektstruktur verstehen
gateway/ → FastAPI-Gateway
worker/ → XTTS2-GPU-Worker
scripts/ → Hilfsskripte (Portfinder, Selftest)
voices/ → Voice Registry
Makefile → Build-, Deploy- und Diagnosewerkzeuge
docker-compose.yml
Die wichtigsten Einstiegspunkte:
gateway/main.py– Start des API-Gatewaysworker/main.py– Start des XTTS2-Workersscripts/find_port.py– Portscanner (8000–8100)
6. System starten
make build
make up
- Der Portscanner prüft Ports 8000–8100
- Der freie Port wird in
gateway/port.txtgespeichert
Status prüfen:
make status
Stoppen:
make down
7. API testen
Healthcheck
curl http://localhost:<PORT>/health
TTS Request
curl -X POST http://localhost:<PORT>/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "xtts-v2",
"input": "Hello there!",
"voice": "auto",
"format": "wav"
}' \
--output output.wav
Stimme registrieren
curl -X POST http://localhost:<PORT>/v1/voices/register \
-H "Content-Type: application/json" \
-d '{
"name": "narrator",
"samples": ["https://example.com/voice.wav"]
}'
8. Entwicklung
Lokales Setup ohne Docker
Virtualenv
python3 -m venv .venv
source .venv/bin/activate
Abhängigkeiten installieren
Gateway:
pip install -r gateway/requirements.gateway.txt
Worker:
pip install -r worker/requirements.worker.txt
Services starten
Redis (Lokal):
docker run -p 6379:6379 redis:7
Gateway:
python gateway/main.py
Worker:
python worker/main.py
9. Skalieren
Mehrere Worker starten:
make worker-scale N=3
Der Gateway verteilt automatisch die Jobs über Redis.
10. Selftest
make selftest
Prüft:
- Redis erreichbar
- Worker verarbeitet Jobs
- Audioausgabe funktioniert
11. Troubleshooting
Gateway startet nicht?
- Port belegt →
gateway/port.txtprüfen - Logs prüfen →
gateway/logs/ - Redis erreichbar?
Worker reagiert nicht?
- GPU verfügbar? →
nvidia-smi - Torch kompatibel?
- XTTS2 Modell lädt?
Audio klingt falsch?
- Voice-Sample ungeeignet
- Format falsch gesetzt
- Sprache nicht angegeben
12. Best Practices
- Keine persönlichen Sprachsamples committen
- Docker Images regelmäßig erneuern
- Worker skalieren statt Gateway ändern
- API-Versionen strikt pflegen
- Code Style: PEP8
13. Weiterentwicklung
Empfohlene nächste Schritte:
- Monitoring (Prometheus)
- WebSocket TTS
- Multi-Model Routing
- GUI für Voice Management
- Auth Layer für öffentliche Deployments
14. Verantwortlichkeiten
- Projektleitung: Stephan W.
- Backend Architektur: Team evtl. weitere Rollen später definieren
15. Abschluss
Wenn du bis hier gelesen hast, bist du vollständig einsatzfähig. Viel Erfolg!“}