first commit
This commit is contained in:
155
.vibe/bg1-projectplan.md
Normal file
155
.vibe/bg1-projectplan.md
Normal 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.
|
||||
|
||||
---
|
||||
|
||||
67
.vibe/bg1-session-resumee.md1
Normal file
67
.vibe/bg1-session-resumee.md1
Normal 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
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user