tune: stream_chunk_size 200 -> 100 gegen 6s Initial-Latenz
Mit RTF 1.48 (RTX 3060) rechnet XTTS fuer 200 chars ca. 6s bis erster PCM-Chunk rauskommt — User wartet nach ARIA-Antwort 6s auf Sprachausgabe. stream_chunk_size=100: Erster Chunk in ~3s bereit, reduziert Initial-Latenz um ~50%. 100 chars sind auch noch gross genug dass der AudioTrack-Buffer (128KB ≈ 2.7s Audio) zwischen Render-Chunks nicht leerlaeuft → kein mid-sentence Abbruch wie bei 40. Falls bei bestimmten Texten doch Gaps: stream_chunk_size zurueck auf 150, oder pre-roll im Android PcmStreamPlayer einbauen (nur starten wenn X ms gepuffert sind). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
cd5e6e7ee6
commit
0623de32a0
|
|
@ -216,13 +216,15 @@ function streamXTTSAsPCM(text, language, speakerWav, onPcmChunk) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
// Wichtig: speaker_wav MUSS als Query-Key dabei sein (Pydantic required) —
|
// Wichtig: speaker_wav MUSS als Query-Key dabei sein (Pydantic required) —
|
||||||
// auch bei default-voice mit leerem Wert. Sonst gibt's HTTP 422.
|
// auch bei default-voice mit leerem Wert. Sonst gibt's HTTP 422.
|
||||||
// stream_chunk_size=200: XTTS rendert groessere Text-Happen, d.h. weniger
|
// stream_chunk_size=100: Kompromiss zwischen first-audio-latency und
|
||||||
// Pausen zwischen Chunks (wenn RTF > 1 ist der Buffer sonst oft leer).
|
// 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.
|
||||||
const qs = new URLSearchParams();
|
const qs = new URLSearchParams();
|
||||||
qs.set("text", text);
|
qs.set("text", text);
|
||||||
qs.set("language", language || "de");
|
qs.set("language", language || "de");
|
||||||
qs.set("speaker_wav", speakerWav || "");
|
qs.set("speaker_wav", speakerWav || "");
|
||||||
qs.set("stream_chunk_size", "200");
|
qs.set("stream_chunk_size", "100");
|
||||||
|
|
||||||
const url = new URL(XTTS_API_URL);
|
const url = new URL(XTTS_API_URL);
|
||||||
const fullPath = `/tts_stream?${qs.toString()}`;
|
const fullPath = `/tts_stream?${qs.toString()}`;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue