fix: stream_chunk_size 40 -> 200 gegen Audio-Abbrueche mid-sentence
Bei stream_chunk_size=40 teilte XTTS Text in ~40-char Batches. Zwischen Batches pausiert XTTS (RTF 1.48 auf RTX 3060 → langsamer als Realtime-Wiedergabe). AudioTrack-Buffer lief leer, Track stoppte, nachkommender PCM kam zu spaet → Audio bricht mid-sentence ab (User-Bug: bei 73-char Text Abbruch nach Wort 'diesmal' was genau an der 40-char Grenze lag). stream_chunk_size=200: - Kurze Saetze (<200 chars) komplett in einem Render → kein Abbruch - Laengere Texte: groessere Chunks, laenger Audio pro Chunk als Render-Pause → Buffer bleibt gefuellt - Kompromiss: first-audio-latency etwas hoeher, aber keine Abbrueche Wenn spaeter Audio-Abbrueche bei langen Texten: stream_chunk_size noch groesser setzen ODER einen "pre-roll" Buffer in der App. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ee3e0a0af6
commit
cd5e6e7ee6
|
|
@ -216,11 +216,13 @@ 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=200: XTTS rendert groessere Text-Happen, d.h. weniger
|
||||
// Pausen zwischen Chunks (wenn RTF > 1 ist der Buffer sonst oft leer).
|
||||
const qs = new URLSearchParams();
|
||||
qs.set("text", text);
|
||||
qs.set("language", language || "de");
|
||||
qs.set("speaker_wav", speakerWav || "");
|
||||
qs.set("stream_chunk_size", "40");
|
||||
qs.set("stream_chunk_size", "200");
|
||||
|
||||
const url = new URL(XTTS_API_URL);
|
||||
const fullPath = `/tts_stream?${qs.toString()}`;
|
||||
|
|
|
|||
Loading…
Reference in New Issue