Audio Classification
Transformers
ONNX
Safetensors
Malay
English
end-of-turn-detection
turn-detection
semantic-vad
endpointing
voice-agent
livekit
whisper
telephony
Instructions to use Scicom-intl/semantic-vad-eot-whisper-base with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Scicom-intl/semantic-vad-eot-whisper-base with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("audio-classification", model="Scicom-intl/semantic-vad-eot-whisper-base")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("Scicom-intl/semantic-vad-eot-whisper-base", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Card: eot-bench comparison first, charts after the table
Browse files
README.md
CHANGED
|
@@ -33,64 +33,7 @@ you want a stricter threshold; otherwise use the tiny model, which we recommend
|
|
| 33 |
|
| 34 |
## Results
|
| 35 |
|
| 36 |
-
|
| 37 |
-
telephony turns, LiveKit defaults: VAD silence 0.55 s, `min_delay` 0.5 s, `max_delay` 3.0 s):
|
| 38 |
-
|
| 39 |
-
| turn detector | latency p50 / p90 | turns cut off | finished turns on the fast path | AUC (eot vs hold) |
|
| 40 |
-
|---|---:|---:|---:|---:|
|
| 41 |
-
| VAD only | 0.63 / 0.71 s | 14.3 % | β | β |
|
| 42 |
-
| smart-turn-v3, threshold 0.5 | 0.65 / 3.04 s | 10.0 % | 82 % | 0.74 |
|
| 43 |
-
| tiny variant, threshold 0.5 | 0.64 / 0.74 s | 10.0 % | 95 % | 0.84 |
|
| 44 |
-
| **this model, threshold 0.3** | **0.64 / 0.74 s** | **9.7 %** | **96 %** | **0.88** |
|
| 45 |
-
| this model, threshold 0.5 | 0.65 / 2.93 s | 9.3 % | 90 % | 0.88 |
|
| 46 |
-
|
| 47 |
-
The int8 export's scores sit a little lower than the tiny model's (recall at 0.5 is 0.87 vs 0.92 at the pause
|
| 48 |
-
start), so **0.3 is this model's equivalent of the tiny model's 0.5**; at 0.5 it is stricter β one more cut-off
|
| 49 |
-
avoided, but 10 % of finished turns wait for `max_delay`. One cut-off turn in 300 separates it from the tiny
|
| 50 |
-
model at matched fast-path share, which is within noise.
|
| 51 |
-
|
| 52 |
-
**Offline, at fixed cut points relative to the start of each pause** (AUC, same 300 turns, every pause):
|
| 53 |
-
|
| 54 |
-
| cut relative to pause start | β0.4 s | β0.2 s | 0.0 s | +0.2 s | +0.6 s |
|
| 55 |
-
|---|---:|---:|---:|---:|---:|
|
| 56 |
-
| smart-turn-v3 | 0.60 | 0.62 | 0.63 | 0.65 | 0.69 |
|
| 57 |
-
| tiny variant (int8) | 0.72 | 0.78 | 0.80 | 0.81 | 0.97 |
|
| 58 |
-
| **this model (int8)** | **0.77** | **0.82** | **0.85** | **0.87** | **0.98** |
|
| 59 |
-
|
| 60 |
-
Score smoothness along a pause matches the tiny model (local std 0.044 over 200 ms, threshold flips 1.7 %
|
| 61 |
-
per 20 ms step; smart-turn-v3 0.124 / 9.8 %).
|
| 62 |
-
|
| 63 |
-
**Under LiveKit's [eot-bench](https://github.com/livekit/eot-bench) harness** (100 ms causal grid over
|
| 64 |
-
every pause β₯ 0.1 s, `threshold Γ action_delay Γ timeout` policy sweep; same adapter for all audio models,
|
| 65 |
-
scored 0.2 s into each pause for the scalar metrics):
|
| 66 |
-
|
| 67 |
-
| set | model | cutoff @ 300 ms budget | cutoff @ 600 ms | latency @ 5 % cutoff | latency @ 10 % cutoff | AUC |
|
| 68 |
-
|---|---|---:|---:|---:|---:|---:|
|
| 69 |
-
| telephony test, 1 000 turns, English (510 eot / 260 hold spans) | **this model** | **47.3 %** | **25.0 %** | **1 722 ms** | **1 261 ms** | **0.84** |
|
| 70 |
-
| | tiny variant | 50.8 % | 30.0 % | 2 039 ms | 1 529 ms | 0.80 |
|
| 71 |
-
| | smart-turn-v3 | 69.6 % | 35.4 % | 2 269 ms | 1 756 ms | 0.66 |
|
| 72 |
-
| | VAD baseline | 77.3 % | 41.9 % | 2 020 ms | 1 610 ms | β |
|
| 73 |
-
| telephony test, 1 000 turns, Malay (485 / 169) | **this model** | **49.1 %** | **25.4 %** | **1 903 ms** | 1 494 ms | **0.86** |
|
| 74 |
-
| | tiny variant | 55.0 % | 32.5 % | 2 019 ms | **1 423 ms** | 0.81 |
|
| 75 |
-
| | smart-turn-v3 | 78.1 % | 39.1 % | 2 635 ms | 2 116 ms | 0.63 |
|
| 76 |
-
| | VAD baseline | 79.3 % | 46.2 % | 2 540 ms | 2 060 ms | β |
|
| 77 |
-
| telephony, the 300 benchmark turns, English (188 / 105) | **this model** | **45.7 %** | **21.9 %** | **1 530 ms** | **1 151 ms** | **0.83** |
|
| 78 |
-
| | tiny variant | 58.1 % | 27.6 % | 1 636 ms | 1 198 ms | 0.77 |
|
| 79 |
-
| | smart-turn-v3 | 74.3 % | 30.5 % | 1 649 ms | 1 164 ms | 0.64 |
|
| 80 |
-
| | VAD baseline | 77.1 % | 31.4 % | 1 800 ms | 1 510 ms | β |
|
| 81 |
-
| telephony, the 300 benchmark turns, Malay (112 / 35) | **this model** | **48.6 %** | **25.7 %** | **1 761 ms** | **1 238 ms** | **0.85** |
|
| 82 |
-
| | tiny variant | 57.1 % | 31.4 % | 1 843 ms | 1 482 ms | 0.78 |
|
| 83 |
-
| | smart-turn-v3 | 68.6 % | 34.3 % | 2 357 ms | 1 603 ms | 0.63 |
|
| 84 |
-
| | VAD baseline | 80.0 % | 34.3 % | 2 410 ms | 1 830 ms | β |
|
| 85 |
-
|
| 86 |
-
Where the tiny model only ties the VAD timer on latency at a 5 % cutoff budget, this one is ahead of it on
|
| 87 |
-
every operating point of every subset, and ahead of the tiny model everywhere except latency at 10 % on the
|
| 88 |
-
Malay 1 000-turn set. The harness asks within the first 100β300 ms of every pause, before an audio model has
|
| 89 |
-
silence evidence; the extra encoder capacity buys the most exactly there (AUC 0.85 vs 0.80 at the pause
|
| 90 |
-
start). In the LiveKit pipeline, which asks after the VAD's 0.4β0.55 s of silence, the two are one cut-off
|
| 91 |
-
turn apart.
|
| 92 |
-
|
| 93 |
-
## Compared with other open detectors (eot-bench, 1 000 telephony turns)
|
| 94 |
|
| 95 |
Same harness, same 1 000 random private telephony test turns (both language tags pooled),
|
| 96 |
every open audio-native end-of-turn detector we could run
|
|
@@ -148,6 +91,65 @@ family, served from a GPU with dynamic batching, and is not public.
|
|
| 148 |
|
| 149 |

