alt.freeweights.speech / music-popularity-full-ft
From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject:

music-popularity-full-ft

Date: 2026-11-15Commit: 7054e85Signed: 2DC28CC7B26A283B ✓

Audio classification model with 282M parameters. Safetensors weights, 1.23 GB in all. Published by laion under CC-BY-4.0.

282M params1.23GBmusic-popularity-full-ftsafetensorspermissive
FactsParams282MSize1.23 GBFormatssafetensorsTaskaudio classificationLicenseCC-BY-4.0From sourcepermissive
$ fw get laion/music-popularity-full-ft
# manifest sha256 dae98e2e08bc… · 1.23 GB · 15 files
$ fw verify ./music-popularity-full-ft laion/music-popularity-full-ft
From sourceHosted (signed)laion/music-popularity-full-ftLast check: 2026-11-15 04:24 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of music-whisper.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
1.23 GB
Weights
1.13 GB (safetensors)
Parameters
282M
Formats
safetensors
Task
audio classification
License
CC-BY-4.0 (permissive)
Files
15, each with a sha256
Publisher
laion
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: laion/music-whisper

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:24 UTCpassed

Model card

From the publisher at commit 7054e85. Shown as plain text with links; images open at the publisher.

Music Popularity Predictor (Full Fine-Tune)#

Predicts play count and upvote/like count of AI-generated music tracks from audio alone.

This is the full fine-tuned variant where both the Whisper encoder and the MLP head were trained jointly. For the frozen-encoder variant, see laion/music-popularity.

Architecture#

ComponentDetails
EncoderWhisper Small, initialized from laion/music-whisper, then fine-tuned end-to-end
PoolingEncoder output (1500x768) → 10 segments of 150 frames → mean/max/min pool → 23,040-dim
MLP Head23040 → 1024 → 256 (LayerNorm) → two prediction heads (play count + upvote count)
Outputlog1p-scaled: log(1 + count) — use math.expm1() to convert back

Training#

  • Initialized from: laion/music-popularity (frozen MLP, epoch 2, val_loss=4.004)
  • Data: ~39,000 stratified samples from LAION-Tunes (Suno, Udio, Mureka, Riffusion, Sonauto), cut into ~343K training segments (10-30s each)
  • Loss: Huber Loss
  • Optimizer: AdamW — encoder LR 5e-6, MLP LR 5e-5, cosine schedule, 2 epochs
  • Batch size: 3 x 6 gradient accumulation = 18 effective
  • Encoder params: 88.2M (unfrozen), MLP params: 23.9M
  • Best checkpoint: Epoch 1 (val_loss=3.043)
Evaluation (200 validation samples)#
MetricPlay CountUpvote Count
Pearson r0.1920.236
Log-Pearson r0.6650.654
Log MAE2.1181.416
Comparison vs Frozen Encoder#
MetricFrozen (laion/music-popularity)Full Fine-Tune (this model)Improvement
Val Loss4.0043.043-24%
Play Log-r0.4140.665+61%
Upvote Log-r0.4130.654+58%
Play Log MAE2.9812.118-29%
Upvote Log MAE1.9231.416-26%

Usage#

import torch
import torch.nn as nn
import numpy as np
import librosa
import math
from transformers import WhisperProcessor, WhisperForConditionalGeneration
from huggingface_hub import hf_hub_download


# --- Define the MLP head ---

class PopularityMLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.bottleneck = nn.Sequential(
            nn.Linear(23040, 1024), nn.ReLU(), nn.Dropout(0.3),
            nn.Linear(1024, 256), nn.ReLU(), nn.LayerNorm(256),
        )
        self.play_head = nn.Sequential(nn.Linear(256, 64), nn.ReLU(), nn.Linear(64, 1))
        self.upvote_head = nn.Sequential(nn.Linear(256, 64), nn.ReLU(), nn.Linear(64, 1))

    def forward(self, x):
        feat = self.bottleneck(x)
        return self.play_head(feat).squeeze(-1), self.upvote_head(feat).squeeze(-1)


# --- Load models ---

# Fine-tuned Whisper encoder (includes encoder weight updates from popularity training)
processor = WhisperProcessor.from_pretrained("laion/music-popularity-full-ft")
whisper = WhisperForConditionalGeneration.from_pretrained(
    "laion/music-popularity-full-ft", torch_dtype=torch.float16
).cuda().eval()
encoder = whisper.get_encoder()

# Popularity MLP head
head_path = hf_hub_download("laion/music-popularity-full-ft", "popularity_head.pt")
mlp = PopularityMLP().cuda()
mlp.load_state_dict(torch.load(head_path, map_location="cuda")["mlp_state_dict"])
mlp.eval()


# --- Run inference ---

audio, sr = librosa.load("song.mp3", sr=16000, mono=True)
audio = audio[:30 * 16000]  # first 30 seconds
if len(audio) < 30 * 16000:
    audio = np.pad(audio, (0, 30 * 16000 - len(audio)))

inputs = processor(audio, sampling_rate=16000, return_tensors="pt")

