Endpointing

View as Markdown
Real-Time

Pulse STT streaming finalizes each turn on trailing silence. When the speaker stops, the server emits is_final: true promptly instead of waiting for the model’s internal finalization cadence. Transcript accuracy is unchanged.

On by default. Set endpointing=false on the WebSocket URL to opt out.

When to use it

Leave endpointing=true (the default) for:

  • Voice agents. Faster is_final means faster LLM turn, faster TTS response, lower perceived latency.
  • Live captioning. Steadier finalization pacing between the speaker stopping and the caption settling.
  • Any interactive workload where the client acts on is_final=true and the wait between speech-end and finalize is user-visible.

Set endpointing=false for batch-style workloads that consume the full transcript at the end and don’t care about per-turn finalize timing.

Disabling

1const url = new URL("wss://api.smallest.ai/waves/v1/stt/live?model=pulse");
2url.searchParams.append("language", "en");
3url.searchParams.append("encoding", "linear16");
4url.searchParams.append("sample_rate", "16000");
5url.searchParams.append("endpointing", "false");
6
7const ws = new WebSocket(url.toString(), {
8 headers: { Authorization: `Bearer ${API_KEY}` },
9});

Parameters

ParameterValuesDefaultEffect
endpointing"true" / "false""true"Finalize-on-silence. Set to "false" to fall back to the model’s internal finalization cadence.

How finalization changes

With endpointing=true (default): the connection watches for a silence gap on the audio and finalizes as soon as one is detected. No tokens are lost.

With endpointing=false: the model finalizes each turn on its own internal cadence, which is slower than trailing-silence detection and varies with where the speaker’s pause lands.

Accuracy is unchanged. The same tokens are emitted either way. Only the finalize timing changes.

Interaction with other params

  • vad_events. Independent. endpointing controls when the current turn’s transcript is finalized. vad_events adds speech_started / speech_ended messages for observability. They do not conflict.
  • eou_timeout_ms. The model’s own end-of-utterance timer. When endpointing=true, silence detection usually fires first, so eou_timeout_ms acts as a ceiling. When endpointing=false, it controls finalization alone.
  • finalize_on_words. Word-count-based auto-finalization (default true). Independent of endpointing. Whichever condition fires first triggers the final.
  • finalize message. Client-triggered finalization always takes precedence and works with any combination of the above.

Notes

  • On by default. Existing streaming clients get the new behavior automatically. Accuracy is unchanged.
  • Opt-out. Set endpointing=false to restore the previous finalization behavior.
  • India region only for South Indian languages. ta, te, kn, ml, and multi-south-indic route through the India region gateway. Endpointing works identically on both regions.