From 0c18090351d59f4b3caf211dba3cf0f5700cd6ae Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 6 May 2026 23:47:55 +0200 Subject: [PATCH] chore: Highlight-Trigger raus + letzte Piper-Reste aufgeraeumt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Highlight-Trigger: - diagnostic/index.html: Settings-Sektion + Trigger-Liste-Handler raus - diagnostic/server.js: get_triggers / save_triggers Action-Handler + TRIGGERS_FILE Konstante + handleGetTriggers/handleSaveTriggers Funktionen weg - README.md: highlight_triggers.json aus dem Datenverzeichnis-Diagram entfernt Die Auswertung war seit Piper-Removal eh tot — die Datei wurde nur noch geschrieben aber nirgends gelesen. Piper-Reste: - bridge/aria_bridge.py: Modul-Docstring auf F5-TTS aktualisiert, Ramona/Thorsten-Erwaehnungen raus, Inline-Kommentar zu "Komponenten TTS" gefixt - aria-data/config/AGENT.md: Stimmen-Tabelle (Ramona/Thorsten) durch Hinweis auf F5-TTS Voice-Cloning ersetzt - aria-data/config/BOOTSTRAP.md: gleiche Tabelle weg, Bridge-Beschreibung auf "orchestriert STT/TTS via Gamebox-Bridges" geaendert Erledigt-Eintraege in issue.md + README markiert (historisch erhalten). Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 5 ++-- aria-data/config/AGENT.md | 13 +++-------- aria-data/config/BOOTSTRAP.md | 8 +++---- bridge/aria_bridge.py | 14 ++++-------- diagnostic/index.html | 43 +---------------------------------- diagnostic/server.js | 29 ----------------------- issue.md | 2 +- 7 files changed, 15 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 450f21f..543b714 100644 --- a/README.md +++ b/README.md @@ -568,8 +568,7 @@ aria-data/ │ └── diag-state/ ← Diagnostic persistenter State │ │ (im Shared Volume /shared/config/): -│ ├── voice_config.json ← TTS-Einstellungen (Stimme, Speed, Engine) -│ ├── highlight_triggers.json ← Highlight-Trigger Woerter +│ ├── voice_config.json ← TTS-Einstellungen (Stimme, Speed, F5-TTS-Tuning) │ └── chat_backup.jsonl ← Nachrichten-Backup (on-the-fly) │ └── ssh/ ← SSH Keys fuer VM-Zugriff @@ -816,7 +815,7 @@ docker exec aria-core ssh aria-wohnung hostname - [x] SSH-Zugriff auf VM (aria-wohnung) - [x] Diagnostic Web-UI + Einstellungen - [x] Session-Verwaltung + Chat-History -- [x] Stimmen-Einstellungen (Ramona/Thorsten, Speed, Highlight-Trigger) — durch XTTS v2 Voice Cloning ersetzt +- [x] Stimmen-Einstellungen (frueher Piper Ramona/Thorsten, Highlight-Trigger) — durch XTTS, dann F5-TTS Voice Cloning ersetzt - [x] Piper komplett entfernt — nur noch XTTS v2 als TTS (Gaming-PC) - [x] Streaming TTS: PCM-Chunks direkt in AudioTrack, nahtlose Wiedergabe - [x] TTS satzweise fuer lange Texte diff --git a/aria-data/config/AGENT.md b/aria-data/config/AGENT.md index 9db30ff..a00fe51 100644 --- a/aria-data/config/AGENT.md +++ b/aria-data/config/AGENT.md @@ -54,13 +54,6 @@ Fuer Web-Anfragen: **WebFetch** oder **Bash mit curl**. Niemals sagen "ich habe ## Stimme -| Stimme | Modell | Wann | -|--------|--------|------| -| **Ramona** (weiblich) | `de_DE-ramona-low` | Alltag, Antworten, Gespraeche (Standard) | -| **Thorsten** (maennlich, tief) | `de_DE-thorsten-high` | Epische Momente, Alarme, besondere Ereignisse | - -**Thorsten spricht bei:** -- Build erfolgreich deployed -- Ticket geloest / Aufgabe abgeschlossen -- Kritischer Alarm (Server down, Sicherheitswarnung) -- Wenn Stefan sagt "So soll es sein" +TTS laeuft ueber F5-TTS (Voice Cloning, Gaming-PC). Stefan kann eigene +Stimmen aus Audio-Samples klonen (Diagnostic → Stimmen → Stimme klonen) +und in App + Diagnostic auswaehlen. diff --git a/aria-data/config/BOOTSTRAP.md b/aria-data/config/BOOTSTRAP.md index 7413e61..42f85e9 100644 --- a/aria-data/config/BOOTSTRAP.md +++ b/aria-data/config/BOOTSTRAP.md @@ -80,10 +80,8 @@ Wenn ein Tool nicht klappt, probiere die Alternative. Niemals sagen "ich habe ke ## Stimme -| Stimme | Modell | Wann | -|--------|--------|------| -| **Ramona** (weiblich) | `de_DE-ramona-low` | Alltag, Antworten, Gespraeche (Standard) | -| **Thorsten** (maennlich, tief) | `de_DE-thorsten-high` | Epische Momente, Alarme, besondere Ereignisse | +TTS laeuft ueber F5-TTS auf der Gamebox (Voice Cloning). Stefan kann +eigene Stimmen aus Audio-Samples klonen und in App/Diagnostic auswaehlen. ## Gedaechtnis (Memory) @@ -147,4 +145,4 @@ Danach den Eintrag in `memory/MEMORY.md` (Index) verlinken. ### Netzwerk - **aria-net:** Internes Docker-Netz (proxy, aria-core) - **RVS:** Rendezvous-Server im Rechenzentrum — Relay fuer die Android-App -- **Bridge:** Voice Bridge (Whisper STT + Piper TTS) — teilt Netzwerk mit aria-core +- **Bridge:** Voice Bridge (orchestriert STT/TTS via Gamebox-Bridges) — teilt Netzwerk mit aria-core diff --git a/bridge/aria_bridge.py b/bridge/aria_bridge.py index 8a27753..c16d55d 100644 --- a/bridge/aria_bridge.py +++ b/bridge/aria_bridge.py @@ -1,17 +1,13 @@ """ ARIA Voice Bridge — Hauptmodul. -Verbindet die Android App (via RVS) mit ARIA-Core und bietet -lokale Spracheingabe (Wake-Word + Whisper STT) und Sprachausgabe (Piper TTS). +Verbindet die Android App (via RVS) mit ARIA-Core. Spracheingabe laeuft +ueber die whisper-bridge (Gamebox, faster-whisper auf CUDA), Sprachausgabe +ueber die f5tts-bridge (Voice Cloning, satzweises PCM-Streaming). Nachrichtenfluss: App → RVS → Bridge → aria-core - aria-core → Bridge → RVS → App - → Lautsprecher (TTS) - -Stimmen: - - Ramona (de_DE-ramona-low) — Alltag, Gespraeche - - Thorsten (de_DE-thorsten-high) — epische Momente, Alarme + aria-core → Bridge → f5tts-bridge → PCM → RVS → App """ from __future__ import annotations @@ -493,7 +489,7 @@ class ARIABridge: self.current_mode = self._load_persisted_mode() self.running = False - # Komponenten (TTS: immer XTTS remote, Piper wurde entfernt) + # Komponenten (TTS: F5-TTS remote auf der Gamebox, lokales TTS wurde entfernt) self.tts_enabled = True self.xtts_voice = "" self._f5tts_config: dict = {} diff --git a/diagnostic/index.html b/diagnostic/index.html index 021a116..7bc82ce 100644 --- a/diagnostic/index.html +++ b/diagnostic/index.html @@ -665,24 +665,6 @@ - -
-

