alt.freeweights.speech / sound-effect-captioning-whisper
From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject:

sound-effect-captioning-whisper

Date: 2026-11-14Commit: bb36f9cSigned: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 242M parameters. Safetensors weights, 972 MB in all. Published by laion under Apache-2.0.

242M params972MBsound-effect-captioning-whispersafetensorspermissive
FactsParams242MSize972 MBFormatssafetensorsTaskautomatic speech recognitionLicenseApache-2.0From sourcepermissive
$ fw get laion/sound-effect-captioning-whisper
# manifest sha256 08ef1cf0022c… · 972 MB · 13 files
$ fw verify ./sound-effect-captioning-whisper laion/sound-effect-captioning-whisper
From sourceHosted (signed)laion/sound-effect-captioning-whisperLast check: 2026-11-14 21:34 UTC

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

Fine-tune of whisper-small.

Works with

Overview

Size
972 MB
Weights
967 MB (safetensors)
Parameters
242M
Formats
safetensors
Task
automatic speech recognition
License
Apache-2.0 (permissive)
Files
13, each with a sha256
Publisher
laion
Added
2026-11-14
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: openai/whisper-small

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-14 21:34 UTCpassed

Model card

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

LAION Sound-Effect Captioning Whisper#

A Whisper-Small-sized audio-captioning model that writes rich, natural-language descriptions of general-purpose sound effects, ambiences, vocal bursts, and music snippets. Given ≤ 30 s of audio it produces a paragraph-length caption describing the content, timbre, and likely source of the sound.

This is the final stage of a multi-step training lineage that stacks emotional speech captioning, generative-audio pre-training, and sound-effect fine-tuning on top of OpenAI's Whisper-Small.

TL;DR#

  • Architecture: WhisperForConditionalGeneration · Whisper-Small · 241.7 M params
  • Input: mono audio, 16 kHz, up to 30 s
  • Output: free-form English caption describing the sound
  • Best validation loss (held-out val set, ~500 samples across 5 source datasets): 1.431 — down from 1.494 after stage 2, 1.689 after stage 1, and from ~2.0 before any sound-effect training
  • Training compute: 8 × H100 · DDP via torchrun · ~9 h wall-clock end-to-end across three fine-tuning stages

Model genealogy#

This checkpoint is the end of a multi-step lineage; every stage starts from the previous one.

  1. OpenAI Whisper-Small – ASR pre-training on 680 k hours of labelled speech.
  2. laion/BUD-E-Whisper – LAION's emotion-aware speech captioning fine-tune. BUD-E-Whisper was trained on LAION's Got Talent plus ~5 k hours of public vlogs, with emotion scores generated by Gemini Flash 2.0 (40 emotion dimensions + 15 auxiliary dimensions such as age, arousal, valence, harshness and vocal-burst cues), templated into captions and then paraphrased for semantic richness. The resulting model can caption how a voice sounds, not just what it says.
  3. laion/captioning-whisper-proof_of_concept (checkpoint-35000) – a continued pre-training run on a broad mix of non-speech audio with Gemini-generated captions:
    • Re-captioned AudioSet (mitermix/audioset-with-grounded-captions)
    • Re-captioned Freesound (laion/freesound-commercially-permissive-subset-with-captions)
    • TangoFlux-generated sound events – synthetic sound effects produced with TangoFlux and re-captioned
    • LAION AI-music snippets – machine-generated music clips with Gemini-style captions This stage teaches the decoder the "sound-effect paragraph" writing style and expands its vocabulary from speech events to environmental, mechanical, musical and abstract audio events.
  4. This checkpoint – Sound-Effect Captioning Whisper – three additional fine-tuning stages on a fresh local mix of five public sound-effect / vocal-burst datasets (details below). Stage 1 = 1 epoch @ 5e-6 linear, Stage 2 = 3 epochs @ 1e-5 cosine (warmup 2 %), Stage 3 = 5 more epochs @ 5e-6 cosine (warmup 5 %). Each stage starts from the best checkpoint of the previous one, and the validation split is held fixed across all three so val-loss numbers are directly comparable.

Training data (this model)#

All datasets were downloaded, normalised to {mp3, caption} pairs, and pooled into a single flat directory. Per-dataset counts after filtering:

