Master Simulator

The whole real-time turn loop, one control panel

Drive every knob from noise and audio filters through VAD, endpointing, turn-taking, barge-in and echo grace, and watch a single caller turn play out on a shared clock. Each decision is traced back to the exact pipecat-agent line that makes it. Call-level controls (silence timeout, voicemail, DTMF) run on a different timescale and live in Part 9.

Presets:
Caller & scene

Scene inputs (the caller and environment) — not dashboard settings. Hover any row for a one-line explanation.

0.20
0.80
0.30
1.5
3
Audio filters — dashboard: STT › Advanced (Part 6)
VAD / endpointing — dashboard: STT › Voice Activity Detection (Part 7)
0.70
0.40
0.20
0.20
1.0
Turn-taking & barge-in — dashboard: TTS › Speaking Plans + STT echo (Part 3 / 7)
0.4
1
0.00
Bot speech Caller speech (heard) Cut-off / false trigger Noise floor Grace / wait window
Adjust the knobs.
Pipeline trace — every decision, with its code reference

    How to read it

    This simulator is a teaching model, not the real DSP. The numbers and thresholds match the validator ranges and the runtime defaults exactly (see phase0-report.md), and the branch logic mirrors base_service.py, but real audio is messier. Use it to build intuition for which knob moves which outcome, then confirm a real change with a test call and the VAD boot log line (base_service.py:1552), per Part 10.

    Not in this simulator on purposevoiceSeconds and backOffSeconds are absent because they are dead knobs (no runtime consumer in pipecat-agent@dev — verified). Including sliders for them would teach a fiction. aicEnabled is present but, like in production, does nothing when ticked.

    STT streaming vs batch — what changes

    Freya's on-prem STT can run in two modes via Streaming Transcription (sttConfig.additionalSettings.streaming; picks FreyaSTTStreamingService vs the default batch FreyaSTTService, base_service.py:639). It is not a control in this simulator, because flipping it does not change what any slider above does. Here is the honest mapping so you can reason about it.

    Bottom lineStreaming vs batch does not move any slider's behavior. It flips two things: (1) whether the low-confidence re-ask gate can fire at all (streaming only), and (2) end-to-end latency / how much you rely on Turn Stop Timeout (batch leans on it more).