Model Card: Vibrato

Superseded by vibrato-v2. A post-release audit found that v1's evaluation was contaminated: the model trained on 18 of VocalSet's 20 singers with no singer-disjoint split, so the accuracy figures below are effectively training-set numbers. Against measured acoustic labels (Praat CPPS, jitter/shimmer, f0 deviation), v1's five quality outputs all have negative RΒ² β€” worse than predicting a constant. v2 fixes the corpus coverage, roster, labels, and splits, and reports genuinely held-out numbers. Use v2; v1 remains available for reproducibility.

Model Details

  • Name: Vibrato
  • Version: 1.0 (formerly ToneyMultiTask v2.0)
  • Type: Multi-task 1D CNN for vocal analysis
  • Framework: PyTorch (training), CoreML (deployment)
  • License: Apache-2.0
  • Repository: vibrato-ai/vibrato-v1

Project

Vibrato is an open vocal-AI model for the singing community, maintained by Anycompany LLC. It powers Toney, a free iOS vocal-training app, and is published for anyone to use, study, and improve. The training pipeline (model.py, CoreML export) is included in this repository.

Roadmap: v1 (this release) β€” VocalSet-trained baseline. v2 β€” expanded training data (augmentation + additional public datasets). v3 β€” federated learning: on-device fine-tuning with privacy-preserving aggregated updates (voices never leave the phone).

Intended Use

Real-time vocal analysis for singing practice and coaching. Designed to run on-device on iPhones via CoreML Neural Engine.

Primary use: Analyze vocal recordings to classify voice type, singing technique, vowel production, and vocal quality metrics.

Out of scope: Speech recognition, language identification, speaker identification, medical diagnosis of vocal disorders.

Model Architecture

Input: [1, 4000] raw audio (0.25s @ 16kHz)
  -> SharedEncoder (4x ConvBlock with BatchNorm, stride-2 downsampling, AdaptiveAvgPool)
  -> 256-dim feature vector
  -> Voice Head (FC 256->128->6, logits β€” apply softmax at inference)
  -> Technique Head (FC 256->128->7, logits β€” apply softmax at inference)
  -> Vowel Head (FC 256->128->6, logits β€” apply softmax at inference)
  -> Quality Head (FC 256->128->5, sigmoid applied in-model)

Training Data

Dataset License Size Use
VocalSet CC BY 4.0 10.1 hrs, 20 singers (18 used in v1 β€” see below) All four heads (technique, vowel, voice type; quality labels heuristically derived from the audio)

Coverage in v1: Training used 1,562 of VocalSet's 3,613 files (43%). The remainder were dropped because their technique folders were not in the technique map (slow_piano, slow_forte, fast_forte, fast_piano, pp, forte, messa, and the misspelled "vibrado" folder). Additionally, a gender-table erratum in the singer roster (the code listed 11 female / 9 male singers, while VocalSet actually contains 9 female / 11 male) caused singers male10 and male11 (364 files) to be silently skipped β€” so 18 of the 20 singers contributed training data. Both issues are fixed in the v2 pipeline plan; this card describes the shipped v1 model as trained.

Planned for v2 (not used in v1): Annotated-VocalSet (F0 annotations for pitch-stability labels), SVQTD (human vocal-quality labels).

Attribution: This model was trained on VocalSet, used under CC BY 4.0: Julia Wilkins, Prem Seetharaman, Alison Wiss, Bryan Pardo, "VocalSet: A Singing Voice Dataset", Proceedings of the 19th International Society for Music Information Retrieval Conference (ISMIR), 2018. Zenodo DOI: 10.5281/zenodo.1193957. Changes made to the original data for training: audio resampled to 16 kHz, segmented into 0.25 s windows, technique folder labels remapped to the model's 7-class scheme, and heuristic quality labels added.

Output Labels

Voice Types (6)

soprano, mezzo-soprano, alto, tenor, baritone, bass

Techniques (7)

belt, falsetto, vibrato, straight, breathy, nasal, mixed

Vowels (6)

a, e, i, o, u, schwa

Quality Scores (5, continuous 0-1)

brightness, breathiness, strain, power, stability

Per-class caveats (v1)

  • falsetto: 0 training samples reached this class in v1 (the folder-mapping bug above dropped them), so its logit is effectively untrained β€” do not rely on falsetto predictions.
  • nasal: trained on VocalSet's vocal_fry recordings (a labeling shortcut), so it actually detects vocal fry, not nasality.
  • mixed: trained on lip_trill recordings, so it actually detects lip trills, not mixed voice.
  • Voice types: VocalSet publishes no fach/voice-type metadata; the soprano-through-bass labels are heuristic assignments made in this pipeline, not ground truth.
  • strain: the heuristic pseudo-label saturates at 1.0 on ~83% of training clips (the zero-crossing "jitter" estimate is not true pitch-period jitter), so the strain output has limited dynamic range.

Evaluation

All numbers are on the held-out validation split (random 20% of windows) at epoch 49. "Production condition" applies the peak normalization the iOS app performs before inference β€” a preprocessing mismatch with training (which used raw amplitudes), which measurably degrades accuracy; v2 will train and evaluate under matched normalization.

Metric Val (reported) Val (production condition) Majority-class baseline
Voice type accuracy 47.9% β€” ~22.6%
Technique accuracy 48.2% 30.4% 25.6%
Vowel accuracy 57.8% 48.6% 20.8%
Quality MSE 0.0292 β€” β€”

On the two singers never seen in training (male10/male11, excluded by the roster bug): technique 48.9% / vowel 64.4% raw, dropping to 31.0% / 53.4% under production normalization. The quality head reaches R-squared of approximately 0.32 against its own deterministic heuristic targets.

Note that the validation split is random over 0.25 s windows, so windows from the same recording (and singer) appear in both train and val β€” these numbers are optimistic relative to true singer-held-out generalization.

Limitations

  • Trained on ~10 hrs from professional singers (VocalSet; 18 of its 20 singers due to the roster bug above) β€” limited demographic and stylistic coverage; expect degraded accuracy on voice types, languages, and styles outside that distribution.
  • 0.25 s context window β€” no long-range phrase analysis.
  • Quality scores are heuristic-derived labels, not clinician annotations.
  • Not for speaker ID, speech recognition, or medical use.

Ethical Considerations

  • The model is not designed or evaluated for speaker identification
  • No personally identifiable information is stored or inferred
  • All inference runs on-device; no audio data is transmitted
  • The model is NOT a medical device and should not be used for vocal health diagnosis
Downloads last month
1
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support