alt.freeweights.speech / BUD-E-Whisper_V1.21
From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject:

BUD-E-Whisper_V1.21

Date: 2026-11-14Commit: 54bec88Signed: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 242M parameters. Safetensors weights, 969 MB in all. Published by laion under CC-BY-4.0.

242M params969MBBUD-E-Whisper_V1.21safetensorspermissive
FactsParams242MSize969 MBFormatssafetensorsTaskautomatic speech recognitionLicenseCC-BY-4.0From sourcepermissive
$ fw get laion/BUD-E-Whisper_V1.21
# manifest sha256 ccd34123927b… · 969 MB · 13 files
$ fw verify ./BUD-E-Whisper_V1.21 laion/BUD-E-Whisper_V1.21
From sourceHosted (signed)laion/BUD-E-Whisper_V1.21Last check: 2026-11-14 21:33 UTC

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

Fine-tune of BUD-E-Whisper_V1.2.

Works with

Overview

Size
969 MB
Weights
967 MB (safetensors)
Parameters
242M
Formats
safetensors
Task
automatic speech recognition
License
CC-BY-4.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: laion/BUD-E-Whisper_V1.2

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:33 UTCpassed

Model card

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

BUD-E-Whisper V1.21#

Detailed audio captioning model that generates rich, temporal descriptions of speech audio — including voice characteristics, emotional states, recording quality, speaker demographics, and delivery style.

This model is fine-tuned from laion/BUD-E-Whisper_V1.2 with an additional 2-epoch training pass on an emotion-balanced subset of the training data, specifically designed to improve coverage of rare emotional states.

Comparison with V1.2#

V1.21 scores slightly lower than V1.2 on automated Gemini 3.1 Pro evaluation benchmarks (grand average 2.60 vs 2.73 across 6 dimensions), but captions appear subjectively to be somewhat better — particularly for audio with complex or uncommon emotional content. The automated evaluation's validation set is dominated by common emotions (Interest, Contentment, Contemplation), which biases the benchmark toward models trained on the natural distribution. V1.21 trades some accuracy on these common cases for improved handling of rare emotions like jealousy, infatuation, intoxication, shame, and pain.

Training History#

This model was produced through a multi-stage fine-tuning pipeline. We explored several approaches:

ModelBaseTraining DataEpochsLRVal LossGemini Grand Avg
BUD-E-Whisper V1.0whisper-smallproprietary---2.13
BUD-E-Whisper V1.1V1.0proprietary---2.41
V1.0 FT (1 epoch)V1.0majestrino-temporal (full)11e-50.8482.58
BUD-E-Whisper V1.2V1.1majestrino-temporal (full)~21e-50.8112.73
V1.2 + balanced (1e-5)V1.2balanced emotions (520K)21e-50.8172.57
V1.21 (this model)V1.2balanced emotions (520K)25e-60.8142.60
Detailed Gemini 3.1 Pro Evaluation (100 samples)#
DimensionV1.0V1.1V1.0 FTV1.2V1.2+bal 1e-5V1.21
Timbre1.112.632.983.142.943.08
Emotion3.762.902.512.622.352.31
Style1.762.652.892.982.862.78
Recording Quality3.433.543.253.373.543.44
Temporal0.270.511.741.991.601.76
Overall2.432.232.102.282.112.21
Grand Average2.132.412.582.732.572.60
Balanced Emotion Dataset#

The second-stage training uses TTS-AGI/balanced-emotion-dataset-majestrino-withtemporal-detailed-captions, a curated subset of 482,594 samples balanced across 40 emotion categories (12,997 samples each). Categories range from common (Interest, Contentment) to rare (Intoxication, Sexual Lust, Jealousy). The balancing was done via keyword matching on captions, with samples drawn from diverse source shards.

The 40 emotion categories: Amusement, Elation, Pleasure/Ecstasy, Contentment, Thankfulness/Gratitude, Affection, Infatuation, Hope/Optimism, Triumph, Pride, Interest, Awe, Astonishment/Surprise, Concentration, Contemplation, Relief, Longing, Teasing, Impatience/Irritability, Sexual Lust, Doubt, Fear, Distress, Confusion, Embarrassment, Shame, Disappointment, Sadness, Bitterness, Contempt, Disgust, Anger, Malevolence/Malice, Sourness, Pain, Helplessness, Fatigue/Exhaustion, Emotional Numbness, Intoxication/Altered States, Jealousy/Envy.

Model Details#

  • Architecture: Whisper Small (encoder-decoder, 242M parameters)
  • Base model: laion/BUD-E-Whisper_V1.2 (V1.1 fine-tuned on majestrino temporal captions)
  • Stage 2 data: 482,594 balanced emotion samples (2 epochs = ~965K samples seen)
  • Training: 2x RTX 3090, DDP (gloo), fp16, AdamW (lr=5e-6, cosine schedule, 5% warmup)
  • Final validation loss: 0.814

What it outputs#

Given an audio clip (up to 30 seconds), the model generates detailed captions describing:

  • Speaker demographics: age range, gender, accent
  • Voice timbre: pitch, brightness, breathiness, nasality, resonance
  • Emotional state: valence, arousal, dominance, specific emotions
  • Delivery style: tempo, fluency, expressiveness, naturalness
  • Recording quality: background noise, clarity, studio vs. field
  • Temporal aspects: how delivery and emotion change over time