Highlight-Trigger

-
- Woerter die automatisch die Highlight-Stimme (Thorsten) ausloesen. - Eines pro Zeile. Aenderungen werden in der Bridge gespeichert. -
-
- -
- - -
-
-
-
-

Tool-Berechtigungen

@@ -956,14 +938,6 @@ return; } - if (msg.type === 'trigger_list') { - const textarea = document.getElementById('highlight-triggers'); - textarea.value = (msg.triggers || []).join('\n'); - document.getElementById('trigger-status').textContent = msg.triggers.length + ' Trigger geladen'; - document.getElementById('trigger-status').style.color = '#8888AA'; - return; - } - if (msg.type === 'service_status') { updateServiceStatus(msg.payload || {}); return; @@ -1958,20 +1932,6 @@ } } - // ── Highlight-Trigger ──────────────────────── - function loadHighlightTriggers() { - send({ action: 'get_triggers' }); - } - function saveHighlightTriggers() { - const text = document.getElementById('highlight-triggers').value; - const triggers = text.split('\n').map(t => t.trim()).filter(t => t.length > 0); - send({ action: 'save_triggers', triggers }); - document.getElementById('trigger-status').textContent = 'Gespeichert (' + triggers.length + ' Trigger)'; - document.getElementById('trigger-status').style.color = '#34C759'; - } - // Beim Tab-Wechsel zu Einstellungen: Trigger laden - const origSwitchMainTab = typeof switchMainTab === 'function' ? switchMainTab : null; - // ── Modus-Wechsel ──────────────────────────── // Kanonische IDs (matchen bridge/modes.py canonical_id + android ModeSelector) const MODE_LABELS = { normal: 'Normal', nicht_stoeren: 'Nicht stoeren', fluester: 'Fluestern', hangar: 'Hangar', gaming: 'Gaming' }; @@ -2456,9 +2416,8 @@ document.querySelectorAll('.main-nav-btn').forEach(b => { if (b.textContent.trim().toLowerCase().includes(tab === 'main' ? 'main' : 'einstellung')) b.classList.add('active'); }); - // Einstellungen: Config + Trigger + QR laden + // Einstellungen: Config + QR laden if (tab === 'settings') { - loadHighlightTriggers(); send({ action: 'get_voice_config' }); loadRuntimeConfig(); loadOnboardingQR(); diff --git a/diagnostic/server.js b/diagnostic/server.js index 50b7485..5be17b1 100644 --- a/diagnostic/server.js +++ b/diagnostic/server.js @@ -1475,10 +1475,6 @@ wss.on("connection", (ws) => { } catch {} sendToRVS_raw({ type: "config", payload: voiceConfig, timestamp: Date.now() }); log("info", "server", `Voice-Config gespeichert: xttsVoice=${voiceConfig.xttsVoice || "default"}, whisper=${voiceConfig.whisperModel || "-"}`); - } else if (msg.action === "get_triggers") { - handleGetTriggers(ws); - } else if (msg.action === "save_triggers") { - handleSaveTriggers(ws, msg.triggers || []); } else if (msg.action === "test_tts") { handleTestTTS(ws, msg.text || "Test"); } else if (msg.action === "preview_voice") { @@ -1629,31 +1625,6 @@ function handleGetVoiceConfig(clientWs) { } } -// ── Highlight-Trigger (legacy UI — wird nicht mehr ausgewertet seit Piper raus) ─ -const TRIGGERS_FILE = "/shared/config/highlight_triggers.json"; - -async function handleGetTriggers(clientWs) { - try { - const triggers = fs.existsSync(TRIGGERS_FILE) - ? JSON.parse(fs.readFileSync(TRIGGERS_FILE, "utf-8")) - : []; - clientWs.send(JSON.stringify({ type: "trigger_list", triggers })); - } catch (err) { - clientWs.send(JSON.stringify({ type: "trigger_list", triggers: [], error: err.message })); - } -} - -async function handleSaveTriggers(clientWs, triggers) { - try { - fs.mkdirSync("/shared/config", { recursive: true }); - fs.writeFileSync(TRIGGERS_FILE, JSON.stringify(triggers, null, 2)); - log("info", "server", `${triggers.length} Highlight-Trigger gespeichert`); - clientWs.send(JSON.stringify({ type: "trigger_list", triggers })); - } catch (err) { - log("error", "server", `Trigger speichern fehlgeschlagen: ${err.message}`); - } -} - // ── TTS Diagnose (XTTS) ─────────────────────────────── // ── Voice Preview ──────────────────────────────────────── // Sammelt audio_pcm Chunks einer Preview-Anfrage, baut am Ende eine WAV diff --git a/issue.md b/issue.md index 4ffb53b..845fb88 100644 --- a/issue.md +++ b/issue.md @@ -44,7 +44,7 @@ - [x] Chat-Suche in der App (Lupe in Statusleiste) - [x] Abbrechen-Button im Diagnostic Chat - [x] Stimmen-Einstellungen (Ramona/Thorsten, Speed pro Stimme — durch XTTS/F5-TTS ersetzt) -- [x] Highlight-Trigger konfigurierbar in Diagnostic +- [x] Highlight-Trigger konfigurierbar in Diagnostic (spaeter komplett entfernt — war Piper-Relikt) - [x] XTTS v2 Integration (Gaming-PC, GPU, Voice Cloning) — durch F5-TTS ersetzt - [x] XTTS Voice Cloning (Audio-Samples hochladen, eigene Stimme) - [x] TTS Engine waehlbar (Piper/XTTS) — Piper raus, XTTS raus, jetzt nur F5-TTS