updated md files

This commit is contained in:
2025-12-07 19:47:40 +01:00
parent 7e54fc2260
commit 23c68a7e6a
8 changed files with 467 additions and 33 deletions

56
.gitignore vendored Normal file
View File

@ -0,0 +1,56 @@
# Python
__pycache__/
*.pyc
*.pyd
*.so
.Python
env/
.venv/
pip-log.txt
pip-delete-this-arg.txt
.tox/
.coverage
.coverage.*
.hypothesis/
.pytest_cache/
celerybeat-schedule
.dmypy.json
.mypy_cache/
.pyre/
.ipynb_checkpoints
.sage/
.spyderproject
.spyderproject.bak
.spyderworkspace
.ropeproject
/site
/data/raw/
/data/processed/dialogs.json # This should be generated, not committed
/audio/
# IDEs and Editors
.idea/
.vscode/
*.swp
*~
.DS_Store
# Build artifacts
build/
dist/
*.egg-info/
.cache/
# Logs
*.log
# TTS Service Specific
/tts-service/app/cache/
# Tools
/tools/NearInfinity.jar
/tools/weidu/
# Temporary directories
/tmp/
.gemini/

55
GEMINI.md Normal file
View File

@ -0,0 +1,55 @@
# BG1EE Voiceover Project Context (v0.3)
## 1. Project Overview
**Project Name:** bg1-ee-voiceover
**Goal:** Create a robust dual-language (German/English) data foundation and game integration hook for *Baldur's Gate: Enhanced Edition*.
**Current Scope (v0.3):**
* **Focus:** Data Extraction, Parsing, and Logging Hook.
* **Excluded:** Active TTS generation and HTTP API (deferred to later phases).
* **Objective:** Establish a clean, bilingual `dialogs.json` database and a working `Infinity_Log` trigger from within the game.
## 2. Architecture (v0.3)
The system is reduced to three core components:
1. **Extraction (Near Infinity):**
* **Source:** `dialog.tlk` (DE & EN), `*.dlg`, `*.2da`.
* **Output:** JSON files in `data/raw/`.
2. **Parser (Python):**
* **Input:** Raw JSONs (`tlk` and `dlg`).
* **Logic:** Match IDs across languages, link dialog nodes, map speakers.
* **Output:** `data/processed/dialogs.json`.
3. **Lua Hook (Mod):**
* **Location:** `lua-hook/bg1ee_tts_hook/`.
* **Events:** `OnDialogStart`, `OnDialogNodeChange`.
* **Action:** Write ID to `Infinity_Log`.
## 3. Technology Stack
* **Extraction:** Near Infinity (Java Tool).
* **Processing:** Python 3.10+ (Standard Library + `json`).
* **Game Modding:** Lua (embedded in BG1EE).
## 4. Immediate Roadmap (Phases)
* **Phase 1: Extract (NOW):**
* Export `dialog.tlk` (DE) -> `data/raw/tlk/dialog_de.json`.
* Export `dialog.tlk` (EN) -> `data/raw/tlk/dialog_en.json`.
* Export all `*.dlg` -> `data/raw/dlg/*.json`.
* (Optional) Export `npc.2da` -> `data/mappings/npc_map.json`.
* **Phase 2: Parser (NEXT):**
* Implement Python parser to merge these inputs into `dialogs.json`.
* **Phase 3: Hook (PARALLEL):**
* Create `dialog.lua` to log dialog events.
* **Phase 4: Offline Rendering Prep (OPTIONAL):**
* Define WAV naming convention and folder structure.
## 5. Directory Structure
* `docs/`: detailed specs (Architecture, Extraction, Project Plan).
* `data/`:
* `raw/`: Raw exports.
* `processed/`: Final `dialogs.json`.
* `scripts/`: Python ETL scripts.
* `lua-hook/`: The game modification files.

View File

