whisper-large-v3-turbo-danish
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββ βββββ
βββββ βββ ββββββ βββββββββββββββββββββ βββββββββββββββ βββββ
βββββ βββ ββββββ ββββββββββββββββββββββββββββββββββββββ βββββ
βββββ βββ ββ ββββββββββββββββββββββββββββββββββββ ββββββββ βββββ
βββββ ββββββββββββββββββββββββββββββββββββ ββββββ ββββββββ βββββ
βββββ βββββββββββββ βββββββββββββββββ βββββββββββ βββ βββββ
βββββ ββββββββ βββ βββββββββββββββββ βββββββββββ βββ βββββ
βββββ βββββ
βββββ ββββββ D A N I S H S P E E C H ββββββ βββββ
βββββ βββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββββ
βββββ R E L E A S E I N F O [ MODEL / WEIGHTS ] βββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββββ
βββββ βββββ
βββββ EDITION .......... LARGE-V3-TURBO βββββ
βββββ LANGUAGE ......... DANISH βββββ
βββββ STATUS ........... SOTA-ish βββββ
βββββ LAYERS ........... 32 ENCODER / 4 DECODER βββββ
βββββ MODEL WIDTH ...... 1280 βββββ
βββββ AUDIO INPUT ...... 16 kHz MONO / 128 MEL BINS βββββ
βββββ TRAIN WINDOW ..... 30 SECONDS βββββ
βββββ VOCABULARY ....... 51,866 TOKENS βββββ
βββββ OPTIMIZER ........ MUON + ADAMW βββββ
βββββ TRAINING ......... 200,000 OPTIMIZER STEPS βββββ
βββββ TRAINED ON ....... NVIDIA GEFORCE RTX 4090 βββββ
βββββ βββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ββββ
βββββ 01 USAGE / 02 TRAINING / 03 EVALUATION βββββ
βββββ 04 LIMITATIONS / 05 LICENSE / 06 CREDITS βββββ
βββββ βββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This is a Danish continuation of
openai/whisper-large-v3-turbo.
The architecture and tokenizer are unchanged. The released weights are an
exponential moving average taken after 200,000 optimizer steps.
01 / USAGE
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor, pipeline
model_id = "thorh/whisper-large-v3-turbo-danish"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
dtype = torch.bfloat16 if torch.cuda.is_available() else torch.float32
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
model_id,
dtype=dtype,
low_cpu_mem_usage=True,
).to(device)
transcribe = pipeline(
"automatic-speech-recognition",
model=model,
tokenizer=processor.tokenizer,
feature_extractor=processor.feature_extractor,
dtype=dtype,
device=device,
)
result = transcribe(
"audio.wav",
generate_kwargs={"language": "da", "task": "transcribe", "num_beams": 1},
)
print(result["text"])
02 / TRAINING
Training used the Danish portions of CoRal v3, Common Voice 26.0, FLEURS,
FTSpeech and NST together with filtered pseudo-labelled data. The pseudo-labels
were generated with openai/whisper-large-v3
and confidence-filtered before use.
Targets retained their original casing, punctuation and numeral style. Audio augmentation, SpecAugment and synthetic no-speech examples were included. The data design was inspired by the weak-supervision and no-speech principles in the original Whisper paper.
| Setting | Value |
|---|---|
| Steps | 200,000 |
| Optimizer | Muon for hidden matrices; AdamW for remaining parameters |
| Peak learning rate | Muon 5e-6; AdamW 2.5e-6 |
| Weight decay | 0.01 |
| Schedule | 1,000-step warmup, stable to 50,000, linear decay to 10% at 200,000 |
| EMA | 0.9999 per step |
| Precision | BF16 parameters, FP8 hidden forward GEMMs, compensated FP32 optimizer updates |
| Maximum training segment | 30 seconds |
| Training hardware | One NVIDIA GeForce RTX 4090 |
| Active wall time | Approximately 56 hours |
The following figures are cumulative audio sampled during training. They include repeated sampling and are not unique dataset durations.
| Source | Hours seen |
|---|---|
| CoRal conversation | 485.45 |
| CoRal read-aloud | 894.45 |
| Common Voice Danish | 72.63 |
| FLEURS Danish | 74.06 |
| FTSpeech | 1,469.10 |
| NST Danish | 712.01 |
| Pseudo-labelled data | 9,200.04 |
| Total | 12,907.73 |
Additional recipe details are recorded in training_recipe.json.
03 / EVALUATION
The checkpoint was evaluated against the public Danish ASR Leaderboard protocol using greedy Danish transcription. Short clips used standard decoding; clips over 30 seconds used timestamped sequential long-form decoding. The leaderboard normalizer was applied, including Danish numeral normalization.
| Test set | Samples | WER (%) | CER (%) |
|---|---|---|---|
| CoRal conversation | 8,438 | 20.05 | 11.92 |
| CoRal read-aloud | 9,122 | 12.93 | 4.80 |
Common Voice (cv17_da) |
2,756 | 8.24 | 2.65 |
FLEURS da_dk |
930 | 8.95 | 3.65 |
FTSpeech test_balanced |
5,534 | 7.39 | 4.19 |
| Unweighted domain mean | 26,780 | 11.51 | 5.44 |
Exact revisions and decoding settings are recorded in training_recipe.json.
04 / LIMITATIONS
- Accuracy in languages other than Danish may be reduced.
- Long-form behavior was not directly trained and should be validated separately.
05 / LICENSE
The model weights are released under the MIT License. Training data are not
redistributed and remain subject to their source terms. See
THIRD_PARTY_NOTICES.md.
06 / CREDITS
@article{radford2022robust,
title={Robust Speech Recognition via Large-Scale Weak Supervision},
author={Radford, Alec and Kim, Jong Wook and Xu, Tao and Brockman, Greg and McLeavey, Christine and Sutskever, Ilya},
journal={arXiv preprint arXiv:2212.04356},
year={2022}
}