huseinzolkepliscicom commited on
Commit
b8f1336
Β·
verified Β·
1 Parent(s): 028091a

Model card: comparison with other open detectors under eot-bench + charts

Browse files
.gitattributes CHANGED
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ assets/cutoff_at_budget.png filter=lfs diff=lfs merge=lfs -text
37
+ assets/heatmap.png filter=lfs diff=lfs merge=lfs -text
38
+ assets/latency_at_budget.png filter=lfs diff=lfs merge=lfs -text
39
+ assets/pareto.png filter=lfs diff=lfs merge=lfs -text
README.md CHANGED
@@ -92,6 +92,34 @@ silence evidence; the extra encoder capacity buys the most exactly there (AUC 0.
92
  start). In the LiveKit pipeline, which asks after the VAD's 0.4–0.55 s of silence, the two are one cut-off
93
  turn apart.
94
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  ## Files
96
 
97
  | file | what |
@@ -141,23 +169,6 @@ Use `p β‰₯ 0.3` as "the turn is over" for the operating point in the table above
141
  snippet (a `WhisperEncoder` subclass that accepts the 8 s window + the 3-layer head) is on the tiny model's
142
  card and works unchanged with this repo id (`d_model` 512).
143
 
144
- ## Training
145
-
146
- Same as the tiny model: `Scicom-intl/semantic-vad-eot-emgs` (private call-centre telephony, Malay/English,
147
- customer + agent channels), all train + validation files, early stopping (patience 3) on a fixed 4 000-cut
148
- sample of the test split β€” the pipeline benchmark's 300 turns come from that split too, so the numbers are
149
- in-distribution. Six cut offsets per pause drawn uniformly in [βˆ’0.4, +1.2] s (never a fixed grid β€” it gets
150
- memorised), 8 s left-padded window, mean of the last 5 encoder frames β†’ `EoTHead`. `openai/whisper-base`
151
- encoder (6 layers, d 512) fully fine-tuned in bf16, batch 128, AdamW lr 5e-5 constant after warm-up.
152
- Early-stopped at step 32 000 (validation AUC 0.877 on uniform cuts; tiny: 0.859 at step 8 000). ONNX via
153
- `torch.onnx.export` at the fixed 800-frame input, MatMul-only dynamic int8.
154
-
155
- ## Limitations
156
-
157
- As for the tiny model: telephony Malay/English only (matches, does not beat, the VAD baseline on Malay read
158
- speech); expects the raw phone channel (noise cancellation in front of it hurt); feed unit-scale float audio;
159
- query it after a short VAD silence, not on every frame; a 300-turn sample stands behind the pipeline numbers.
160
-
161
  ## License
162
 
163
  Apache-2.0 (the Whisper encoder it fine-tunes is Apache-2.0). The training data is not released.
 
92
  start). In the LiveKit pipeline, which asks after the VAD's 0.4–0.55 s of silence, the two are one cut-off
93
  turn apart.
94
 
95
+ ## Compared with other open detectors (eot-bench, 1 000 telephony turns)
96
+
97
+ Same harness, same 1 000 random `Scicom-intl/semantic-vad-eot-emgs` test turns (both language tags pooled),
98
+ every open audio-native end-of-turn detector we could run locally; cloud services were not run because the
99
+ call audio may not leave our infrastructure. Third-party models run through eot-bench's own adapters with the
100
+ language gate widened to Malay; the text detector on transcripts from our Whisper STT (segment timestamps
101
+ interpolated to words, ~30 % of these short turns have no transcript); ultraVAD without the assistant context
102
+ it was designed for (this set has none).
103
+
104
+ | model | cutoff @ 300 ms | cutoff @ 600 ms | latency @ 5 % cutoff | latency @ 10 % cutoff | AUC |
105
+ |---|---:|---:|---:|---:|---:|
106
+ | **Semantic-VAD whisper-base v6** ([repo](https://huggingface.co/Scicom-intl/semantic-vad-eot-whisper-base)) | **47.3 %** | **25.4 %** | **1 812 ms** | **1 280 ms** | **0.85** |
107
+ | **Semantic-VAD whisper-tiny v6** ([repo](https://huggingface.co/Scicom-intl/semantic-vad-eot-whisper-tiny)) | 52.2 % | 30.8 % | 2 042 ms | 1 503 ms | 0.81 |
108
+ | LiveKit turn-detector v1-mini (audio-only, `livekit-local-inference`) | 63.6 % | 35.7 % | 2 156 ms | 1 720 ms | 0.74 |
109
+ | ultraVAD (`fixie-ai/ultraVAD`, 0.7 B, no text context) | 71.6 % | 39.6 % | 2 212 ms | 1 784 ms | 0.65 |
110
+ | smart-turn v3.2 (`pipecat-ai/smart-turn-v3`) | 73.7 % | 36.6 % | 2 296 ms | 1 860 ms | 0.65 |
111
+ | LiveKit text turn-detector v0.4.1-intl (on STT transcripts) | – | – | 2 381 ms | 1 894 ms | 0.45 |
112
+ | smart-turn v2 (`pipecat-ai/smart-turn-v2`, 95 M wav2vec2) | 74.1 % | 39.6 % | 2 500 ms | 2 000 ms | 0.62 |
113
+ | VAD baseline (silence timer) | 78.1 % | 43.6 % | 2 250 ms | 1 770 ms | – |
114
+
115
+ ![Pareto frontier: false cutoffs vs latency](assets/pareto.png)
116
+
117
+ ![Best false-cutoff rate at a 300 / 600 ms latency budget](assets/cutoff_at_budget.png)
118
+
119
+ ![Best mean latency at a 5 / 10 % false-cutoff budget](assets/latency_at_budget.png)
120
+
121
+ ![Operating points across sets and language tags](assets/heatmap.png)
122
+
123
  ## Files
124
 
125
  | file | what |
 
169
  snippet (a `WhisperEncoder` subclass that accepts the 8 s window + the 3-layer head) is on the tiny model's
170
  card and works unchanged with this repo id (`d_model` 512).
171
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  ## License
173
 
174
  Apache-2.0 (the Whisper encoder it fine-tunes is Apache-2.0). The training data is not released.
assets/auc.png ADDED
assets/cutoff_at_budget.png ADDED

Git LFS Details

  • SHA256: 6c4206be284c01a841d9b940a7bcc3b116c7d9cfbaf64983e543ac351eb2b1c4
  • Pointer size: 131 Bytes
  • Size of remote file: 147 kB
assets/heatmap.png ADDED

Git LFS Details

  • SHA256: 99611099d0c01a1adc4bcf6e3b85ed3a9b590930a2d0f68d7915c2b6eb4dbdd5
  • Pointer size: 131 Bytes
  • Size of remote file: 228 kB
assets/latency_at_budget.png ADDED

Git LFS Details

  • SHA256: cc3a3c5a881dcddbf6b9a4d74504ee0d4991e4fc6543d838b7a25b2128445f10
  • Pointer size: 131 Bytes
  • Size of remote file: 151 kB
assets/pareto.png ADDED

Git LFS Details

  • SHA256: b8ec4d7d6a71525e9c11aca4bd7dd19bb2dfb7cc96add0eddc4b8004bc8408ab
  • Pointer size: 131 Bytes
  • Size of remote file: 212 kB