PrefixHuggingFace datasetKind# pairs
admitermix/audioset-with-grounded-captionsRe-captioned AudioSet (grounded captions)~575 k
fslaion/freesound-commercially-permissive-subset-with-captionsRe-captioned Freesound (commercially permissive)~265 k
gnlaion/generated-sound-eventsTangoFlux-generated sound events, Gemini-captioned~39 k
iwlaion/in-the-wild-sound-eventsIn-the-wild sound events~28 k
vblaion/synthetic_vocal_bursts + other vocal-burst subsetsSynthetic / recorded vocal bursts~9 k
Total~916 k

From each prefix, 100 random samples were held out as a stable validation split (~500 total), leaving ~915.6 k for training.

Training setup#

KnobStage 1Stage 2Stage 3
Init fromcaptioning-whisper-proof_of_concept checkpoint-35000stage-1 final-beststage-2 final-best
Epochs135
Peak LR5e-61e-55e-6
LR schedulelinearcosinecosine
Warmup ratio3 %2 %5 %
Per-device batch101010
GPUs888
Effective batch808080
Precisionfp16fp16fp16
Eval / save cadence~250 k samples~500 k samples~500 k samples
Total training samples~915 k~2.75 M~4.58 M
Best val loss1.6894 @ step 9 3751.4939 @ step 31 2501.4314 @ step 56 250
Wall clock~35 min~3 h~4 h 47 min

The stage-3 loss descended monotonically at every eval step — it still had not plateaued at the end of epoch 5, so a further continuation run could likely shave off more.

Stage-3 eval curve (lower is better):

stepsamples seenval loss
6 250500 0001.4898
12 5001 000 0001.4742
18 7501 500 0001.4620
25 0002 000 0001.4512
31 2502 500 0001.4423
37 5003 000 0001.4374
43 7503 500 0001.4336
50 0004 000 0001.4317
56 2504 500 0001.4314

For reference, the earlier stage-2 run's eval curve on the same held-out set:

stepsamples seenval loss
6 250500 0001.5959
12 5001 000 0001.5464
18 7501 500 0001.5144
25 0002 000 0001.4993
31 2502 500 0001.4940

The final checkpoint uploaded here (model.safetensors) is the stage-3 best weights from step 56 250, restored via load_best_model_at_end=True at the end of stage-3 training.

Usage#

import torch, torchaudio
from transformers import WhisperProcessor, WhisperForConditionalGeneration

REPO = "laion/sound-effect-captioning-whisper"
processor = WhisperProcessor.from_pretrained("openai/whisper-small")
model     = WhisperForConditionalGeneration.from_pretrained(REPO).eval().to("cuda")
model.generation_config.forced_decoder_ids = None

# Load any audio ≤ 30 s
wav, sr = torchaudio.load("your_sound.mp3")
if wav.shape[0] > 1:                 # → mono
    wav = wav.mean(dim=0, keepdim=True)
if sr != 16_000:                     # → 16 kHz
    wav = torchaudio.functional.resample(wav, sr, 16_000)
arr = wav.squeeze(0).numpy()[: 16_000 * 30]

feats = processor.feature_extractor(arr, sampling_rate=16_000,
                                    return_tensors="pt").input_features.to("cuda")
with torch.no_grad():
    ids = model.generate(feats, max_new_tokens=400, num_beams=1, do_sample=False)
print(processor.batch_decode(ids, skip_special_tokens=True)[0].strip())

Notes:

  • Use the base openai/whisper-small processor (this repo only ships tokenizer.json + preprocessor_config.json, which are the Whisper-Small defaults – the processor class needs the bundled chat_template.json / special-tokens files that live on the base repo).
  • forced_decoder_ids=None is required, otherwise Whisper's transcription language prompt clamps the decoder into ASR mode and suppresses captioning.
  • Greedy decoding works well; beam=4 trades a bit of repetition for a small quality bump but is not necessary.

Example predictions#

All four clips below are drawn from the fixed held-out validation split (these exact files were never seen during training). They were captioned with this released checkpoint (stage-3 final-best, step 56 250, val loss 1.4314).

Example 1 — Vocal burst · groan#

