alt.freeweights.speech / captioning-whisper-large-turbo-wip
From: laion <huggingface.co/laion>Newsgroups: alt.freeweights.speechSubject:

captioning-whisper-large-turbo-wip

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

Automatic speech recognition model with 809M parameters. Safetensors weights, 3.24 GB in all. Published by laion under Apache-2.0.

809M params3.24GBcaptioning-whisper-large-turbo-wipsafetensorspermissive
FactsParams809MSize3.24 GBFormatssafetensorsTaskautomatic speech recognitionLicenseApache-2.0From sourcepermissive
$ fw get laion/captioning-whisper-large-turbo-wip
# manifest sha256 cc983d5f04df… · 3.24 GB · 19 files
$ fw verify ./captioning-whisper-large-turbo-wip laion/captioning-whisper-large-turbo-wip
From sourceHosted (signed)laion/captioning-whisper-large-turbo-wipLast 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 whisper-large-v3-turbo.

Works with

Overview

Size
3.24 GB
Weights
3.24 GB (safetensors)
Parameters
809M
Formats
safetensors
Task
automatic speech recognition
License
Apache-2.0 (permissive)
Files
19, each with a sha256
Publisher
laion
Added
2026-11-14
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: openai/whisper-large-v3-turbo

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 ed8c191. Shown as plain text with links; images open at the publisher.

captioning-whisper-large-turbo-wip#

⚠️ Work in progress. This is a mid-training checkpoint uploaded while the full 3-epoch run is still going. A final checkpoint will replace these weights once training completes.

Fine-tune of openai/whisper-large-v3-turbo repurposed for audio captioning (not just speech transcription). The model takes 30s of audio and emits a long, descriptive natural-language caption covering speech, music, sound events, vocal bursts, and non-speech audio.

Checkpoint#

  • Step: 561,118 (out of an estimated 822,054 total steps over 3 epochs)
  • Samples seen: ~35.9M (≈ 2.05 epochs)
  • Best validation loss so far: ~0.679 (held-out set of 100 pairs per dataset, 896 total after divisibility trim)
  • Precision: bf16
  • Global batch size: 64 (8 GPUs × per-device 8)

Training setup#

Hardware#
  • 8× A100/H100-class GPUs (80 GB each), single node, DDP
Hyperparameters#
  • learning_rate: 5e-4, cosine schedule, 5% warmup
  • weight_decay: 0.0
  • max_grad_norm: 1.0
  • per_device_train_batch_size: 8
  • gradient_accumulation_steps: 1
  • bf16: true (fp16 was discarded because of grad-scaler overflows)
  • max_audio_seconds: 30
  • max_label_tokens: 448
Datasets (round-robin, each batch draws from all 9)#
  • laion/majestrino-data — speech + detailed captions
  • laion/captioned-ai-music-snippets — music with comprehensive captions
  • mitermix/audioset-with-grounded-captions — general audio events
  • TTS-AGI/majestrino-unified-detailed-captions-temporal — speech with temporal/emotion descriptions
  • laion/laions_got_talent_clean_with_captions — performance speech/music
  • laion/freesound-commercially-permissive-subset-with-captions
  • laion/generated-sound-events
  • laion/in-the-wild-sound-events
  • laion/synthetic_vocal_bursts

Total ~2.83M train pairs, 100 held out per dataset for validation.

Inference#

import torch, librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration

model_id = "laion/captioning-whisper-large-turbo-wip"
processor = WhisperProcessor.from_pretrained(model_id)
model = WhisperForConditionalGeneration.from_pretrained(
    model_id, torch_dtype=torch.bfloat16
).to("cuda").eval()

audio, sr = librosa.load("clip.wav", sr=16000, mono=True, duration=30.0)
feats = processor.feature_extractor(
    audio, sampling_rate=16000, return_tensors="pt"
).input_features.to("cuda", torch.bfloat16)

with torch.no_grad():
    out = model.generate(
        feats,
        max_new_tokens=448,
        num_beams=4,
        do_sample=False,
    )
caption = processor.batch_decode(out, skip_special_tokens=True)[0]
print(caption)

The model emits long, multi-sentence descriptions. Keep max_new_tokens near 448 and prefer beam search over greedy for quality.

What's in this repo#

  • Model weights (model.safetensors) — bf16 Whisper-large-v3-turbo checkpoint at step 561,118
  • Processor / tokenizer files — copied from the base model (vocab unchanged)
  • code/ — the exact training pipeline used:
    • train.py — Seq2SeqTrainer-based fine-tuner with custom round-robin streaming dataset, manual rank-0 eval (HF distributed eval deadlocks here), and live monitor integration
    • prefetcher.py — tar-level background downloader that keeps ~2 tars per dataset hot on disk, with age-aware LRU eviction (MIN_EVICT_AGE_S = 600) to prevent in-flight eviction races
    • monitor.py — HTTP dashboard (port 8077) with live loss, eval, audio playback
    • watchdog.sh — auto-restart wrapper
    • download_data.py — one-shot HF → local extractor with post-extract delete
    • phase2_launcher.sh — phase-2 launch helper

