# 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) ```json { "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/` - `/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` + `OnDialogNodeChange` abgreifen - 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. ---