4.0 KiB
4.0 KiB
Projektbeschreibung (Extended)
Baldur’s Gate EE – Dual-Language Live-TTS System
Zielsetzung
Das Projekt entwickelt ein System, das BG1 Enhanced Edition während des Spielens in Deutsch und Englisch automatisch vertont und per Hotkey zwischen den Sprachen umschaltet.
Keine Änderung an der Engine. Kein Wine-Gefrickel. Saubere, modulare Architektur.
Architekturübersicht
ASCII-Diagramm – Systemkomponenten
+-----------------+ +------------------+
| BG1EE (Game) | | Dialog-Hook |
|-----------------| ID --> | Lua Listener |
| Dialog Window | | (OnNodeChange) |
+-----------------+ +------------------+
|
v
+----------------------+
| TTS Controller |
| (FastAPI Service) |
+----------+-----------+
|
+----------------+----------------+
| |
v v
+-----------------------+ +-----------------------+
| TLK+DLG DB (JSON) | | TTS Engines |
| text_de, text_en | | Melo, Kokoro, F5 |
+----------+------------+ +-----+----------------+
| |
v |
+------------------+ |
| Audio Cache | |
| lineID_lang.wav | <-----------------+
+--------+---------+
|
v
+------------------+
| Audio Playback |
+------------------+
Datenfluss-Diagramm
Spiel zeigt Dialog → Hook erkennt Node → sendet ID → Backend prüft Cache:
Wenn vorhanden → Sofort abspielen
Wenn nicht → Text(DE/EN) holen → TTS generieren → speichern → abspielen
Sprache wechseln → Backend toggelt Runtime-Flag
Datenmodell (vereinfacht)
{
"id": 47281,
"speaker": "Imoen",
"text": {
"de": "Hey, wach auf! Es ist etwas im Busch!",
"en": "Hey, wake up! Something's not right!"
},
"options": [
{ "id": 47282, "reply_de": "Was ist los?", "reply_en": "What's happening?" }
]
}
TTS-Backend Architektur
- FastAPI
- Endpunkte:
/speak/<id>/set_language/de|en/status/cache/clear
- Intern:
- DB-Lookup → Text holen
- Engine auswählen
- WAV generieren
- Abspielen
- Logging (Dialog-ID, Dauer, Engine, Sprache)
Projektplan (Roadmap)
Phase 1 – Extract (READY TO START)
- BG1EE installieren
- Near Infinity einrichten
- Deutsch & Englisch TLK extrahieren
- DLG-Bäume exportieren
- JSON vereinheitlichen
Phase 2 – Parser & Datenmodell
- Python-Modul bauen
- Konsistenzprüfungen (IDs müssen matchen)
- NPC-Zuordnungen
- Szenenstruktur optional
Phase 3 – TTS Service
- FastAPI-Server
- Sprache als Runtime-State
- Engine-Abstraktionslayer
- Audio-Caching
- Playback-Pipeline
Phase 4 – Lua Ingame Listener
- BGEE Mod erstellen
- Events
OnDialogStart+OnDialogNodeChangeabgreifen - HTTP Requests an TTS Server
Phase 5 – Live Umschaltung
- Hotkey-System
- Ereignis → REST → TTS-State ändern
- Visual Logging
Phase 6 – Testing
- Kapitel 1 vollständige Tests
- Langtext-Szenen (Gorion, Imoen, Candlekeep)
- Performance testen
- Audio-Lag eliminieren
Phase 7 – Erweiterungen
- individuelle NPC-Stimmen
- Emotionserkennung (stimmungsbasierte Modelle)
- Prosodie-Mapping
- BG2EE Integration
- Mod-Support
Vision
Ein vollständig automatisiertes, zweisprachiges, KI-vertontes Baldur’s Gate EE – mit Möglichkeit zum sofortigen Umschalten, eigenen Voices, und einer Engine-agnostischen Pipeline, die auf jeden Infinity-Engine Titel angewendet werden kann.