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

4.0 KiB
Raw Blame History

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