Files
bg1-ee-voiceover/.vibe/bg1-projectplan.md
2025-12-07 19:35:49 +01:00

156 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
---