with torch.no_grad():
    enc_out = encoder(inputs.input_features.cuda().half()).last_hidden_state  # (1, 1500, 768)

    # Segment pooling: 10 segments, mean/max/min
    segments = enc_out.view(1, 10, 150, 768)
    pooled = torch.cat([segments.mean(2), segments.max(2).values, segments.min(2).values], dim=2)
    pooled = pooled.view(1, -1).float()  # (1, 23040)

    pred_play, pred_upvote = mlp(pooled)

print(f"Estimated plays:   {math.expm1(pred_play.item()):,.0f}")
print(f"Estimated upvotes: {math.expm1(pred_upvote.item()):,.0f}")

Files#

FileDescription
model.safetensorsFull Whisper Small weights (encoder fine-tuned for popularity)
popularity_head.ptMLP head weights
config.jsonWhisper model config
preprocessor_config.jsonAudio preprocessor config
tokenizer.jsonTokenizer
evaluation_report.htmlDetailed evaluation with per-bucket breakdowns and audio samples

License#

CC BY 4.0 — Christoph Schuhmann / LAION

Acknowledgments#

  • Base encoder: laion/music-whisper (OpenAI Whisper Small, fine-tuned for music captioning)
  • Frozen-encoder baseline: laion/music-popularity
  • Dataset: LAION-Tunes (AI-generated music from Suno, Udio, Mureka, Riffusion, Sonauto)
  • Developed by Christoph Schuhmann and the LAION community

Files

15 files · 1.23 GBWeights 1.13 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 15 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md5.60 KBf556ed120c8c7546fe602819fffb40ec565eb583835ed6e623b423871b6334c1
added_tokens.json34.6 KB9715fd2243b6f06a5858b5e32950d2853f73dd5bc201aafcf76f5082a2d8acd1
config.json1.22 KBb5464429f7e81f7594183985327c7473c0c8811220aa16fcd19b67188ac47921
evaluation_report.html141 KBfb57466b17cb8a705c7803db63090b83eafdfd2478ded647e41c177a5478a57b
generation_config.json2.91 KB9a8e1ab969adb3a92b22f62331a0b42050f597ec62ac8112fcdd5ac7312b8b8f
merges.txt494 KB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
model.safetensors1.13 GB3bdc7c502f4dfb2cbb6cda5197f88d05b49aee3180c6e0eeb78a417b587f7a8f
normalizer.json52.7 KBbf1c507dc8724ca9cf9903640dacfb69dae2f00edee4f21ceba106a7392f26dd
popularity_head.pt95.6 MB555bd9bdfd1d5f0f033c12248332beae296a1f91dc02dc77807a491e9a968e73
preprocessor_config.json356 B994838f1fa6462c8b9b3c90edada831f11f3dd8b4664634e18f4694d005c9dbf
special_tokens_map.json2.19 KBe67ae3a0aaa99abcd9f187138e12db1f65c16a14761c50ef10eef2c174a7a691
tokenizer.json3.93 MB2d6c907c83c09d556614a8227d264aff2eac2d3f9fc90d9fce4f8fc56a4b9f52
tokenizer_config.json283 KB21a4fc0483c14b87f4e0bbc177a9a357479bfa7c95aaf21ad53d71e9c5afafb9
vocab.json836 KB8f680bba319e01a653d2e8a5dbc17a9157179e0576e6ce74ce0c06356c6e24f9
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
7054e857a8 pinned now2026-11-15 04:24 UTC15 files · 1.23 GB

Use it

$ fw get laion/music-popularity-full-ft
# manifest sha256 dae98e2e08bc… · 1.23 GB · 15 files
$ fw verify ./music-popularity-full-ft laion/music-popularity-full-ft
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/laion/music-popularity-full-ft.json --dir ./music-popularity-full-ft $ python3 fw.py verify ./music-popularity-full-ft ./laion__music-popularity-full-ft.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/music-popularity-full-ft --revision 7054e857a8743a066b6e4d0c5c20b4ca8a32362b --local-dir ./music-popularity-full-ft

License

Name
Creative Commons Attribution 4.0
Id
CC-BY-4.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
f556ed120c8c7546fe602819fffb40ec565eb583835ed6e623b423871b6334c1
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject: music-popularity-full-ftDate: 2026-11-15Commit: 7054e85Signed: 2DC28CC7B26A283B ✓
Upstream
laion/music-popularity-full-ft
Pinned commit
7054e857a8743a066b6e4d0c5c20b4ca8a32362b
Manifest
music-popularity-full-ft.json · .minisig
Manifest sha256
dae98e2e08bc8d0792734beeba4ea5c7ab1d51df7f9ed74782c244967a284441
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:24 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/laion/music-popularity-full-ft.json $ curl -O https://freeweights.allternit.com/manifests/laion/music-popularity-full-ft.json.minisig $ minisign -Vm music-popularity-full-ft.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

laion/music-whisper · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/music-popularity-full-ft
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. music-popularity-full-ft.json. Provenance. Takedown history: none.
From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit