huseinzolkepliscicom commited on
Commit
8ac3d3f
Β·
verified Β·
1 Parent(s): 6b53dac

Card: eot-bench comparison first, charts after the table

Browse files
Files changed (1) hide show
  1. README.md +60 -58
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
- **In a real LiveKit Agents 1.8 pipeline** (Silero VAD β†’ turn detector β†’ endpointing, no STT, 300 recorded
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
  ![Operating points across sets and language tags](https://huggingface.co/Scicom-intl/semantic-vad-eot-whisper-base/resolve/main/assets/heatmap.png)
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
  ![Operating points across sets and language tags](https://huggingface.co/Scicom-intl/semantic-vad-eot-whisper-base/resolve/main/assets/heatmap.png)
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 |