Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.26.0
Results
All results below are measured, not estimated. Sample sizes and sources
are stated for every number β see experiments/EXPERIMENTS.md for the
full experiment log with hypotheses and decisions.
Summary table
| Experiment | F1 | Sample | Key finding |
|---|---|---|---|
| EXP-001 Energy/silence baseline | 0.400 | 90-clip val (Phase 3, 300-clip sample, one training shard) | Weak β fixed silence-duration threshold can't distinguish filler-preceded pauses from real endpoints |
| EXP-002 Acoustic features + Logistic Regression | 0.575 | Same 90-clip val as EXP-001 | Strong improvement over EXP-001; still limited by lack of any lexical/semantic signal |
| EXP-003b Temporal (recent-window) acoustic features | +0.112 F1 delta vs. global-only | Same 90-clip val, feature-set ablation on EXP-002's classifier | Recent-window (100β1000ms tail) features meaningfully help; kept in the default feature set |
| EXP-004 Whisper Tiny frozen encoder + Logistic Regression | 0.693 | 75-clip val (fresh, independent 250-clip sample, same dataset) | Strongest measured approach; specifically reduces filler-associated false-END errors |
On the EXP-002 vs. EXP-004 comparison: EXP-002 and EXP-004 used
different development samples β both drawn from
pipecat-ai/smart-turn-data-v3.2-train using the same general
methodology (stratified sampling across endpoint_bool, language,
dataset source, synthetic), but not the same clips, and not a paired
before/after comparison on identical data. The correct way to describe the
+0.118 F1 difference is: a directional improvement on independent
samples drawn from the same Smart Turn training distribution β not a
controlled, paired experiment. This is stated explicitly wherever this
comparison appears in this project's documentation.
Full metrics
EXP-001 β Energy/silence baseline
- n=90 (validation split)
- Accuracy: 0.567
- F1: 0.400
- False-END rate: 0.309
- False-CONTINUE rate: 0.629
- Params: 2 (thresholds)
EXP-002 β Acoustic features + Logistic Regression
- n=90 (same validation split as EXP-001)
- Accuracy: 0.622
- F1: 0.575
- False-END rate: 0.400
- False-CONTINUE rate: 0.343
- Params: 92 (91 features + intercept), ~2,920 bytes
- Inference latency (CPU, Claude sandbox): mean 12.2ms / p95 22.4ms per clip
EXP-003b β Temporal (recent-window) features ablation
- Same 90-clip val set, same classifier family (Logistic Regression)
- Global-only: accuracy 0.511, F1 0.463, false-END rate 0.509
- Global + recent-window: accuracy 0.622, F1 0.575, false-END rate 0.400
- Delta F1: +0.112; delta false-END rate: β0.109; delta false-CONTINUE rate: β0.114
- Both error rates improved simultaneously β not a precision/recall tradeoff in one direction
EXP-004 β Whisper Tiny frozen encoder + Logistic Regression
- n=75 (validation split from a fresh, independent 250-clip sample: 175 dev / 75 val, seed=42)
- Accuracy: 0.693
- F1: 0.693
- False-END rate: 0.257
- False-CONTINUE rate: 0.350
- Encoder params: 8,208,384 (~32.8MB fp32) β matches the confirmed reference Smart Turn architecture's documented ~8M params almost exactly
- Classifier params: 92 (~2,920 bytes)
- Inference latency (Colab T4 GPU): preprocessing
13.5ms + encoder ~1.7ms + classifier ~0.45ms β **15.6ms/clip total**
Filler analysis
Phase 3's error analysis on EXP-002 found that 73% of false-END errors
had filler metadata present (midfiller or endfiller = True), versus
50% of false-CONTINUE errors β meaning the acoustic-only model's dominant
failure mode was exactly the case the assessment brief names as hard: a
pause that acoustically resembles an ending but linguistically isn't
(filler-preceded).
Phase 4's EXP-004 evaluation targeted this directly:
Acoustic (EXP-002, Phase 3, n=39, midfiller only) |
Whisper (EXP-004, Phase 4, n=35, midfiller OR endfiller) |
|
|---|---|---|
| F1 on filler-flagged clips | 0.529 | 0.722 |
And at the individual-error level: Whisper's false-END errors had a filler flag present 56% of the time (5/9), down from the acoustic model's 73% β consistent with, though not definitive proof of, Whisper's representation helping specifically on filler-associated pauses.
This filler-subset result should be treated as directional, not
conclusive β sample sizes are modest (35β39 clips), the two
measurements come from different samples, and the slice definitions
differ slightly (Phase 3 used midfiller alone, Phase 4 used
midfiller OR endfiller). The no_filler_known slice in Phase 4
(n=7) was too small to draw any conclusion from and is explicitly
excluded from this comparison β see docs/ERROR_ANALYSIS.md.
Latency
~15.6ms per clip, measured on a Colab T4 GPU, for the full pipeline (preprocessing + Whisper encoder forward pass + classifier). This is hardware-dependent and should not be read as a CPU-deployment number β the acoustic baseline's 12.2ms figure was measured on CPU, so the two latency numbers are not directly comparable to each other. No CPU-measured Whisper latency exists yet for this project.
Limitations
- Development sample sizes are small. EXP-001/002/003b: 90-clip validation set. EXP-004: 75-clip validation set. Neither approaches the scale needed for tight confidence intervals on F1 or slice metrics.
- EXP-002 and EXP-004 used different samples β not a paired, controlled comparison. See note above.
- No transcripts exist anywhere in the dataset (
spoken_textis null for every row, confirmed at the schema level) β no result in this project relies on or claims access to what was actually said. - No true conversation-level endpoint timestamps exist β this project measures classification accuracy and false-END/false-CONTINUE rates, not true wall-clock endpoint latency (time from actual turn boundary to system decision). This is stated explicitly everywhere latency is discussed.
- Hindi/Hinglish code-switching cannot be directly verified from
dataset metadata β Hindi is present as a language tag (
docs/LANGUAGE_ANALYSIS.mddocuments real, measured Hindi proportions: 4.2% of the full inspected shard), but whether it's naturally code-switched Hindi-English speech or monolingual Hindi (plausibly TTS-generated) was never independently verified via ASR in this project (EXP-000, proposed in Phase 2, was never run). This project does not claim Hinglish robustness. - GPU-measured Whisper latency differs from CPU deployment latency β a production CPU deployment would likely see meaningfully higher encoder latency than the ~1.7ms GPU figure above; this hasn't been measured and shouldn't be assumed.
- No official test-set evaluation has been run.
pipecat-ai/smart-turn-data-v3.2-testwas reserved throughout this project and was never used for tuning or evaluation β this is a deliberate methodological choice, not an oversight, but it does mean no number in this document represents true held-out generalization performance in the strictest sense (the "held-out" splits used were carved from the training distribution, not the official test set).
Future work
- Streaming incremental inference (avoid full-buffer recomputation on
every VAD-triggered call β see
docs/INITIAL_ANALYSIS.mdΒ§5 for the design tension this raises with the reference Smart Turn architecture) - Training/evaluating on a larger sample (the full 270,946-row training set, or at least a much larger subset than 250β300 clips)
- A controlled Hinglish challenge set with verified code-switched content (via ASR-based verification, EXP-000, never run in this project)
- Final evaluation on the official held-out test set
(
pipecat-ai/smart-turn-data-v3.2-test), once the architecture is fully locked