CoolFace
Modelpublic

laion/voicenet-dimension-predictors-commercial

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes
Model Card

VoiceNet Dimension Predictors (VoiceCLAP-commercial)

57 per-dimension VoiceNet predictors on top of frozen **VoiceCLAP-commercial** (768-d, L2-normalized) audio embeddings. For every one of the 57 VoiceNet perceptual voice dimensions this repo ships two lightweight MLP heads:

  • —a regression head (continuous score on the dimension's 0-k scale), and
  • —a classification head (discrete level/bucket + confidence).

One commercial encode -> all 57 dimensions. Embed a clip once with the bundled VoiceCLAP-commercial encoder, then run all 114 heads (57x2) on that single 768-d vector.

This repo is self-contained: it bundles the full VoiceCLAP-commercial embedder under voiceclap_commercial/, so no separate model download is needed.

How to read these numbers (plain language)

Each dimension is scored on an ordinal 0-k scale (k=6 for most, so 0..6; a few have fewer levels). We report, on a held-out validation set the model never trained on:

  • —MAE (regression) - Mean Absolute Error: on average, how many scale-points the predicted score is away from Gemini's score. Lower is better. MAE 0.5 means predictions land about half a level off on a 0-6 scale; MAE 1.3 means more than a full level off.
  • —Pearson r (regression) - how well predictions track the true ranking (correlation), from -1 to 1. Higher is better. ~0.9 = predictions move almost in lockstep with the labels; ~0.5 = only a weak trend.
  • —within-1 (regression) - the fraction of clips whose predicted score is within +-1 level of the true score. Higher is better (0.90 = 90% of predictions are at most one level off).
  • —accuracy (classification) - fraction of clips whose predicted discrete bucket exactly matches Gemini's. Higher is better. Chance is ~1/k, so ~0.14 for a 7-level axis; 0.60 is far above chance.

So a strong dimension looks like low MAE + high Pearson + high within-1 + high accuracy.

What are the dimensions?

The 57 VoiceNet dimensions cover arousal, valence, gender, age, tempo, brightness, resonance (chest/head/nasal/...), speaking styles (news, ASMR, dramatic, ...), recording quality, and more. See dimensions.py for every code, human name, level count, and per-level definition.

How it was trained (round-1+2+3, best-variant-per-dimension)

  • —Labels: `laion/emolia-voicenet-gemini-annotations` - Emolia clips each re-scored on their single VoiceNet dimension by Gemini-3.5-flash. This retrain uses the combined round-1 + round-2 + round-3 labels (round 3 topped up the most data-starved score levels of the hardest dimensions).
  • —Frozen validation split: the same held-out validation ids as the previously published run (val_ids.json), so every number below is directly comparable to the round-1+2 release.
  • —Embeddings: each unique clip encoded once with VoiceCLAP-commercial (768-d, L2-normalized).
  • —Three balancing variants per dimension - cap3x / cap4x / cap5x. Samples are bucketed by Gemini score; each bucket is capped at 3x / 4x / 5x of S (S = the count of the second-smallest usable bucket), larger buckets randomly subsampled to that cap. Near-empty buckets (<4) are skipped. The validation split is frozen and identical across variants.
  • —Heads / losses: regression = HuberLoss (delta=1.5), H=64, dropout=0.33; classification = CrossEntropy, H=48, dropout=0.33. Adam, 50 epochs, input standardized by train mean/std, best-val checkpoint kept (val MAE for reg, val accuracy for cls).
  • —Best-variant-per-dimension selection: for each dimension we keep the variant that did best on the frozen val set - the regression head with the lowest val MAE, and the classification head with the highest val accuracy (chosen independently). Those are the top-level `regression/` + `classification/` defaults that predict.py loads. All 6x57 checkpoints are also shipped under variants/{cap3x,cap4x,cap5x}/ for reproducibility.

Variant comparison (mean over all 57 dimensions)

variantmean reg MAEmean reg Pearsonmean cls accmean cls within-1mean n_train
cap3x0.7670.780.6030.8591562
cap4x0.7620.790.5950.8571906
cap5x0.7560.790.5920.8532188

Best-variant picks (how many dimensions selected each variant):

  • —Regression (min val MAE): cap3x: 18, cap4x: 15, cap5x: 24
  • —Classification (max val acc): cap3x: 28, cap4x: 15, cap5x: 14

The best-per-dimension defaults (mixing variants) reach mean reg MAE 0.744, mean Pearson 0.79, mean within-1 0.870, mean cls accuracy 0.617, mean cls within-1 0.863.

Did round-3 data help? (before / after)

Against the previous round-1+2 published defaults (regression = cap4x, classification = cap2x), on the identical frozen validation split:

metricround-1+2 defaultround-1+2+3 best-per-dimchange
mean reg MAE0.7680.744+0.024 (better)
mean cls accuracy0.5930.617+0.025 (better)

Top-5 dimensions most improved on MAE (per-dim delta vs the round-1+2 cap4x regression MAE): R_MIXD (Mixed Resonance, 0.920→0.787, Δ0.133), R_NASL (Nasal Resonance, 0.780→0.683, Δ0.096), COGL (Cognitive Load, 1.131→1.052, Δ0.079), R_THRT (Throat Resonance, 0.797→0.718, Δ0.078), S_CART (Cartoonish Style, 1.191→1.115, Δ0.076).

Per-dimension metrics (default = best variant, sorted by MAE)

dimnamekreg variantval MAEPearsonwithin-1cls variantcls accn_train
EXPLContent Appropriateness (3-point Scale)3cap3x0.4440.420.939cap3x0.697724
R_HEADHead Resonance7cap5x0.4780.880.957cap3x0.7571411
BKGNBackground Noise5cap3x0.4930.830.967cap3x0.6503595
SMTHSmoothness7cap3x0.4990.890.986cap5x0.7751426
VOLTVolatility7cap3x0.5160.950.981cap4x0.5713559
R_ORALOral Resonance7cap5x0.5320.850.937cap3x0.6981086
RANGPitch Range7cap4x0.5330.870.938cap3x0.6752015
ATCKAttack7cap3x0.5370.930.935cap4x0.6451205
S_FORMFormal Style7cap4x0.5570.890.922cap3x0.6893615
R_MASKMask Resonance7cap4x0.5620.830.961cap3x0.745656
R_CHSTChest Resonance7cap4x0.5620.870.960cap3x0.6272280
STRUStructure7cap4x0.5730.900.952cap5x0.5902146
CLRTArticulation Clarity7cap5x0.5750.880.902cap5x0.720802
HARMHarmonicity7cap5x0.5810.790.917cap5x0.6831090
TEMPTempo7cap4x0.5820.910.929cap3x0.6001861
CHNKChunking7cap3x0.5960.900.904cap4x0.614902
BRGTBrightness7cap5x0.6010.770.937cap3x0.651476
AROUArousal7cap5x0.6010.930.943cap5x0.6294514
GENDPerceived Gender7cap5x0.6120.890.949cap3x0.7051711
AGEVVoice Age7cap4x0.6220.890.881cap4x0.7021329
REGSRegister7cap3x0.6290.880.917cap4x0.679998
METLMetallic Character7cap5x0.6430.660.896cap4x0.729615
ROUGRoughness7cap5x0.6460.760.933cap5x0.600239
ESTHEsthetics7cap5x0.6470.800.893cap3x0.5872497
STNCStance7cap3x0.6600.880.931cap3x0.6573140
S_CASUCasual Style7cap3x0.6670.920.915cap3x0.6912275
RCQLRecording Quality7cap3x0.6670.820.933cap3x0.5602073
S_AUTHAuthoritative Style7cap5x0.6770.830.844cap3x0.5894395
R_NASLNasal Resonance7cap5x0.6830.830.918cap5x0.6941083
RESPRespiration7cap3x0.6990.880.942cap3x0.581878
R_THRTThroat Resonance7cap5x0.7180.720.883cap5x0.633539
WARMWarmth7cap3x0.7390.720.897cap4x0.6031742
VULNVulnerability7cap3x0.7420.810.895cap3x0.6111822
EMPHEmphasis7cap4x0.7620.870.873cap3x0.5692019
S_DRAMDramatic Style7cap5x0.7650.870.905cap3x0.5902288
FULLFullness7cap4x0.7660.730.910cap5x0.582172
VALNValence7cap3x0.7740.790.894cap4x0.5291454
S_NARRNarrator Style7cap5x0.7760.860.864cap4x0.5234242
R_MIXDMixed Resonance7cap5x0.7870.390.864cap5x0.864106
VALSValence Shift7cap4x0.7910.800.812cap4x0.5651831
DARCDynamic Arc7cap5x0.8070.830.839cap4x0.6341599
TENSTension7cap4x0.8140.770.852cap3x0.568925
S_NEWSNewsreader Style7cap4x0.8230.710.815cap3x0.5542429
S_CONVConversational Style7cap3x0.8240.790.892cap4x0.5162449
DFLUDisfluency7cap4x0.8440.810.839cap5x0.4192079
S_PLAYPlayful Style7cap5x0.8470.790.827cap3x0.5874607
S_MONOMonologue Style7cap5x0.8930.730.774cap5x0.5056405
S_STRYStorytelling Style7cap5x0.9050.840.778cap3x0.6564361
S_WHISWhisper-Talk Style7cap5x0.9470.810.817cap3x0.4631460
COGLCognitive Load7cap3x1.0520.610.734cap3x0.5431354
S_TECHTeacher/Didactic Style7cap4x1.1040.690.691cap4x0.568446
S_CARTCartoonish Style7cap4x1.1150.680.683cap4x0.5241399
FOCSFocus7cap3x1.1150.650.724cap3x0.6632216
VFLXVelocity Flux7cap3x1.2310.560.656cap3x0.4411393
S_RANTRanting/Angry Style7cap5x1.2380.720.654cap5x0.568241
ARSHArousal Shift7cap5x1.2570.530.633cap4x0.5613575
S_ASMRASMR Style7cap5x1.3160.680.667cap5x0.565418
  • —Strongest (lowest MAE): EXPL, R_HEAD, BKGN, SMTH, VOLT.
  • —Weakest (highest MAE): FOCS, VFLX, S_RANT, ARSH, S_ASMR.

The weakest axes are the fine resonance/timbre and shift/flux dimensions (e.g. R_MIXD, R_NASL, arousal/valence-shift, velocity-flux): the Gemini labels for these are heavily collapsed into one or two buckets (VoiceCLAP zero-shot bucketing cannot separate them), so there is little balanced signal to learn and their errors are inherently larger. Coarse perceptual axes (arousal, valence, gender, formality, tempo, brightness, background noise) predict well.

Inference

python
from predict import VoiceNetPredictor
p = VoiceNetPredictor()             # bundled embedder + best-per-dim heads (114 total)
out = p.predict("audio.wav")        # one encode -> 57 dims
print(out["AROU"])   # {'name': 'Arousal', 'reg_score': .., 'cls_bucket': .., 'confidence': .., ...}

# force one balancing variant instead of the best-per-dim defaults:
p4 = VoiceNetPredictor(variant="cap4x")

or from the shell: python predict.py audio.wav (add --variant cap4x to force a variant).

Each dimension returns the regression score, the classification bucket, and the softmax confidence.

Files

  • —regression/<DIM>.pt, classification/<DIM>.pt - 57 + 57 best-per-dimension default heads. Each: {state_dict, mu, sd, arch, dim, name, levels, val_metrics}.
  • —variants/{cap3x,cap4x,cap5x}/{regression,classification}/<DIM>.pt - all 6x57 variant heads.
  • —voiceclap_commercial/ - the full bundled VoiceCLAP-commercial embedder (self-contained).
  • —dimensions.py, predict.py, requirements.txt.
  • —metrics.parquet - per dimension x variant validation metrics.
  • —metrics_best_per_dim.parquet - the chosen best variant per dimension per head + its metrics.

Notes & limitations

  • —Labels are Gemini-3.5-flash perceptual estimates from a single flash-LLM annotator, not ground truth.
  • —Fine resonance/timbre axes are collapsed in the labels and predict near-constant - expected.
  • —The bundled embedder is included for self-containment; heads run on its 768-d L2-normalized output.

Project & Taxonomy

These predictors are the models of the VoiceNet project — predicting how speech is delivered across 57 perceptual voice/prosody dimensions (0–6).

  • —GitHub project & docs: <https://github.com/LAION-AI/voicenet> — self‑contained documentation, including a full inference guide (throughput optimization, WebDataset/mp3 loading, multi‑GPU scaling) and training guide.
  • —Live demo: <https://projects.laion.ai/voicenet/> — these predictors on 100 diverse multilingual Emolia clips.
  • —Taxonomy: every dimension's code, name, level count, and per‑level 0–6 definition ships in this repo as `dimensions.py`; the full narrative rubric is on GitHub as `taxonomy/voicenet_taxonomy.md`.

The VoiceNet taxonomy and project come from the forthcoming VoiceNet paper (not yet published).

Links

License

CC-BY-4.0