From 647a1cb726999666cec560d7996826ca9e9d207c Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 22 Apr 2026 17:23:55 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20XTTS=20nutzt=20direkt=20/tts=5Fto=5Faudi?= =?UTF-8?q?o/=20=E2=80=94=20/tts=5Fstream=20nicht=20verfuegbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit XTTS-Server (daswer123) im API-Modus antwortet auf /tts_stream mit: HTTP 400: "HTTP Streaming is only supported for local models" Das Feature braucht MODE=local in der XTTS-Config (Modell direkt im Server-Prozess). Userbetreibt im Remote-Modus → kein Streaming. Der try /tts_stream + fallback /tts_to_audio Ansatz war reine Ver- schwendung: jeder Request wartete 6ms auf 400, bevor der Fallback griff. Jetzt geht's direkt an /tts_to_audio/. Kein echtes Streaming, aber: - Queue sorgt fuer sequentielle Verarbeitung (kein Overlap mehr) - 32x AudioTrack-Buffer faengt den bursty Response ab - aria-bridge spiegelt audio_pcm nicht mehr (kein Doppel-Audio) Wenn User spaeter /tts_stream haben will: XTTS-Server mit MODE=local oder --streaming-mode starten, dann kann man /tts_stream als primary einfuehren. Co-Authored-By: Claude Opus 4.7 (1M context) --- xtts/bridge.js | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/xtts/bridge.js b/xtts/bridge.js index 023925c..4a8ab0b 100644 --- a/xtts/bridge.js +++ b/xtts/bridge.js @@ -157,24 +157,16 @@ async function _runTTSRequest(payload) { }); }; - // Erst /tts_stream (GET) versuchen — echter Streaming, schnell. - // Bei Fehler Fallback auf /tts_to_audio/ (POST) damit Audio trotzdem kommt. - try { - await streamXTTSAsPCM( - cleanText, - language || "de", - hasCustomVoice ? voiceSample : null, - onChunk, - ); - } catch (streamErr) { - log(`/tts_stream fehlgeschlagen (${streamErr.message}) — Fallback auf /tts_to_audio/`); - await streamXTTSBatch( - cleanText, - language || "de", - hasCustomVoice ? voiceSample : null, - onChunk, - ); - } + // /tts_stream funktioniert nur bei XTTS im local-Modus. daswer123 im + // Remote-API-Modus antwortet mit 400 'HTTP Streaming is only supported + // for local models'. Wir nutzen stabil /tts_to_audio/ (batch render, + // dann Response-Body chunkweise als PCM). + await streamXTTSBatch( + cleanText, + language || "de", + hasCustomVoice ? voiceSample : null, + onChunk, + ); // Am Ende: final-Flag damit App weiss "fertig" und Cache geschrieben werden kann if (pcmMeta) {