Releases: CMGeldenhuys/AERD_inference
Releases · CMGeldenhuys/AERD_inference
Release list
v1.0.0 — Initial Model Weights Release
v1.0.0 — Initial Model Weights Release
First public release of pretrained AERD (Automated Elephant Rumble Detection) model weights for elephant call classification, detection, and endpointing.
Models
| Variant | Dataset | Task | Classes | Folds | Predictor |
|---|---|---|---|---|---|
EV_CALL |
Elephant Voices | Call-type classification | 5 | 5 | seq |
EV_SUBCALL |
Elephant Voices | Sub-call classification | 8 | 5 | seq |
EV_BINARY |
Elephant Voices | Binary call detection | 2 | 5 | seq |
LDC_POOLE |
LDC (Asian elephants) | Poole taxonomy classification | 6 | 10 | seq |
LDC_BINARY |
LDC (Asian elephants) | Binary call detection | 2 | 10 | seq |
All models use a BEATs (BEATs_iter3) backbone with a patchwise sequence predictor head, operating on 16 kHz mono audio.
Class Labels
EV_CALL (5): not-call, rumble, roar, cry, trumpet
EV_SUBCALL (8): not-call, comment-rumble, conflict-roar, estrous-rumble, female-chorus, grumbling-rumble, pulsated-play-trumpet, trumpet-blast
EV_BINARY (2): not-call, call
LDC_POOLE (6): not-call, rumble, roar, bark, trumpet, squelch
LDC_BINARY (2): not-call, call
Usage
Single model (PyTorch Hub)
import torch
model, preprocess = torch.hub.load("CMGeldenhuys/AERD_inference", "aerd")
audio = torch.randn(1, 16000 * 10) # 10 seconds at 16 kHz
probs = model.predict(audio, output="tensor") # (1, T, C) probabilities
labels = model.predict_labels(audio, threshold=0.5) # per-frame label stringsEnsemble (all folds)
from aerd_inference import aerd_ensemble, AERD_Weights
models, preprocess = aerd_ensemble(weights=AERD_Weights.EV_CALL)
ensemble_probs = torch.stack([m.predict(audio) for m in models]).mean(dim=0)Specific variant and fold
model, preprocess = torch.hub.load(
"CMGeldenhuys/AERD_inference", "aerd",
weights=AERD_Weights.LDC_POOLE, fold=3,
)Checkpoint Files
35 checkpoint files total (5 variants x k folds each). Naming convention:
aerd_{variant}_ko{fold}_v1-{hash}.pt
Full file listing with hashes
EV_CALL (5 folds)
| File | Hash |
|---|---|
aerd_ev_call_ko1_v1-5876c7c3.pt |
5876c7c3 |
aerd_ev_call_ko2_v1-75efa98e.pt |
75efa98e |
aerd_ev_call_ko3_v1-5cc3c744.pt |
5cc3c744 |
aerd_ev_call_ko4_v1-48b2294d.pt |
48b2294d |
aerd_ev_call_ko5_v1-9420e0de.pt |
9420e0de |
EV_SUBCALL (5 folds)
| File | Hash |
|---|---|
aerd_ev_subcall_ko1_v1-060becac.pt |
060becac |
aerd_ev_subcall_ko2_v1-20877eaa.pt |
20877eaa |
aerd_ev_subcall_ko3_v1-8e3b703e.pt |
8e3b703e |
aerd_ev_subcall_ko4_v1-38886767.pt |
38886767 |
aerd_ev_subcall_ko5_v1-b640338b.pt |
b640338b |
EV_BINARY (5 folds)
| File | Hash |
|---|---|
aerd_ev_binary_ko1_v1-d583165d.pt |
d583165d |
aerd_ev_binary_ko2_v1-0c7fe335.pt |
0c7fe335 |
aerd_ev_binary_ko3_v1-4ca10435.pt |
4ca10435 |
aerd_ev_binary_ko4_v1-97ae4718.pt |
97ae4718 |
aerd_ev_binary_ko5_v1-eceda608.pt |
eceda608 |
LDC_POOLE (10 folds)
| File | Hash |
|---|---|
aerd_ldc_poole_ko1_v1-481a3595.pt |
481a3595 |
aerd_ldc_poole_ko2_v1-768a7871.pt |
768a7871 |
aerd_ldc_poole_ko3_v1-fe8caa30.pt |
fe8caa30 |
aerd_ldc_poole_ko4_v1-3125e47e.pt |
3125e47e |
aerd_ldc_poole_ko5_v1-f63a2396.pt |
f63a2396 |
aerd_ldc_poole_ko6_v1-d1dbcf1e.pt |
d1dbcf1e |
aerd_ldc_poole_ko7_v1-ee90ff8a.pt |
ee90ff8a |
aerd_ldc_poole_ko8_v1-f4ed2466.pt |
f4ed2466 |
aerd_ldc_poole_ko9_v1-90729160.pt |
90729160 |
aerd_ldc_poole_ko10_v1-94261f9c.pt |
94261f9c |
LDC_BINARY (10 folds)
| File | Hash |
|---|---|
aerd_ldc_binary_ko1_v1-393ba94d.pt |
393ba94d |
aerd_ldc_binary_ko2_v1-72245d4f.pt |
72245d4f |
aerd_ldc_binary_ko3_v1-309f3e8c.pt |
309f3e8c |
aerd_ldc_binary_ko4_v1-3cb18507.pt |
3cb18507 |
aerd_ldc_binary_ko5_v1-ee816aac.pt |
ee816aac |
aerd_ldc_binary_ko6_v1-61ea48e5.pt |
61ea48e5 |
aerd_ldc_binary_ko7_v1-dfd66fd1.pt |
dfd66fd1 |
aerd_ldc_binary_ko8_v1-7a59b271.pt |
7a59b271 |
aerd_ldc_binary_ko9_v1-69e1c0ca.pt |
69e1c0ca |
aerd_ldc_binary_ko10_v1-b9f3883d.pt |
b9f3883d |
Citation
@article{Geldenhuys2025LearningToRumble,
author = {Geldenhuys, Christiaan M. and Niesler, Thomas R.},
title = {Learning to rumble: automated elephant call and sub-call classification, detection and endpointing using deep architectures},
journal = {Bioacoustics},
volume = {34},
number = {3},
year = {2025},
doi = {10.1080/09524622.2025.2487099},
}