Ahmed
04/12/2026, 1:46 PMChiranjeet Mishra
04/12/2026, 1:46 PMChiranjeet Mishra
04/18/2026, 3:34 AM019d81bc-82ca-7ee4-b41b-dd240c3f9255 and wanted to share a few findings.
**The character buffering (minCharacters: 80) isn’t the issue.** Your LLM is generating tokens very quickly, so responses are completing before the threshold is hit. As a result, everything is being sent to ElevenLabs as a single block—no mid-stream chunking is actually happening.
The main issue is the 0ms endpointing timeout, which is causing duplicate model requests. The transcriber sends a partial transcript, immediately triggering an LLM request, then the final transcript arrives milliseconds later and triggers another. The first response gets discarded, adding ~500–1000ms delay per turn.
Recommended changes:
1. Increase endpointing timeouts (highest impact):
"startSpeakingPlan": {
"waitSeconds": 0.7,
"transcriptionEndpointingPlan": {
"onPunctuationSeconds": 0.1,
"onNoPunctuationSeconds": 0.8,
"onNumberSeconds": 0.5
}
}
Even a small delay (e.g. 100ms on punctuation) prevents most duplicate requests, and onNoPunctuationSeconds: 0.8 avoids triggering on partial transcripts.
1. Lower minCharacters for Arabic (minor improvement):
"voice": {
"chunkPlan": {
"enabled": true,
"minCharacters": 30
}
}
Arabic responses tend to be shorter, so this is a better fit. It won’t significantly impact latency with your current setup, but helps in cases with longer outputs.
Lastly, the transcript fragmentation (multiple AI: lines) is just from ElevenLabs sync alignment. It doesn’t reflect actual audio gaps.
Best,
VAPI Support