Caveats#

  • No optimizer / scheduler state is included. The training script saves via save_pretrained only. Resuming optimizer-state-aware training from this checkpoint is not possible without starting a fresh optimizer (what we did for the in-flight resume: reduced peak LR to 1e-4 with a short 1% warmup since the cosine schedule had already decayed most of the way).
  • No RNG / data-iterator state. The streaming dataset is round-robin across tars and workers but resuming won't replay the exact same sample order.
  • This is mid-training. Expect captions to still be underfit on rarer datasets and to sometimes leak artifacts from base-model speech transcription behaviors.
  • Languages: English-heavy. The base model is multilingual, but the fine-tuning data is mostly English.

Training code commit / state#

The code/ directory in this repo is a snapshot of the exact scripts running at the time of this checkpoint. The Seq2SeqTrainer in transformers>=4.57 requires a few API tweaks (processing_class= not tokenizer=, eval_strategy= not evaluation_strategy=, _get_train_sampler(train_dataset) etc.) — those are wired up in train.py.

License#

Apache 2.0 (inherited from base model; verify downstream dataset licenses before redistribution).

Files

19 files · 3.24 GBWeights 3.24 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md5.66 KB3f3d3fb97394efc6b17eb81e36f0909320b54b34835835b810cbcdfaf9919a2e
added_tokens.json34.6 KB3c51f66c4c21f9e126970078f11ae77a78c74aee8df606ee9daba86e467108e0
code/download_data.py10.9 KBe76e282d8f6059127342f9815ecd2c72cd17bba968fd32c696b1ccdd832e1fbc
code/monitor.py18.3 KB8ccbd58c40afe814f43177907af536503f7fd78d86f8a00ec3121334a59617df
code/phase2_launcher.sh4.01 KB27a973c7c9583ab8ad7584be5130fbdbcfa3ead379686bf4ed1579b0a0ef21f9
code/prefetcher.py30.4 KB061813d36b955eeb55453ffaa9c6edd0e6d5531c6e2156efafac1eccbf24dec0
code/train.py56.6 KB60ca6eb9191527a5d6d51e9eac8a3b44078995a58962fb11e227f5fbf5d361d4
code/watchdog.sh4.01 KBd2929724482b29fd1985b928361aa93aa9976f72d43550c41969efd147197b96
config.json1.22 KB4c0ec26e6b702e810c38b776435fc803220055a6e9056c5c5a46cc63c2ce7bf3
generation_config.json2.84 KBc6fb63cbebc0838aed4e2ffc5a56afd01e410670ac2c5bb279342b757d638544
merges.txt494 KB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
model.safetensors3.24 GB716758f4ae48ff95a87e3b2ae073007cab954005e27ea93640747aab4812c459
normalizer.json52.7 KBbf1c507dc8724ca9cf9903640dacfb69dae2f00edee4f21ceba106a7392f26dd
preprocessor_config.json357 B654cf18d3e163b948ceaf9766da56ce0b52de265d58673cf61c9376f126bd499
special_tokens_map.json2.19 KBbaea4ea09372eb4fca86b4e4346139fd73cb807d5087e9de0948e971739c3e74
tokenizer.json3.93 MB070f76a8f93bdf163d38e05cd21a4f82990b1e95754c7a0e621c86837cdedf3e
tokenizer_config.json283 KB3c75940dfce3a294fca7041a5faff011677f1b68fa85e47511bb8cf6dccaded6
vocab.json836 KB6788c80b082e9b0d1393147d3a3e62ba19285ac0c82ace8e5ef00f37ead58971
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
ed8c191042 pinned now manifest updated, same commit2026-11-14 21:33 UTC19 files · 3.24 GB
ed8c1910422026-11-14 21:33 UTC19 files · 3.24 GB

Use it

$ fw get laion/captioning-whisper-large-turbo-wip
# manifest sha256 cc983d5f04df… · 3.24 GB · 19 files
$ fw verify ./captioning-whisper-large-turbo-wip laion/captioning-whisper-large-turbo-wip
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/laion/captioning-whisper-large-turbo-wip.json --dir ./captioning-whisper-large-turbo-wip $ python3 fw.py verify ./captioning-whisper-large-turbo-wip ./laion__captioning-whisper-large-turbo-wip.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download laion/captioning-whisper-large-turbo-wip --revision ed8c19104291d2e1e8f5de2cddfa07efce6c8bcb --local-dir ./captioning-whisper-large-turbo-wip
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/captioning-whisper-large-turbo-wip", revision="ed8c19104291d2e1e8f5de2cddfa07efce6c8bcb") 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
3f3d3fb97394efc6b17eb81e36f0909320b54b34835835b810cbcdfaf9919a2e
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: captioning-whisper-large-turbo-wipDate: 2026-11-14Commit: ed8c191Signed: 2DC28CC7B26A283B ✓
Upstream
laion/captioning-whisper-large-turbo-wip
Pinned commit
ed8c19104291d2e1e8f5de2cddfa07efce6c8bcb
Manifest
captioning-whisper-large-turbo-wip.json · .minisig
Manifest sha256
cc983d5f04df26419018c98f4f170aae22d550fe25571781b17b1e39ce059dc0
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/captioning-whisper-large-turbo-wip.json $ curl -O https://freeweights.allternit.com/manifests/laion/captioning-whisper-large-turbo-wip.json.minisig $ minisign -Vm captioning-whisper-large-turbo-wip.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-large-v3-turbo · 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/captioning-whisper-large-turbo-wip
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. captioning-whisper-large-turbo-wip.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