Model reference · open weights

hviske

Audio syvai Speech→text 1 build Non-commercial 19k dl/mo

hviske is an open-weight audio or speech model from syvai. hviske-v5.3 (BF16) weighs 4.1 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • hviske-v5.3 is a 2.1B parameter Conformer encoder-decoder model developed by syvai for automatic speech recognition in Danish.
  • It is optimized for both read-aloud and conversational speech, with a context length of 1024 tokens.
  • The model is released under the CC BY-NC 4.0 license, which permits non-commercial use with attribution.

Summary of the syvai/hviske-v5.3 model card, 2026-10-01

What it is

Released bysyvai
Released2026-04-28
Parameters2.1B
VRAM4.1 GB for the weights

What it runs on

Memory and cards for hviske-v5.3 (BF16)

4.1 GBweights, file size
1.6 GBruntime overhead
CardOne streamMemory
RTX 3060 12 GBfits11.6 GB
RTX 4060 Ti 16 GBfits15.4 GB
RTX 3090 24 GBfits23.4 GB
RTX 4090 24 GBfits23.4 GB
RTX 5090 32 GBfits31.0 GB
L40S 48 GBfits44.0 GB
A100 80 GBfits78.2 GB
H100 80 GBfits78.1 GB
RTX PRO 6000 Blackwell 96 GBfits93.8 GB
DGX Spark (GB10) 128 GB unifiedfits107 GB
H200 141 GBfits138 GB
B200 180 GBfits176 GB

From the model card

What syvai says about hviske

Read the model card

Danish ASR. Fine-tuned from syvai/hviske-v5.1 on the CoRal v3 train splits with layer-wise learning-rate decay (encoder LR = 0.75 × decoder LR) for 5 epochs.

A 2B-parameter Conformer encoder-decoder ASR model, optimized for Danish read-aloud and conversational speech.

Results on CoRal v3 full test sets

Evaluated on the complete test splits (17,560 samples). Two normalization conventions:

  • raw: jiwer on un-normalized references and hypotheses
  • strict: lowercase + punctuation strip + Danish digit-to-word (num2words(lang="da")) — the apples-to-apples normalization for comparing against published Whisper-style numbers

Greedy decoding (num_beams=1)

SplitNraw WERstrict WERraw CERstrict CER
read_aloud9,12210.26%9.37%4.17%3.80%
conversation8,43821.30%19.63%12.12%11.56%
weighted avg17,56015.56%14.30%7.99%7.53%

Beam search (num_beams=5, length_penalty=1.0)

SplitNraw WERstrict WERraw CERstrict CER
read_aloud9,1229.86%9.01%3.98%3.63%
conversation8,43820.89%19.21%11.90%11.35%
weighted avg17,56015.16%13.91%7.78%7.34%

Beam search costs ~75% more inference time but lowers avg WER by 0.4 pp.

Versus other Danish ASR models on CoRal v3 (CER)

The CoRal team publishes CER numbers on the same test splits. hviske-v5.3 numbers are evaluated on the full test sets. Other entries reproduced from the roest-v3-whisper-1.5b model card.

Conversation split
ModelParamsTrained onconv CER
hviske-v5.3 (this model, beam=5, strict)2.0Bread_aloud + conversation11.35%
hviske-v5.3 (this model, greedy, strict)2.0Bread_aloud + conversation11.56%
hviske-v5.3 (this model, beam=5, raw)2.0Bread_aloud + conversation11.90%
CoRal-project/roest-whisper-1.5b-v21.54Bread_aloud + conversation11.6%
CoRal-project/roest-wav2vec2-315m-v3315Mread_aloud + conversation13.7%
syvai/hviske-v3-conversation1.54Bread_aloud + conversation15.1%
capacit-ai/saga (greedy, strict)2.0Bread_aloud + conversation16.92%
CoRal-project/roest-wav2vec2-315m-v1315Mread_aloud only17.6%
ElevenLabs scribe_v2 (strict)—proprietary19.57%
CoRal-project/roest-wav2vec2-315m-v2315Mread_aloud + conversation24.2%
openai/whisper-large-v31.54B—27.5%
syvai/hviske-v21.54Bread_aloud only29.4%
CoRal-project/roest-whisper-1.5b-v11.54Bread_aloud only35.6%
OpenAI gpt-4o-transcribe (strict)—proprietary43.63%
Read-aloud split
ModelParamsTrained onread_aloud CER
hviske-v5.3 (this model, beam=5, strict)2.0Bread_aloud + conversation3.63%
hviske-v5.3 (this model, greedy, strict)2.0Bread_aloud + conversation3.80%
hviske-v5.3 (this model, beam=5, raw)2.0Bread_aloud + conversation3.98%
CoRal-project/roest-whisper-1.5b-v11.54Bread_aloud only4.0%
syvai/hviske-v21.54Bread_aloud only4.0%
CoRal-project/roest-whisper-1.5b-v21.54Bread_aloud + conversation4.5%
syvai/hviske-v3-conversation1.54Bread_aloud + conversation4.5%
CoRal-project/roest-wav2vec2-315m-v3315Mread_aloud + conversation5.9%
CoRal-project/roest-wav2vec2-315m-v2315Mread_aloud + conversation6.4%
capacit-ai/saga (greedy, strict)2.0Bread_aloud + conversation7.41%
ElevenLabs scribe_v2 (strict)—proprietary7.60%
CoRal-project/roest-wav2vec2-315m-v1315Mread_aloud only8.2%
openai/whisper-large-v31.54B—10.1%
OpenAI gpt-4o-transcribe (strict)—proprietary11.31%

The CoRal team's published numbers do not specify the normalization used; both raw and strict CER are shown for hviske-v5.3 to make the comparison fair. capacit-ai/saga was evaluated with the same methodology used here (full test splits via greedy vllm serve + /v1/audio/transcriptions); raw CER is 8.26% (read_aloud) and 17.49% (conversation). ElevenLabs scribe_v2 was evaluated via the public /v1/speech-to-text API on the same full test sets (n=17,560); strict WER is 18.62% (read_aloud) and 31.38% (conversation). OpenAI gpt-4o-transcribe was evaluated via the public /v1/audio/transcriptions API on the same full test sets; strict WER is 26.34% (read_aloud) and 55.24% (conversation).

Inference speed

On a single NVIDIA RTX 3090, hviske-v5.3 reaches RTFx ≈ 425 — i.e. it transcribes audio about 425× faster than real time. 60 minutes of audio is processed in ≈ 8.5 seconds.

Installation

pip install "transformers==4.57.6" torch soundfile librosa huggingface_hub sentencepiece protobuf
pip install datasets  # only needed for the streaming examples below

Usage

Load the model with AutoModelForSpeechSeq2Seq and trust_remote_code=True. The model exposes both a high-level model.transcribe(...) helper and the standard model.generate(...) interface.

1. Quick start — single file

import torch, numpy as np, soundfile as sf
from transformers import AutoProcessor, AutoModelForSpeechSeq2Seq

processor = AutoProcessor.from_pretrained("syvai/hviske-v5.3", trust_remote_code=True)
model = AutoModelForSpeechSeq2Seq.from_pretrained(
    "syvai/hviske-v5.3", trust_remote_code=True, dtype=torch.bfloat16
).to("cuda").eval()

audio, sr = sf.read("your_audio.wav")
audio = np.asarray(audio, dtype=np.float32)

hyp = model.transcribe(
    processor=processor,
    language="da",
    audio_array

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms