ASR + Smart Turn + Speaker Gate Live Test

Simulates the telephone path: mic captured as 8 kHz PCM Int16 mono (the rate a real phone line delivers), then upsampled to 16 kHz. Audio streams continuously to the ASR service. Smart Turn now uses stateless HTTP — the client keeps a local 16 kHz rolling ring, and each ASR end event POSTs the last ≤ 8 s to /v1/analyze under a 100 ms latency ceiling (see docs/smart_turn/TRANSPORT_HTTP.md). Each Smart Turn probability is fused with six language-agnostic ASR signals — excess trailing silence, tail-confidence drop, fragment size, speech density, cross-segment cadence, and turn duration — into a final commit probability. See docs/smart_turn/SIGNALS.md.

ASR Service

Advanced ASR params

Longer SNR Gate

Always used for the longer SNR gate. When per-call calibration is enabled, this remains the threshold during warm-up and is replaced only after calibration locks.

Per-call Longer SNR Calibration

Enable per-call longer SNR calibration Captured at Start. On uses enforce mode; off keeps the fallback longer SNR threshold for the entire session.
Advanced calibration params
Only the longer-event SNR threshold is calibrated. A real longer SNR becomes trusted when the same VAD index later produces a non-empty transcript—the livetest equivalent of that index contributing input toward ChatCore. When enabled, the first min_samples trusted values calculate and enforce one unbounded bidirectional threshold, which may be as low or high as those values require. Calibration then stops and later SNR values cannot change it. Transcript/normal SNR is never added to this calibrator.

Smart Turn Service

Enable Smart Turn for this session Captured at Start. ASR is always tested. When off, the session skips the Smart Turn HTTP prewarm and the analyze call on ASR end. Locked while a session is running.
Advanced Smart Turn params
Fusion coefficients — applied to Smart Turn prob at each ASR end (see docs/smart_turn/SIGNALS.md)

Speaker Gate Service

Enable Speaker Gate for this session Captured at Start. Enabling Speaker Gate enrolls from ASR end events, then checks the speaker only on longer events when ASR SNR fails. On Stop the client calls /v1/end_session. See docs/ASR/speaker_gate/SPEAKER_GATE.md §Redesign.
Speaker Gate — how it works
Client is a dumb pipe — the livetest sends audio to /v1/enroll on every ASR end until the server confirms enrolled. Once enrolled, a failed ASR SNR check on a longer event sends the available audio to /v1/check. All audio-processing decisions (accumulator threshold, short-chunk floor, tail-trim) live on the server — see the external_servers/speaker_gate_service env vars (ENROLL_THRESHOLD_MS, CHECK_MIN_MS, CHECK_MAX_MS). The server returns raw similarity; the client compares against a longer_similarity_threshold. The longer slice uses the ASR start anchor with backward padding to recover speech onset hidden by ASR event latency.
Requires 8 kHz mono 16-bit PCM WAV (matches saved recordings).
ASR: idle
Smart Turn: idle
Speaker Gate: idle
Mic: idle
ASR Events copyclear
Smart Turn Events copyclear
Speaker Gate Events copyclear
Mic