Downloads · 30 days
0
Mayank022/hinglish-turn-detector-whisper-tiny-dual-scale
hinglish-turn-detector-whisper-tiny-dual-scale is a audio classification model from Mayank022. Use it for the audio classification task on the model card, and read the license before you ship it in a product. The card lists the license as other.
A compact audio-only classifier that predicts whether a speaker has completed their turn or is holding the floor. It is designed to run after a lightweight VAD observes a candidate pause. This model does not require A…
Downloads · 30 days
0
Access
Public
Updated Aug 21, 2026
Parameters
8.3M
77.1 MB on disk
Likes
1
Public
Click a slice to open those files.
.onnx43.9 MB · 57%
From the Hugging Face model README
A compact audio-only classifier that predicts whether a speaker has completed their turn or is holding the floor. It is designed to run after a lightweight VAD observes a candidate pause. This model does not require ASR or text at inference time.
This card is generated from the packaged run artifacts. Missing results are shown as Not available instead of being estimated or hand-entered.
openai/whisper-tinydual_scaleCOMPLETEdynamic_weight_onlyTrueThe encoder feeds masked global attention pooling and a recent-window attention/mean/max branch. The fused representation predicts turn completion. Separate mid-filler and end-filler auxiliary outputs supervise training but are not required by the exported inference graph.
The candidate temperature and endpoint policy are selected on validation data and frozen before test evaluation.
| Metric | Test value |
|---|---|
| Examples | 21,995 |
| F1 | 0.7399 |
| Balanced accuracy | 0.8248 |
| AUROC | 0.9361 |
| Average precision | 0.7983 |
| False-cutoff rate | 0.0472 |
| False-hold rate | 0.3033 |
| Expected calibration error | 0.1043 |
validationFalse| Slice | Count | F1 | False-cutoff rate |
|---|---|---|---|
language:hin | 3,124 | 0.7656 | 0.1144 |
language:eng | 18,871 | 0.7340 | 0.0362 |
filler:mid | 5,099 | 0.7239 | 0.0840 |
filler:end | 2,305 | Not available | Not available |
filler:any | 6,235 | 0.7034 | 0.0773 |
hard:incomplete_filler | 5,267 | Not available | Not available |
kind:causal_internal_pause | 13,040 | Not available | Not available |
kind:original | 8,955 | 0.7905 | 0.0648 |
The robustness subset is deterministically stratified across language, label, original/causal examples, filler type, and synthetic status. Each corruption uses the same selected records.
| Condition | F1 | False-cutoff rate |
|---|---|---|
clean | 0.7044 | 0.0799 |
clipping | 0.6835 | 0.0839 |
gain_low | 0.6904 | 0.0852 |
mulaw | 0.7042 | 0.0826 |
noise_10db | 0.5283 | 0.1358 |
noise_20db | 0.6905 | 0.0826 |
noise_5db | 0.3679 | 0.1292 |
reverb | 0.5861 | 0.1438 |
speed_0.9 | 0.6653 | 0.1012 |
speed_1.1 | 0.6608 | 0.0759 |
telephone | 0.6477 | 0.1105 |
Linux-6.8.0-124-generic-x86_64-with-glibc2.35, 128 logical CPUsEnd-to-end latency includes waveform standardization, log-Mel extraction, probability calibration, and ONNX inference. It excludes audio decoding/disk I/O and the configured silence wait.
Smart Turn v3.2 is pinned by revision. Its temperature, threshold, action delay, and timeout are selected on validation data under the same configured false-cutoff budget as the candidate, then both policies are frozen for the paired test comparison.
| Model | Test F1 |
|---|---|
| Candidate | 0.7399 |
| Smart Turn v3.2 | 0.4364 |
Training and in-domain evaluation use only the Hindi (hin) and English (eng) subsets of the
provided Smart Turn v3.2 train/test dataset family. endpoint_bool supplies the main completion
label; midfiller and endfiller supply auxiliary supervision. Causal internal-pause examples and
mined hard negatives teach the model not to interrupt a speaker who is likely to continue.
The test split remains separate from threshold, temperature, policy, and baseline selection. Reported confidence intervals use parent-turn group bootstrapping. Robustness results cover telephone filtering, mu-law, additive noise, speed changes, low gain, clipping, and reverb.
from turn_detector.inference import TurnDetector
from turn_detector.audio import load_audio
detector = TurnDetector("hinglish-turn.int8.onnx")
audio, sample_rate = load_audio("candidate_pause.wav")
prediction = detector.score(audio, sample_rate)
print(prediction.probability, prediction.decision)
See evaluation/evaluation_report.json, evaluation/baselines/baseline_report.json,
calibration_report.json, and export_report.json for the complete machine-readable results.