Quick Start#

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import torchaudio
import torch

# Load model
processor = WhisperProcessor.from_pretrained("laion/BUD-E-Whisper_V1.21")
model = WhisperForConditionalGeneration.from_pretrained("laion/BUD-E-Whisper_V1.21")
model.generation_config.forced_decoder_ids = None
model.eval().to("cuda")

# Load audio (resample to 16kHz mono)
wav, sr = torchaudio.load("audio.wav")
if wav.shape[0] > 1:
    wav = wav.mean(dim=0, keepdim=True)
if sr != 16000:
    wav = torchaudio.functional.resample(wav, sr, 16000)
audio = wav.squeeze(0).numpy()

# Generate caption
inputs = processor.feature_extractor(audio, sampling_rate=16000, return_tensors="pt").to("cuda")
with torch.no_grad():
    generated_ids = model.generate(**inputs, max_length=448)
caption = processor.tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(caption)

CLI Inference#

python inference.py audio.wav
python inference.py audio.mp3 --device cpu

Limitations#

  • Optimized for speech audio; may produce less meaningful captions for music or environmental sounds
  • Maximum input length is 30 seconds
  • English-centric training data, though it can handle some other languages
  • May occasionally hallucinate speaker gender or specific emotional states
  • Slightly lower benchmark scores than V1.2 on common-emotion validation samples

Citation#

@misc{bud-e-whisper-v1.21,
  title={BUD-E-Whisper V1.21: Emotion-Balanced Audio Captioning},
  author={LAION},
  year={2026},
  url={https://huggingface.co/laion/BUD-E-Whisper_V1.21}
}

Files

13 files · 969 MBWeights 967 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 13 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md6.63 KB11ad5522cbf49ae2026bdc640ff069a5e88645f0f6dffdeafaaece254c67a0e9
added_tokens.json34.6 KB9715fd2243b6f06a5858b5e32950d2853f73dd5bc201aafcf76f5082a2d8acd1
config.json1.33 KB465c16c173050a00910ab8a1e87ea1f12ff45b4042852a890e38ab39824352c6
generation_config.json3.77 KB5571636c40885b8e982a9568345f0a293bc94d878c872b39bf03c9c4ec33cebc
inference.py2.15 KB8239ac0733c9c29a1ed94fdc37ffd447e5ada61c5f18719a540384d95608ee7f
merges.txt494 KB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
model.safetensors967 MBeb65570b758b88877335e25284094ed4ae83ce607a0350686cef7b632b6e28aa
normalizer.json52.7 KBbf1c507dc8724ca9cf9903640dacfb69dae2f00edee4f21ceba106a7392f26dd
preprocessor_config.json339 Ba6a76d28c93edb273669eb9e0b0636a2bddbb1272c3261e47b7ca6dfdbac1b8d
special_tokens_map.json2.19 KBe67ae3a0aaa99abcd9f187138e12db1f65c16a14761c50ef10eef2c174a7a691
tokenizer_config.json283 KB21a4fc0483c14b87f4e0bbc177a9a357479bfa7c95aaf21ad53d71e9c5afafb9
vocab.json1.04 MB50d6a919f0a0601d56a04eb583c780d18553aa388254ba3158eb6a00f13e2c1a
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
54bec886c2 pinned now manifest updated, same commit2026-11-14 21:33 UTC13 files · 969 MB
54bec886c22026-11-14 21:33 UTC13 files · 969 MB

Use it

$ fw get laion/BUD-E-Whisper_V1.21
# manifest sha256 ccd34123927b… · 969 MB · 13 files
$ fw verify ./BUD-E-Whisper_V1.21 laion/BUD-E-Whisper_V1.21
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/laion/BUD-E-Whisper_V1.21.json --dir ./BUD-E-Whisper_V1.21 $ python3 fw.py verify ./BUD-E-Whisper_V1.21 ./laion__BUD-E-Whisper_V1.21.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/BUD-E-Whisper_V1.21 --revision 54bec886c23653f0f97a450a46f77bc45b30122f --local-dir ./BUD-E-Whisper_V1.21
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/BUD-E-Whisper_V1.21", revision="54bec886c23653f0f97a450a46f77bc45b30122f") print(asr("audio.wav")["text"])

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-14
Text in
README.md
Text sha256
11ad5522cbf49ae2026bdc640ff069a5e88645f0f6dffdeafaaece254c67a0e9
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: BUD-E-Whisper_V1.21Date: 2026-11-14Commit: 54bec88Signed: 2DC28CC7B26A283B ✓
Upstream
laion/BUD-E-Whisper_V1.21
Pinned commit
54bec886c23653f0f97a450a46f77bc45b30122f
Manifest
BUD-E-Whisper_V1.21.json · .minisig
Manifest sha256
ccd34123927be8b5ca00ce81a1e1ed545e3db3de88a83e99918a731ff7e2b64e
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-14 21:33 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/laion/BUD-E-Whisper_V1.21.json $ curl -O https://freeweights.allternit.com/manifests/laion/BUD-E-Whisper_V1.21.json.minisig $ minisign -Vm BUD-E-Whisper_V1.21.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/BUD-E-Whisper_V1.2 · 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/BUD-E-Whisper_V1.21
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. BUD-E-Whisper_V1.21.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