feat(diagnostic): RVS-Debug-Logs fuer Whisper- und F5TTS-Bridge

Stefan's Gamebox ist Windows (kein SSH-Zugriff), und in Zukunft
koennten whisper/f5tts auf separaten Hosts laufen. Wir brauchen
deshalb einen Logging-Pfad ueber RVS — gleicher Mechanismus wie
fuer die App (reportAppDebug).

Beide Bridges senden jetzt app_log-Messages mit platform="whisper"
bzw. "f5tts". aria-bridge schreibt sie in /shared/logs/app.log
(unverändert), Live-Logs-Tab + Diagnostic /api/app-log lesen mit.

Toggle via aria-bridge config:
  whisperDebugLog: bool   — default OFF (aktuell aber ON in
                            whisper-bridge weil wir Phase-1/2-
                            Pipeline einfahren)
  f5ttsDebugLog:   bool   — default OFF

Beide werden in voice_config.json persistiert + nach RVS-Connect
rebroadcastet, damit Toggle Container-Restart ueberlebt.

Whisper-Bridge logt aktuell:
  boot                  → Streaming-Mode-Marker (sehen wir damit ob
                          neue Version aktiv ist)
  stream.start          → stt_stream_start angekommen
  stream.chunk          → alle 25 Chunks (=5s Audio) einer
  stream.chunk.reject   → Chunk fuer unbekannte Session
  stream.partial        → Whisper hat neuen Text erkannt
  stream.final          → Endpoint detected, finaler Text raus
  stream.end            → stt_stream_end angekommen
  config                → Toggle umgeschaltet

F5TTS-Helper ist da (gleicher Pattern), Logging-Punkte kommen
spaeter wenn wir ein konkretes TTS-Problem zu debuggen haben.
This commit is contained in:
2026-05-30 22:00:55 +02:00
parent a68827fb38
commit 493cba36a2
3 changed files with 166 additions and 0 deletions
+17
View File
@@ -556,6 +556,12 @@ class ARIABridge:
for k in ("fluxDefaultModel", "fluxKeywordRaw", "fluxKeywordSwitch", "huggingfaceToken"):
if k in vc:
self._flux_config[k] = vc[k]
# Debug-Log-Toggles fuer Whisper / F5TTS Bridges (Diagnostic-Toggle).
# Default: aus — sonst muellen wir uns volle Disk wenn alles laeuft.
self._debug_log_config: dict = {}
for k in ("whisperDebugLog", "f5ttsDebugLog"):
if k in vc:
self._debug_log_config[k] = bool(vc[k])
logger.info("Voice-Config geladen: tts=%s voice=%s f5tts=%s flux=%s",
self.tts_enabled, self.xtts_voice or "default",
self._f5tts_config or "defaults",
@@ -1304,6 +1310,7 @@ class ARIABridge:
payload["xttsSpeed"] = self._persistent_xtts_speed
payload.update(getattr(self, "_f5tts_config", {}) or {})
payload.update(getattr(self, "_flux_config", {}) or {})
payload.update(getattr(self, "_debug_log_config", {}) or {})
await self._send_to_rvs({
"type": "config",
"payload": payload,
@@ -1978,6 +1985,15 @@ class ARIABridge:
self._flux_config = {}
self._flux_config[k] = payload[k]
changed = True
# Debug-Log-Toggles fuer Whisper- und F5TTS-Bridge — werden via
# naechstem config-Broadcast an die jeweiligen Bridges weitergegeben.
# Persistent damit Toggle einen Container-Restart ueberlebt.
for k in ("whisperDebugLog", "f5ttsDebugLog"):
if k in payload:
if not hasattr(self, "_debug_log_config"):
self._debug_log_config = {}
self._debug_log_config[k] = bool(payload[k])
changed = True
# Persistent speichern in Shared Volume
if changed:
try:
@@ -1991,6 +2007,7 @@ class ARIABridge:
config_data["xttsSpeed"] = self._persistent_xtts_speed
config_data.update(getattr(self, "_f5tts_config", {}))
config_data.update(getattr(self, "_flux_config", {}))
config_data.update(getattr(self, "_debug_log_config", {}))
with open("/shared/config/voice_config.json", "w") as f:
json.dump(config_data, f, indent=2)
logger.info("[rvs] Voice-Config gespeichert: %s", config_data)