|
| 150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
## Files
|
| 152 |
|
| 153 |
| file | what |
|
|
|
|
| 33 |
|
| 34 |
## Results
|
| 35 |
|
| 36 |
+
### Compared with other open detectors (eot-bench, 1 000 telephony turns)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
|
| 38 |
Same harness, same 1 000 random private telephony test turns (both language tags pooled),
|
| 39 |
every open audio-native end-of-turn detector we could run
|
|
|
|
| 91 |
|
| 92 |

|
| 93 |
|
| 94 |
+
### In the pipeline and at fixed cut points
|
| 95 |
+
|
| 96 |
+
**In a real LiveKit Agents 1.8 pipeline** (Silero VAD β turn detector β endpointing, no STT, 300 recorded
|
| 97 |
+
telephony turns, LiveKit defaults: VAD silence 0.55 s, `min_delay` 0.5 s, `max_delay` 3.0 s):
|
| 98 |
+
|
| 99 |
+
| turn detector | latency p50 / p90 | turns cut off | finished turns on the fast path | AUC (eot vs hold) |
|
| 100 |
+
|---|---:|---:|---:|---:|
|
| 101 |
+
| VAD only | 0.63 / 0.71 s | 14.3 % | β | β |
|
| 102 |
+
| smart-turn-v3, threshold 0.5 | 0.65 / 3.04 s | 10.0 % | 82 % | 0.74 |
|
| 103 |
+
| tiny variant, threshold 0.5 | 0.64 / 0.74 s | 10.0 % | 95 % | 0.84 |
|
| 104 |
+
| **this model, threshold 0.3** | **0.64 / 0.74 s** | **9.7 %** | **96 %** | **0.88** |
|
| 105 |
+
| this model, threshold 0.5 | 0.65 / 2.93 s | 9.3 % | 90 % | 0.88 |
|
| 106 |
+
|
| 107 |
+
The int8 export's scores sit a little lower than the tiny model's (recall at 0.5 is 0.87 vs 0.92 at the pause
|
| 108 |
+
start), so **0.3 is this model's equivalent of the tiny model's 0.5**; at 0.5 it is stricter β one more cut-off
|
| 109 |
+
avoided, but 10 % of finished turns wait for `max_delay`. One cut-off turn in 300 separates it from the tiny
|
| 110 |
+
model at matched fast-path share, which is within noise.
|
| 111 |
+
|
| 112 |
+
**Offline, at fixed cut points relative to the start of each pause** (AUC, same 300 turns, every pause):
|
| 113 |
+
|
| 114 |
+
| cut relative to pause start | β0.4 s | β0.2 s | 0.0 s | +0.2 s | +0.6 s |
|
| 115 |
+
|---|---:|---:|---:|---:|---:|
|
| 116 |
+
| smart-turn-v3 | 0.60 | 0.62 | 0.63 | 0.65 | 0.69 |
|
| 117 |
+
| tiny variant (int8) | 0.72 | 0.78 | 0.80 | 0.81 | 0.97 |
|
| 118 |
+
| **this model (int8)** | **0.77** | **0.82** | **0.85** | **0.87** | **0.98** |
|
| 119 |
+
|
| 120 |
+
Score smoothness along a pause matches the tiny model (local std 0.044 over 200 ms, threshold flips 1.7 %
|
| 121 |
+
per 20 ms step; smart-turn-v3 0.124 / 9.8 %).
|
| 122 |
+
|
| 123 |
+
**Under LiveKit's [eot-bench](https://github.com/livekit/eot-bench) harness** (100 ms causal grid over
|
| 124 |
+
every pause β₯ 0.1 s, `threshold Γ action_delay Γ timeout` policy sweep; same adapter for all audio models,
|
| 125 |
+
scored 0.2 s into each pause for the scalar metrics):
|
| 126 |
+
|
| 127 |
+
| set | model | cutoff @ 300 ms budget | cutoff @ 600 ms | latency @ 5 % cutoff | latency @ 10 % cutoff | AUC |
|
| 128 |
+
|---|---|---:|---:|---:|---:|---:|
|
| 129 |
+
| telephony test, 1 000 turns, English (510 eot / 260 hold spans) | **this model** | **47.3 %** | **25.0 %** | **1 722 ms** | **1 261 ms** | **0.84** |
|
| 130 |
+
| | tiny variant | 50.8 % | 30.0 % | 2 039 ms | 1 529 ms | 0.80 |
|
| 131 |
+
| | smart-turn-v3 | 69.6 % | 35.4 % | 2 269 ms | 1 756 ms | 0.66 |
|
| 132 |
+
| | VAD baseline | 77.3 % | 41.9 % | 2 020 ms | 1 610 ms | β |
|
| 133 |
+
| telephony test, 1 000 turns, Malay (485 / 169) | **this model** | **49.1 %** | **25.4 %** | **1 903 ms** | 1 494 ms | **0.86** |
|
| 134 |
+
| | tiny variant | 55.0 % | 32.5 % | 2 019 ms | **1 423 ms** | 0.81 |
|
| 135 |
+
| | smart-turn-v3 | 78.1 % | 39.1 % | 2 635 ms | 2 116 ms | 0.63 |
|
| 136 |
+
| | VAD baseline | 79.3 % | 46.2 % | 2 540 ms | 2 060 ms | β |
|
| 137 |
+
| telephony, the 300 benchmark turns, English (188 / 105) | **this model** | **45.7 %** | **21.9 %** | **1 530 ms** | **1 151 ms** | **0.83** |
|
| 138 |
+
| | tiny variant | 58.1 % | 27.6 % | 1 636 ms | 1 198 ms | 0.77 |
|
| 139 |
+
| | smart-turn-v3 | 74.3 % | 30.5 % | 1 649 ms | 1 164 ms | 0.64 |
|
| 140 |
+
| | VAD baseline | 77.1 % | 31.4 % | 1 800 ms | 1 510 ms | β |
|
| 141 |
+
| telephony, the 300 benchmark turns, Malay (112 / 35) | **this model** | **48.6 %** | **25.7 %** | **1 761 ms** | **1 238 ms** | **0.85** |
|
| 142 |
+
| | tiny variant | 57.1 % | 31.4 % | 1 843 ms | 1 482 ms | 0.78 |
|
| 143 |
+
| | smart-turn-v3 | 68.6 % | 34.3 % | 2 357 ms | 1 603 ms | 0.63 |
|
| 144 |
+
| | VAD baseline | 80.0 % | 34.3 % | 2 410 ms | 1 830 ms | β |
|
| 145 |
+
|
| 146 |
+
Where the tiny model only ties the VAD timer on latency at a 5 % cutoff budget, this one is ahead of it on
|
| 147 |
+
every operating point of every subset, and ahead of the tiny model everywhere except latency at 10 % on the
|
| 148 |
+
Malay 1 000-turn set. The harness asks within the first 100β300 ms of every pause, before an audio model has
|
| 149 |
+
silence evidence; the extra encoder capacity buys the most exactly there (AUC 0.85 vs 0.80 at the pause
|
| 150 |
+
start). In the LiveKit pipeline, which asks after the VAD's 0.4β0.55 s of silence, the two are one cut-off
|
| 151 |
+
turn apart.
|
| 152 |
+
|
| 153 |
## Files
|
| 154 |
|
| 155 |
| file | what |
|