diff --git a/fern/customization/voice-pipeline-configuration.mdx b/fern/customization/voice-pipeline-configuration.mdx index 125a9f7d7..609470f76 100644 --- a/fern/customization/voice-pipeline-configuration.mdx +++ b/fern/customization/voice-pipeline-configuration.mdx @@ -118,10 +118,10 @@ User Audio → VAD → Transcription → Start Speaking Decision → LLM → TTS Voice Activity Detection (VAD) detects utterance-stop - System evaluates completion using this priority order: - 1. **Transcriber EOT detection** (if transcriber has built-in EOT and no smart endpointing plan) - 2. **Custom Rules** (highest priority when configured) - 3. **Smart Endpointing Plan** (LiveKit for English, Vapi for non-English) + System evaluates completion in this order and stops at the first step that applies: + 1. **Transcriber EOT detection** (if the transcriber has built-in EOT and no `smartEndpointingPlan` is set, or the plan's provider is the transcriber itself). The turn ends on the transcriber's final transcript, and custom rules are not evaluated. + 2. **Custom Rules** (if a rule matches, its timeout is used) + 3. **Smart Endpointing Plan** (LiveKit for English, Vapi for non-English), or the heuristic `transcriptionEndpointingPlan` when no smart endpointing applies LLM request sent immediately → TTS processes → waitSeconds applied → @@ -508,7 +508,7 @@ Understanding exact timing helps optimize your voice pipeline configuration. Thi ### Custom endpointing rules -Highest priority rules that override all other endpointing decisions when patterns match. +Rules that override the smart endpointing plan and `transcriptionEndpointingPlan` when a pattern matches. They are not evaluated when the transcriber's own end-of-turn detection is in use (see [Start speaking process](#start-speaking-process)). ```json {