@ -1,6 +1,7 @@
# Projektstruktur & README # Projektstruktur & README
## 📁 Empfohlene Ordnerstruktur (Best Practice) ## 📁 Empfohlene Ordnerstruktur (Best Practice)
```text ```text
bg1ee-tts/ bg1ee-tts/
├── README.md ├── README.md
@ -50,6 +51,7 @@ bg1ee-tts/
# 📘 README.md # 📘 README.md
## 🎯 BG1EE Dual‑Language TTS Projekt ## 🎯 BG1EE Dual‑Language TTS Projekt
Dieses Repository enthält die vollständige Infrastruktur, um **Baldur's Gate Enhanced Edition (Steam)** automatisch in **Deutsch** und **Englisch** zu vertonen – live während des Spielens, mit Umschaltung per Hotkey. Dieses Repository enthält die vollständige Infrastruktur, um **Baldur's Gate Enhanced Edition (Steam)** automatisch in **Deutsch** und **Englisch** zu vertonen – live während des Spielens, mit Umschaltung per Hotkey.
Ziel: Dialog erscheint im Spiel → ID wird abgefangen → TTS erzeugt Audio → Audio wird abgespielt. Ziel: Dialog erscheint im Spiel → ID wird abgefangen → TTS erzeugt Audio → Audio wird abgespielt.
@ -57,58 +59,70 @@ Ziel: Dialog erscheint im Spiel → ID wird abgefangen → TTS erzeugt Audio →
--- ---
## 🚀 Features ## 🚀 Features
- Extraktion aller BG1EE‑Texte (DE & EN)
- Parser für TLK + DLG Dateien → JSON‑Datenbank * Extraktion aller BG1EE‑Texte (DE & EN)
- TTS‑Backend mit mehreren Engines (Melo, Kokoro, F5‑TTS, Piper) * Parser für TLK + DLG Dateien → JSON‑Datenbank
- Live‑Integration via Lua‑Dialoghook * TTS‑Backend mit mehreren Engines (Melo, Kokoro, F5‑TTS, Piper)
- Plattformunabhängig (Linux: Entwicklung / Windows: Spielen) * Live‑Integration via Lua‑Dialoghook
* Plattformunabhängig (Linux: Entwicklung / Windows: Spielen)
--- ---
## 🧩 Voraussetzungen ## 🧩 Voraussetzungen
Du benötigst: Du benötigst:
- **Baldur's Gate: Enhanced Edition (Steam)**
- **Java 17+** (für Near Infinity) * **Baldur's Gate: Enhanced Edition (Steam)**
- **Python 3.10+** * **Java 17+** (für Near Infinity)
- **FastAPI** * **Python 3.10+**
- Optional: GPU‑TTS Engines * **FastAPI**
* Optional: GPU‑TTS Engines
--- ---
## 🔧 Installation externer Tools ## 🔧 Installation externer Tools
### Near Infinity (TLK + DLG Viewer/Exporter) ### Near Infinity (TLK + DLG Viewer/Exporter)
Download: Download:
https://github.com/Argent77/NearInfinity [https://github.com/Argent77/NearInfinity](https://github.com/Argent77/NearInfinity)
``` ```
wget https://github.com/Argent77/NearInfinity/releases/latest/download/NearInfinity.jar wget https://github.com/Argent77/NearInfinity/releases/latest/download/NearInfinity.jar
``` ```
### WeiDU (Modding Toolkit) ### WeiDU (Modding Toolkit)
Download: Download:
https://github.com/WeiDUorg/weidu [https://github.com/WeiDUorg/weidu](https://github.com/WeiDUorg/weidu)
--- ---
## 📥 BG1EE Dateien finden (Steam) ## 📥 BG1EE Dateien finden (Steam)
Linux‑Pfad: Linux‑Pfad:
``` ```
~/.steam/steam/steamapps/common/Baldur's Gate Enhanced Edition/data/ ~/.steam/steam/steamapps/common/Baldur's Gate Enhanced Edition/data/
``` ```
Windows‑Pfad: Windows‑Pfad:
``` ```
C:\Program Files (x86)\Steam\steamapps\common\Baldur's Gate Enhanced Edition\data C:\Program Files (x86)\Steam\steamapps\common\Baldur's Gate Enhanced Edition\data
``` ```
Relevante Dateien: Relevante Dateien:
- `lang/de_DE/dialog.tlk`
- `lang/en_US/dialog.tlk` * `lang/de_DE/dialog.tlk`
- `dialog.bif` * `lang/en_US/dialog.tlk`
- sämtliche `.dlg` Dateien * `dialog.bif`
* sämtliche `.dlg` Dateien
--- ---
## 🏗️ Projektaufbau ## 🏗️ Projektaufbau
1. **TLK & DLG exportieren** (Near Infinity) 1. **TLK & DLG exportieren** (Near Infinity)
2. **Parser ausführen** → erzeugt `dialogs.json` 2. **Parser ausführen** → erzeugt `dialogs.json`
3. **TTS‑Service starten** (`uvicorn app.main:app`) 3. **TTS‑Service starten** (`uvicorn app.main:app`)
@ -118,28 +132,31 @@ Relevante Dateien:
--- ---
## 📚 Dokumentation ## 📚 Dokumentation
- [docs/architecture.md](docs/architecture.md)
- [docs/extraction-guide.md](docs/extraction-guide.md) * [docs/architecture.md](docs/architecture.md)
- [docs/tools-installation.md](docs/tools-installation.md) * [docs/extraction-guide.md](docs/extraction-guide.md)
- [lua-hook-spec.md](docs/lua-hook-spec.md) * [docs/tools-installation.md](docs/tools-installation.md)
* [lua-hook-spec.md](docs/lua-hook-spec.md)
--- ---
## 📜 Rechtliches ## 📜 Rechtliches
Dieses Projekt enthält **keine Originalspieldateien**.
Alle Extraktionen müssen lokal auf einem legal erworbenen BGEE‑Spiel erfolgen. Dieses Projekt enthält **keine Originalspieldateien**.
Alle Extraktionen müssen lokal auf einem legal erworbenen BGEE‑Spiel erfolgen.
Siehe: Siehe:
- Baldur's Gate EE Copyright © Beamdog
- https://store.steampowered.com/app/228280 * Baldur's Gate EE Copyright © Beamdog
* [https://store.steampowered.com/app/228280](https://store.steampowered.com/app/228280)
Quellenverlinkungen enthalten nur **offizielle** Hersteller‑Seiten. Quellenverlinkungen enthalten nur **offizielle** Hersteller‑Seiten.
--- ---
## 🤝 Mitwirken ## 🤝 Mitwirken
PRs, Issues und Erweiterungen willkommen. Dies ist ein technisches Forschungs‑ und Hobbyprojekt. PRs, Issues und Erweiterungen willkommen. Dies ist ein technisches Forschungs‑ und Hobbyprojekt.
--- ---
Fertig! Fertig!

View File

@ -1,3 +1,71 @@
# Architecture v0.2 # Architecture v0.3
Updated... ## Überblick
Diese Version beschreibt ausschließlich:
- Extraktion
- Parser
- Lua-Hook
ohne konkrete TTS-Anbindung.
---
# Komponenten
## 1. Extraktion (DE/EN)
Quellen:
- dialog.tlk (DE/EN)
- .dlg Dateien
- optional .2da
Export über Near Infinity → JSON.
---
## 2. Parser
Zentrale Aufgabe: alles zu einer zweisprachigen Dialogdatenbank zusammenführen.
### Input
```
data/raw/tlk/dialog_de.json
data/raw/tlk/dialog_en.json
data/raw/dlg/*.json
```
### Output
```
data/processed/dialogs.json
```
### Beispielstruktur
```json
{
"id": 47119,
"speaker": "Imoen",
"text": {
"de": "Hey, wach auf!",
"en": "Hey, wake up!"
},
"links": [
{ "type": "next", "id": 47120 }
]
}
```
---
## 3. Lua-Hook
Interceptor für Dialogwechsel im Spiel.
### Events
- OnDialogStart()
- OnDialogNodeChange(nodeID)
### Ausgabe
Nur Logging.
---
## 4. Erweiterbarkeit
- Bulk Rendering
- Live TTS
- BG2EE Support

View File

@ -1,3 +1,69 @@
# Extraction Guide v0.2 # Extraction Guide v0.3
Steps... ## Ziel
Vollständige zweisprachige Daten für BGEE extrahieren.
---
# 1. Dateien finden (Steam)
Linux:
```
~/.steam/steam/steamapps/common/Baldur's Gate Enhanced Edition/
```
Windows:
```
C:\Program Files (x86)\Steam\steamapps\common\Baldur's Gate Enhanced Edition\
```
---
# 2. Near Infinity starten
Download:
https://github.com/Argent77/NearInfinity
Start:
```
java -jar NearInfinity.jar
```
---
# 3. TLK exportieren
1. `dialog.tlk` (DE) öffnen
2. Export → JSON
3. Speichern nach:
```
data/raw/tlk/dialog_de.json
```
Wiederholen für EN:
```
data/raw/tlk/dialog_en.json
```
---
# 4. DLG exportieren
In Near Infinity:
- `.dlg` suchen
- jede Datei exportieren
- speichern in:
```
data/raw/dlg/
```
---
# 5. Optional: NPC Mapping
`npc.2da` → exportieren → JSON:
```
data/mappings/npc_map.json
```
---
# Fertig
Parser kann jetzt laufen.

View File

@ -1,3 +1,48 @@
# Lua Hook Spec v0.2 # Lua Hook Spec v0.3
... ## Ziel
Minimaler Listener für Dialoge in BGEE.
---
# Dateien
```
lua-hook/
bg1ee_tts_hook/
dialog.lua
mod.ini
```
Installation:
- Linux: ~/.local/share/.../override/
- Windows: Documents/Baldur's Gate - Enhanced Edition/override/
---
# Lua API
### OnDialogStart()
Wird ausgelöst, wenn ein Dialog beginnt.
### OnDialogNodeChange(nodeID)
Wird ausgelöst, wenn die Dialogzeile wechselt.
---
# Beispiel
```lua
function OnDialogStart()
Infinity_Log("Dialog started")
end
function OnDialogNodeChange(node)
Infinity_Log("Node: " .. tostring(node))
end
```
---
# Hinweis
Noch **keine** API-Calls, kein TTS, nur Logging.

79
docs/project-plan.md Normal file
View File

@ -0,0 +1,79 @@
# Projektplan – BG1EE Dialog-Extraktion & Hook-System (v0.3)
## 🎯 Ziel
Solide Grundlage schaffen, um später Live-TTS oder Offline-TTS einzubinden – ohne jetzt schon einen TTS-Server zu benötigen.
---
# Phase 1 – Extraktion (JETZT)
Zweisprachige Rohdaten aus BGEE exportieren.
## Aufgaben
- TLK DE exportieren
- TLK EN exportieren
- Alle DLG-Dateien exportieren
- NPC-Mappings extrahieren (optional)
- Rohdaten nach `data/raw/` speichern
## Ergebnis
```
data/raw/tlk/dialog_de.json
data/raw/tlk/dialog_en.json
data/raw/dlg/*.json
data/mappings/npc_map.json
```
---
# Phase 2 – Parser & Datenmodell (ALS NÄCHSTES)
Parser zusammenbauen, der aus TLK & DLG eine vollständige Dialog-Datenbank erzeugt.
## Aufgaben
- TLK DE/EN matchen (ID-basiert)
- Dialogbäume verknüpfen
- Sprecher zuordnen (optional)
- finale Struktur in `dialogs.json` schreiben
- Self-Test entwickeln
## Ergebnis
```
data/processed/dialogs.json
```
---
# Phase 3 – Lua-Hook (PARALLEL ODER DANACH)
Minimaler Hook, der Dialogstart und Dialogknotenwechsel erkennt.
## Aufgaben
- `dialog.lua` schreiben
- `mod.ini` erstellen
- Hook testweise in BGEE installieren
- Log-Ausgabe sicherstellen (kein TTS!)
## Ergebnis
BGEE schreibt z. B.:
```
Dialog node changed: 47119
```
---
# Phase 4 – (OPTIONAL) Offline-Rendering-Grundlage
Noch kein TTS – aber vorbereiten:
## Aufgaben
- Namensschema für WAV-Dateien definieren
- Ordner anlegen: `audio_de`, `audio_en`
- Prototyp-Skript `render_all.py` vorbereiten (noch ohne Engine)
---
# Phase 5 – (SPÄTER) TTS-Anbindung
Erst wenn die Datenbank + Hook stabil sind.
---
# Aktueller Status
Wir befinden uns am Start von **Phase 1**.

View File

@ -1,3 +1,51 @@
# Tools Installation v0.2 # Tools Installation v0.3
... ## 1. Java für Near Infinity
Linux:
```
sudo apt install openjdk-17-jre
```
Windows:
https://adoptium.net/
---
## 2. Near Infinity
Download:
https://github.com/Argent77/NearInfinity
Start:
```
java -jar NearInfinity.jar
```
---
## 3. Python
Linux:
```
sudo apt install python3 python3-venv python3-pip
```
Windows:
https://python.org
---
## 4. Git
```
sudo apt install git
```
Optional:
```
sudo apt install git-flow
```
---
## 5. Optional: WeiDU
Download:
https://github.com/WeiDUorg/weidu