From 32ddac002f04f5327fdd4e8d5c7eb8e2a37ed661 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 22 Apr 2026 18:56:00 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20stream=5Fchunk=5Fsize=20auf=20250=20erho?= =?UTF-8?q?eht=20=E2=80=94=20weniger=20Render-Artefakte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit XTTS daswer123 erzeugt an Chunk-Grenzen oft Glitches in den Worten die ueber die Grenze gehen. 100 → 250 = weniger Grenzen pro Satz = sauberere Sprachausgabe. Erste-Audio-Latenz steigt um ein paar Sekunden, was aber OK ist seit die App Pre-Roll gepuffert ist. Co-Authored-By: Claude Opus 4.7 (1M context) --- xtts/bridge.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/xtts/bridge.js b/xtts/bridge.js index da2a5eb..d07419c 100644 --- a/xtts/bridge.js +++ b/xtts/bridge.js @@ -216,15 +216,14 @@ function streamXTTSAsPCM(text, language, speakerWav, onPcmChunk) { return new Promise((resolve, reject) => { // Wichtig: speaker_wav MUSS als Query-Key dabei sein (Pydantic required) — // auch bei default-voice mit leerem Wert. Sonst gibt's HTTP 422. - // stream_chunk_size=100: Kompromiss zwischen first-audio-latency und - // gap-risk. Bei RTX 3060 (RTF 1.48) ~3s bis erster Audio, Chunks gross - // genug dass der AudioTrack-Buffer (128KB ≈ 2.7s) zwischen Chunks nicht - // leerlauft. + // stream_chunk_size=250: grosse Chunks = wenige Chunk-Grenzen = wenig + // Render-Artefakte. daswer123 erzeugt an Chunk-Boundaries haeufig Glitches + // in den Worten die ueber die Grenze gehen. Hoehere Latenz ist OK. const qs = new URLSearchParams(); qs.set("text", text); qs.set("language", language || "de"); qs.set("speaker_wav", speakerWav || ""); - qs.set("stream_chunk_size", "100"); + qs.set("stream_chunk_size", "250"); const url = new URL(XTTS_API_URL); const fullPath = `/tts_stream?${qs.toString()}`;