S-SONDO
Lightweight audio embeddings from self-supervised knowledge distillation.
Up to 61x smaller than teacher models, retaining up to 96% performance.
ICASSP 2026
Install
pip install ssondo
Quick Start
from ssondo import get_ssondo
model = get_ssondo()
embeddings = model(audio) # (batch, n_segments, 960)
No preprocessing, no config files, no manual downloads. Pass raw mono audio at 32 kHz and get embeddings.
Pretrained Classifiers
7 ready-to-use classifiers trained on standard audio benchmarks:
model = get_ssondo(head="esc50")
logits = model(audio) # (batch, 50)
| Head | Task | Classes |
|---|---|---|
esc50 |
Environmental sound | 50 |
us8k |
Urban sound | 10 |
fsd50k |
Sound events | 200 |
gtzan |
Music genre | 10 |
openmic |
Instrument recognition | 20 |
nsynth |
Instrument family | 11 |
magna-tag-a-tune |
Music auto-tagging | 50 |
Custom Heads
# Linear
model = get_ssondo(head="linear", n_classes=10)
# MLP
model = get_ssondo(head="mlp", n_classes=10, hidden_sizes=[512, 256])
Finetuning
# Linear probing (frozen backbone)
model = get_ssondo(head="linear", n_classes=10)
model.freeze_backbone()
model.train()
logits = model(audio)
loss = criterion(logits, labels)
loss.backward() # only head parameters update
# Full finetuning
model.unfreeze_backbone()
API at a Glance
from ssondo import get_ssondo, list_models, list_heads
model = get_ssondo() # load model
model = get_ssondo(head="esc50") # pretrained classifier
model = get_ssondo(head="linear", n_classes=10) # custom head
model = get_ssondo(device="cuda") # GPU
model = get_ssondo("path/to/checkpoint.ckpt") # local checkpoint
embeddings = model(audio) # (batch, n_segments, 960)
emb = model.get_embeddings(audio) # (batch, 960) mean-pooled
model.embedding_dim # 960
model.backbone # raw nn.Module
list_heads() # available classifiers
Model
S-SONDO ships with matpac-mobilenetv3 — a MobileNetV3 (2.9M params) distilled from MATPAC++, achieving the best downstream performance across all 7 benchmarks (96.4% of teacher performance at 61x fewer parameters). Embeddings are 960-dimensional.
Input
- Mono audio, single channel
- Sample rate: 32,000 Hz
- Internally sliced into 10 s segments and converted to 128-band log-mel spectrograms
Links
- Paper: arXiv
- Models: Hugging Face Hub
- Code & Training: GitHub
Citation
@inproceedings{eladlouni2026ssondo,
title={S-SONDO: Self-Supervised Knowledge Distillation for General Audio Foundation Models},
author={El Adlouni, Mohammed Ali and Quelennec, Aurian and Chouteau, Pierre and Peeters, Geoffroy and Essid, Slim},
booktitle={IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
year={2026}
}
License
MIT
Release files for ssondo 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ssondo-0.3.1.tar.gz | 33.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ssondo-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 69.2 kB
Release files / ssondo-0.3.1.tar.gz
| Download URL | ssondo-0.3.1.tar.gz |
|---|---|
| Size | 33.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8de21007f7190c20605a41b02c563064934b724881aff829abd5ece88fc93257
|
|
BLAKE2b-256 checksum How to use checksums |
335f67cd3deb615942380c781fed38191778ffef7c4b1109172bf1486d11297b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|
Release files / ssondo-0.3.1-py3-none-any.whl
| Download URL | ssondo-0.3.1-py3-none-any.whl |
|---|---|
| Size | 36.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c85351887c0fad1804d116048672102be7eccc18c23d21f6315f426083624098
|
|
BLAKE2b-256 checksum How to use checksums |
27ada42f332930ddef19c61ac3422026ee8642ad07785c935463a7e80a65be12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|