From a361015ff4e0115a02f651cdc540acdd9c2cd532 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Fri, 24 Apr 2026 16:54:36 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20WebSocket=20max=5Fsize=20hochgedreht=20?= =?UTF-8?q?=E2=80=94=20voice=5Fupload=20sprengte=20Default=201MB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Symptom: aria-whisper-bridge bekam beim ersten internen stt_request (via voice_upload mit WAV als base64, ~2.4MB) den Frame zu Gesicht, default ws-max ist 1MB → mit Close-Code 1009 abgewiesen → Verbindung tot → naechster stt_request lief in Timeout → lokales Fallback. Fixes: - whisper-bridge: max_size=50*1024*1024 in websockets.connect() (gleicher Wert wie f5tts-bridge schon hat) - RVS-Server: maxPayload=50*1024*1024 in WebSocketServer-Optionen, damit der Server die Frames nicht selbst auf 1MB cappt bevor er sie an die Bridge weiterleitet. Co-Authored-By: Claude Opus 4.7 (1M context) --- rvs/server.js | 5 ++++- xtts/whisper/bridge.py | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/rvs/server.js b/rvs/server.js index 255ca7b..d55d74d 100644 --- a/rvs/server.js +++ b/rvs/server.js @@ -54,7 +54,10 @@ function cleanupRooms() { // ── WebSocket-Server starten ──────────────────────────────────────── -const wss = new WebSocketServer({ port: PORT }); +// maxPayload 50MB: TTS-Streaming + Voice-Upload (WAV als base64) + +// audio_pcm Chunks koennen die ws-Library Default 1MB ueberschreiten. +// Default-Limit war der Killer fuer die voice_upload Pipeline. +const wss = new WebSocketServer({ port: PORT, maxPayload: 50 * 1024 * 1024 }); wss.on("listening", () => { log(`RVS läuft auf Port ${PORT} | Max Sessions: ${MAX_SESSIONS}`); diff --git a/xtts/whisper/bridge.py b/xtts/whisper/bridge.py index e44022f..90b38f0 100644 --- a/xtts/whisper/bridge.py +++ b/xtts/whisper/bridge.py @@ -212,7 +212,10 @@ async def run_loop(runner: WhisperRunner) -> None: masked = url.replace(RVS_TOKEN, "***") if RVS_TOKEN else url try: logger.info("Verbinde zu RVS: %s", masked) - async with websockets.connect(url, ping_interval=20, ping_timeout=10) as ws: + # max_size 50MB damit grosse stt_request (Voice-Cloning-WAVs als + # base64 koennen mehrere MB werden) nicht das Frame-Limit sprengen + # und die Verbindung mit 1009 'message too big' killen. + async with websockets.connect(url, ping_interval=20, ping_timeout=10, max_size=50 * 1024 * 1024) as ws: logger.info("RVS verbunden") retry_s = 2 tls_fallback_tried = False