Reference: This file features a low, rumbling vocalization, possibly a groan. There's a sense of strain in the sound, and it's drawn out, not abrupt. The recording appears to be of moderate quality, and no other sound events are discernible. The vocalization does not seem to be musical or speech-related.

Prediction: The audio features a low, guttural vocalization, possibly a groan or a moan. The sound is drawn out and has a somewhat strained quality, suggesting discomfort or effort. The recording is clear, with no noticeable background noise. The vocalization is the primary focus of the audio. The speaker sounds like an adult male.

Example 2 — Sound effect · sonar-style beeps#

Reference: Repetitive, high-pitched electronic beeps with a reverberant quality, resembling sonar or a digital alert. This sound could indicate a warning, a scanning process (like sonar), or a futuristic interface sound in a sci-fi context.

Prediction: The audio features a distinct, high-pitched, and sustained electronic tone that rapidly sweeps upwards in frequency, creating a sweeping effect. This is followed by a series of shorter, distinct electronic beeps or pulses, which then transition into a continuous, high-pitched, and somewhat distorted electronic tone. This sounds like a synthesized sound effect, possibly used in electronic music, video games, or as a sound design element to create a sense of tension, transition, or an otherworldly atmosphere.

Example 3 — Music · upbeat electronic#

Reference: The audio features a high-energy, upbeat piece of music. The melody is carried by a synthesizer, with a driving beat provided by electronic drums. A heavy bassline is prominent. There are sections with and without a strong beat. This recording is a song likely meant for dancing, especially as there is a synth melody.

Prediction: The audio features a fast-paced, energetic electronic dance track. A prominent, repetitive synth melody is layered over a driving beat. The overall sound is bright and upbeat. This is a clip from an electronic dance music track, likely intended for dancing or club environments. The hint confirms the presence of music.

Example 4 — Machinery · mechanical whine (TangoFlux-generated)#

Reference: The audio features a continuous, high-pitched whirring sound, which is then joined by a distinct, rhythmic clanking or grinding noise. This clanking/grinding sound is accompanied by a squealing sound that rises in pitch and then quickly descends. The sounds are consistent and repetitive. This sound is indicative of heavy machinery in operation, possibly a large engine or industrial equipment, given the combination of continuous whirring and repetitive clanking/grinding sounds, along with the squealing of moving parts.

Prediction: The audio features a continuous, high-pitched mechanical whine, characteristic of a jet engine. This sound is accompanied by a distinct, rhythmic clanking or grinding noise, suggesting the movement of mechanical parts. The overall sound is loud and sustained. This soundscape is consistent with the operation of a large industrial fan or a powerful engine, possibly from a jet engine or a large vehicle. The combination of whine, grinding, and clanking suggests the movement of heavy machinery or a large mechanical system.

Intended use#

  • Automatic tagging / describing of sound-effect libraries and stock-audio collections.
  • Audio-understanding component in agents that need to talk about what they hear.
  • Research baseline for open-vocabulary audio captioning on top of Whisper.

Limitations#

  • The model has no speech-to-text output: the base ASR behaviour of Whisper is intentionally suppressed, and transcribing spoken content is out of scope.
  • Trained on ≤ 30 s clips; longer inputs are truncated. For long recordings, chunk them yourself and run the model per chunk.
  • Captioning style is strongly biased toward the Gemini-style "the audio features …" phrasing inherited from the training data.
  • Some mechanical / music / everyday-sound confusions remain; for difficult clips the model tends to fall back to generic genre templates ("electronic dance track", "jet engine", etc.).
  • Training data is predominantly English and primarily captures the tastes of the AudioSet + Freesound + LAION-curated distributions.

Acknowledgements#

  • OpenAI Whisper for the base model.
  • LAION for curating the BUD-E-Whisper emotion dataset, the captioning-whisper proof-of-concept, the freesound / vocal-burst / in-the-wild / generated sound-event corpora, and the AI-music caption snippets used in the intermediate pre-training stage.
  • TangoFlux for generating the synthetic sound-event data that fed the intermediate pre-training step.
  • Gemini Flash 2.0 for the underlying caption generation and paraphrasing across multiple datasets.
  • mitermix/audioset-with-grounded-captions for the grounded AudioSet captions.

License#

