first commit

This commit is contained in:
2025-12-07 19:35:49 +01:00
commit 7e54fc2260
9 changed files with 388 additions and 0 deletions

155
.vibe/bg1-projectplan.md Normal file
View File

@ -0,0 +1,155 @@
# 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/<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` + `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.
---

View File

@ -0,0 +1,67 @@
# Session-Resümee (Extended)
## Baldur’s Gate Enhanced Edition – Dual-Language Live-TTS Projekt
**Stand:** 2025-12-07
## Übersicht
Wir haben die Herangehensweise für ein vollautomatisches, zweisprachiges
Text-to-Speech-System für **Baldur’s Gate 1 Enhanced Edition** entworfen.
Ziel:
→ Das Spiel zeigt einen Dialog
→ wir erkennen ihn in Echtzeit
→ erzeugen passende Audioausgabe (DE oder EN)
→ Umschalten der Sprache jederzeit möglich
→ Keine Spielmodifikation außer einem kleinen Listener.
---
## Kernentscheidungen
### ✔ Beste Extraktionsmethode
- Nutzung der originalen **TLK-Dateien** (DE & EN)
- Nutzung der **DLG-Dateien** (Dialogbäume)
- Alles wird in **JSON** überführt
- IDs sind in allen Sprachen 1:1 identisch → perfekt für Dual-Pipeline
### ✔ Live-TTS Architektur
- BGEE löst Dialog-Events via Lua aus
- Ein externes TTS-Backend empfängt IDs
- Backend spielt Audio sofort ab
- Interner State: aktive Sprache (de/en)
- Wechsel per Hotkey, CLI oder API
### ✔ Die Technik bleibt sauber
- Kein OCR, kein Bildschirm-Scraping
- Keine Hooks in Engine-Memory
- Keine Modding-Orgien
- Saubere, reproduzierbare Pipeline
- Ideal für spätere Erweiterung auf BG2EE, IWD, PST
---
## Erweiterte Erkenntnisse
- BG1EE ist extrem modfreundlich → Lua-Injection ist minimaler Aufwand
- Sämtliche Texte lassen sich 1:1 extrahieren
- TTS-Qualität ist mit Melo/Kokoro/F5 deutlich über 90er-Studio-Level
- Das System kann beliebig erweitert werden (NPC-eigene Stimmen, Emotionen)
---
## Risiken & offene Punkte
- Hook-Timing muss getestet werden (Dialogwechsel)
- Manche Mods überschreiben DLG-Pfade → wir brauchen optionales Rescan
- TTS-Caching muss sauber gebaut werden (Performance)
---
## Nächste Schritte (konkret)
1. BG1EE installieren
2. TLK & DLG extrahieren (Near Infinity)
3. Parser bauen
4. Datenbank erzeugen
5. FastAPI-TTS-Backend aufsetzen
6. Lua-Hook-Mod erstellen
7. Hotkey-Switch implementieren
8. Erste Spielszene voll vertonen
---