CoolFace
Datasetpublic

songbirdini/v33da

Who Called? V33DA: A Physically Verified Multimodal Benchmark for Vocal Attribution in Zebra Finch Groups Task. Given a detected zebra finch vocalization and the set of birds visible at that moment, determine which bird produced the call. Caller identity is verified physically from on-body accelerometer vibration; the accelerometer channel is withheld from benchmark models and used only by an oracle ceiling. V33DA provides 33,625 verified vocalization events from 10 individually… See the full description on the dataset page: https://huggingface.co/datasets/songbirdini/v33da.

sourceHugging Facecc-by-4.0updated 5mo agoView on Hugging Face
0likes925downloads
Dataset Card

Who Called? V33DA: A Physically Verified Multimodal Benchmark for Vocal Attribution in Zebra Finch Groups

Task. Given a detected zebra finch vocalization and the set of birds visible at that moment, determine which bird produced the call. Caller identity is verified physically from on-body accelerometer vibration; the accelerometer channel is withheld from benchmark models and used only by an oracle ceiling.

V33DA provides 33,625 verified vocalization events from 10 individually identified zebra finches across 3 experiments (2021–2023), each with synchronized 5-channel audio, multi-view video, calibrated 3D pose for every visible candidate, per-bird FM radio telemetry, and accelerometer-derived ground-truth labels.

BP01BP02BP05Total
Birds43310
Events16,21911,5775,82933,625
Recording days103316
Raw hours~46h~14h~14h~74h

Code: github.com/marisbasha/v33da  ·  Companion release: songbirdini/v33da_pp (V33DA++: overlap and longer-context buckets)

Quick start

bash
pip install huggingface_hub
huggingface-cli download songbirdini/V33DA --repo-type dataset --local-dir data/v33da

Or in Python:

python
from huggingface_hub import snapshot_download
snapshot_download("songbirdini/V33DA", repo_type="dataset", local_dir="data/v33da")

Loading a sample

Each binary array column is serialized with numpy.save. To decode:

python
import io
import numpy as np
import pyarrow.parquet as pq

table = pq.read_table("data/v33da/v33da-00000.parquet")
row = table.to_pydict()

# 3D keypoints: (T_frames, N_birds, 5, 3) float32
kp3d = np.load(io.BytesIO(row["keypoints_3d"][0]))

# Audio path -> multichannel WAV
audio_path = row["audio_path"][0]  # e.g. "audio/juvExpBP01/2021-06-28/..."

The included explore.ipynb notebook shows how to inspect audio, video, pose, radio, and accelerometer data, and how to reproject 3D keypoints into 2D camera views using the shipped calibrations.

Modalities

Each parquet row is one vocalization event:

ColumnDescription
audio_path5-channel cage-microphone WAV (24,414 Hz, float32)
accelerometer_pathPer-bird accelerometer WAV (oracle verification signal)
video_pathAligned composite MP4 clip (3 views, 47.68 fps)
keypoints_3dTriangulated 3D pose, shape (T_frames, N_birds, 5, 3) float32: 5 keypoints per bird (beak, head, backpack, tail base, tail tip)
keypoints_2d_top2D keypoints in top-view image space, shape (T_frames, N_birds, 5, 2) float32
keypoints_2d_back2D keypoints in back-view image space, shape (T_frames, N_birds, 5, 2) float32
radio_*21 per-bird FM radio telemetry signals per frame
vocalizer_idxGround-truth caller index
bird_colorColor identity of the vocalizer
experimentExperiment name (juvExpBP01 / juvExpBP02 / juvExpBP05)
dateRecording date

Ground-truth labels

Labels come from on-body accelerometer vibration, not from microphone-based localization. A WhisperSeg model proposes candidate windows from the demodulated signal; events are retained only when audible in microphones, showing characteristic on-body vibration, with no overlapping call from another bird. All candidates are manually reviewed.

Filtering

From 39,329 reviewed candidates:

  • —1,768 rejected as invalid during manual review
  • —3,784 removed because another bird vocalized during the same window (overlap filtering)
  • —152 removed by 3D-to-2D reprojection error (> 40 px)

Yielding 33,625 released events.

Per-bird counts

ExperimentBirdEvents
BP01blue5,735
BP01peach2,277
BP01red3,963
BP01white4,244
BP02blue4,923
BP02peach4,589
BP02red2,065
BP05brown56
BP05purple2,140
BP05yellow3,633
Note on bird colors. Backpack color codes are experiment-local identifiers, not global bird IDs. A color that appears in two experiments (e.g. red in BP01 and BP02) refers to two different physical individuals; color-to-bird assignment is fixed within an experiment. All 10 released birds are distinct physical individuals; no bird participates in more than one experiment.

Release contents

PathDescription
v33da-*.parquet23 pooled parquet shards
audio/Multichannel microphone WAV files
accelerometer/Multichannel accelerometer WAV files
clips/Aligned composite MP4 clips
calibrations/Per-experiment camera calibration files
explore.ipynbDataset exploration notebook
metadata.jsonRelease schema and filter metadata

Evaluation regimes

The benchmark code supports three evaluation regimes:

RegimeWhat transfers?Use case
Session-disjointSame birds, different daysIn-domain ceiling
Held-out experimentNew birds, new year, new cageCross-cohort transfer
Leave-one-bird-outOne unseen bird per foldIdentity-shift stress test

Limitations

V33DA is collected in one aviary with one recording geometry across three experiments. Cross-experiment evaluation combines bird-identity shift, group-composition shift, and recording-date shift. The released benchmark excludes overlapping vocalizations and filters out samples with poor geometric consistency. Overlap-filtered calls and longer-context windows are released separately through the companion dataset songbirdini/v33da_pp.

Citation

If you use V33DA, please cite:

bibtex
@unpublished{basha2026v33da,
  title  = {Who Called? V33DA: A Physically Verified Multimodal Benchmark for Vocal Attribution in Zebra Finch Groups},
  author = {Basha, Maris and Wang, Yuhang and Chen, Xiaoran and Cheng, Longbiao and Yapura, Luca and Zai, Anja T. and Salzmann, Mathieu and Hahnloser, Richard},
  year   = {2026},
  note   = {Under review},
}
songbirdini/v33da · CoolFace