🐦 warbler v3 release notes
what changed
v3 fixes a calibration and generalization problem found while benchmarking the original (v1) model against held-out, real-world speech: v1 was trained almost entirely on studio-quality audio, so it learned "is this recording pristine?" as a shortcut for "is this speech?" - and fell apart on noisier, naturalistic recordings, especially Chinese, Korean, and Japanese speech.
-
colored noise augmentation
-
label smoothing
-
more singing languages
-
held-out-aware checkpointing
benchmark
evaluated on 531 held-out clips (100 singing + 431 speech) across English, Japanese, Korean, and Chinese - none of which were used in training. v2 was an intermediate, unreleased checkpoint kept here for reference.
| model | accuracy | f1 | auc | ms/clip | params |
|---|---|---|---|---|---|
| warbler v3 | 0.959 | 0.893 | 0.990 | 7.0 | ~100k |
| warbler v2 (unreleased) | 0.608 | 0.488 | 0.962 | 8.7 | ~100k |
| warbler v1 (baseline) | 0.330 | 0.357 | 0.904 | 8.6 | ~100k |
| CLAP general | 0.492 | 0.423 | 0.976 | 363.3 | ~190M |
| CLAP music+speech | 0.439 | 0.389 | 0.815 | 345.6 | ~190M |
per-language accuracy (raw 0.5 threshold):
| model | en | ja | ko | zh |
|---|---|---|---|---|
| warbler v3 | 1.00 | 0.95 | 0.95 | 1.00 |
| warbler v2 (unreleased) | 0.86 | 0.13 | 0.44 | 0.59 |
| warbler v1 (baseline) | 0.41 | 0.05 | 0.08 | 0.00 |
| CLAP general | 0.06 | 0.02 | 0.38 | 0.90 |
| CLAP music+speech | 0.20 | 0.16 | 0.43 | 0.28 |
v3 beats both LAION CLAP variants on accuracy and F1, runs roughly 50x faster per clip, and is on the order of 1,800x smaller in parameter count - while CLAP is a general-purpose, zero-shot audio classifier built to handle 500+ arbitrary categories, not just this one binary task.
specs
- architectureconv blocks → global pooling → small FC head → sigmoid
- checkpoint size~410 KB
- inputlog-mel spectrogram, 80 mels, 4s clips @ 22.05kHz
- training languagesen, ja, zh, ko, es, fr, th, sv
- label smoothing0.1
- augmentationpitch shift, time stretch, white/pink/brown noise @ 5-30dB SNR
- checkpoint selectionbest held-out F1, not manifest val F1