Downloads · 30 days
29
6% of all-time downloads
laion/BUD-E-Whisper_V1.21
BUD-E-Whisper_V1.21 is a automatic speech recognition model from laion. Use it when you need speech turned into text. It is set up for transformers. The card lists the license as cc-by-4.0.
Detailed audio captioning model that generates rich, temporal descriptions of speech audio — including voice characteristics, emotional states, recording quality, speaker demographics, and delivery style.
Downloads · 30 days
29
6% of all-time downloads
All-time downloads
517
Public
Parameters
242M
967 MB on disk
Likes
2
Public
Click a slice to open those files.
.safetensors967 MB · 100%
From the Hugging Face model README
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.
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.
This model was produced through a multi-stage fine-tuning pipeline. We explored several approaches:
| Model | Base | Training Data | Epochs | LR | Val Loss | Gemini Grand Avg |
|---|---|---|---|---|---|---|
| BUD-E-Whisper V1.0 | whisper-small | proprietary | - | - | - | 2.13 |
| BUD-E-Whisper V1.1 | V1.0 | proprietary | - | - | - | 2.41 |
| V1.0 FT (1 epoch) | V1.0 | majestrino-temporal (full) | 1 | 1e-5 | 0.848 | 2.58 |
| BUD-E-Whisper V1.2 | V1.1 | majestrino-temporal (full) | ~2 | 1e-5 | 0.811 | 2.73 |
| V1.2 + balanced (1e-5) | V1.2 | balanced emotions (520K) | 2 | 1e-5 | 0.817 | 2.57 |
| V1.21 (this model) | V1.2 | balanced emotions (520K) | 2 | 5e-6 | 0.814 | 2.60 |
| Dimension | V1.0 | V1.1 | V1.0 FT | V1.2 | V1.2+bal 1e-5 | V1.21 |
|---|---|---|---|---|---|---|
| Timbre | 1.11 | 2.63 | 2.98 | 3.14 | 2.94 | 3.08 |
| Emotion | 3.76 | 2.90 | 2.51 | 2.62 | 2.35 | 2.31 |
| Style | 1.76 | 2.65 | 2.89 | 2.98 | 2.86 | 2.78 |
| Recording Quality | 3.43 | 3.54 | 3.25 | 3.37 | 3.54 | 3.44 |
| Temporal | 0.27 | 0.51 | 1.74 | 1.99 | 1.60 | 1.76 |
| Overall | 2.43 | 2.23 | 2.10 | 2.28 | 2.11 | 2.21 |
| Grand Average | 2.13 | 2.41 | 2.58 | 2.73 | 2.57 | 2.60 |
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.
laion/BUD-E-Whisper_V1.2 (V1.1 fine-tuned on majestrino temporal captions)Given an audio clip (up to 30 seconds), the model generates detailed captions describing:
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)
python inference.py audio.wav
python inference.py audio.mp3 --device cpu
@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}
}