Released under Apache-2.0, following the upstream Whisper license. The audio clips in examples/ are samples from the five training datasets and retain their respective upstream licences (see the dataset pages linked above).

Files

13 files · 972 MBWeights 967 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 13 files with their sha256
FileSizesha256
.gitattributes1.75 KB0c7b0330fbc28c7113fad001ea9d5dba2f4cf22406ea57d2e48cd6170a45fe20
README.md16.0 KBf5525cf11b29f917df56471b90f7019fabf33105ce69c8b09fbce9a86cdb2d87
config.json1.30 KB6559865e39b729a063a8ac0a8407d8af67d8cc9367652fc4496f88364d554c6d
examples/example_01_vocal_burst_groan.mp3323 KBd2bbeb0272645993ec3cc88ab7c88330efb7b90d396e15fec9119612b5cb3895
examples/example_02_sonar_beeps.mp3140 KB8513897fb20d90e148a77216e1a4bb97b3e8ac3b1e7452bb770716e6c97e01a2
examples/example_03_upbeat_electronic_music.mp3121 KB10e191f73b7ec4f09a70e438bf82268e519fe0b4c59a6bbc878cbf4621737196
examples/example_04_mechanical_whine.mp340.6 KBb56b7437df88441a51cb3e87bf59d242fed11e6b93d0afbdd8b80b4b4f6302bf
generation_config.json3.77 KB10f7e09cafc14b9d92a41c3b10abd9e3370fbc71ff6ae469bfe9c725e076ebb0
model.safetensors967 MB9e15eab5eda6c51c8bc6fb60208a0b4ab3e74b25cdf200a4ccb773b093921da5
preprocessor_config.json315 Bba2e601484abc80f4cded977f9a4fd4a53175b7d35c2f2511f0cfc3a32ad2499
processor_config.json409 B8c648fa85aafc59a07435ed751322499bd4238b819ca9200ddd2b5ba4df50e68
tokenizer.json3.93 MB7b469ff15eb7816315aa45eec391f5943d639b9d73d110f5c003df5192fd54e3
tokenizer_config.json2.08 KB61af73c493c67b2a426c9f998fcd214592ffd12e0fdd53950122d28e5777ac4a
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
bb36f9c653 pinned now manifest updated, same commit2026-11-14 21:34 UTC13 files · 972 MB
bb36f9c6532026-11-14 21:34 UTC13 files · 972 MB

Use it

$ fw get laion/sound-effect-captioning-whisper
# manifest sha256 08ef1cf0022c… · 972 MB · 13 files
$ fw verify ./sound-effect-captioning-whisper laion/sound-effect-captioning-whisper
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/laion/sound-effect-captioning-whisper.json --dir ./sound-effect-captioning-whisper $ python3 fw.py verify ./sound-effect-captioning-whisper ./laion__sound-effect-captioning-whisper.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/sound-effect-captioning-whisper --revision bb36f9c6534037a8d1d78cff97d119dd37da478a --local-dir ./sound-effect-captioning-whisper
transformersSpeech recognition with the transformers pipeline.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="laion/sound-effect-captioning-whisper", revision="bb36f9c6534037a8d1d78cff97d119dd37da478a") print(asr("audio.wav")["text"])

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-14
Text in
README.md
Text sha256
f5525cf11b29f917df56471b90f7019fabf33105ce69c8b09fbce9a86cdb2d87
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: sound-effect-captioning-whisperDate: 2026-11-14Commit: bb36f9cSigned: 2DC28CC7B26A283B ✓
Upstream
laion/sound-effect-captioning-whisper
Pinned commit
bb36f9c6534037a8d1d78cff97d119dd37da478a
Manifest
sound-effect-captioning-whisper.json · .minisig
Manifest sha256
08ef1cf0022cb8e333f0316a3126bd3febd86f3cfdcc30c49ffa62e70e7fcac0
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:34 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/laion/sound-effect-captioning-whisper.json $ curl -O https://freeweights.allternit.com/manifests/laion/sound-effect-captioning-whisper.json.minisig $ minisign -Vm sound-effect-captioning-whisper.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

openai/whisper-small · this model is a finetune of it

1 model in the catalog name this one as their parent.

Fine-tunes
1
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/sound-effect-captioning-whisper
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. sound-effect-captioning-whisper.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