Whisper-backend-dyst: faster-whisper vs HF Transformers vs whisper.cpp (2026)

Tre måder at køre Whisper på — faster-whisper (CTranslate2), Hugging Face Transformers (batched, SDPA) og whisper.cpp (ggml) — benchmarket på rigtig dansk telefonlyd på et RTX 4070 Ti. faster-whisper + large-v3-turbo er hurtigst samlet (~56× realtid); whisper.cpp CUDA er tæt på med en brøkdel af VRAM'en og matcher endda GPU-hastighed på CPU for korte filer. Fulde tabeller for hastighed (RTF), VRAM og konsensus-WER-kvalitet, plus en anbefaling pr. use case.

Kort fortalt — På et RTX 4070 Ti med telefoni-optimeret lydforbehandling når faster-whisper med large-v3-turbo ~56× realtid — hurtigst samlet. whisper.cpp CUDA er tæt på (~40×) ved en brøkdel af VRAM’en. Batched HF Transformers (SDPA, batch 24) er konkurrencedygtig på turbo-modellen. På CPU matcher whisper.cpp overraskende GPU-hastigheder for korte filer; faster-whisper int8 er stadig praktisk ved ~5×.

En del af det danske voicelog-projekt — dette er backend-benchmarken bag pipelinens ASR-valg. Se også at køre Whisper lokalt.

Opsætning

GPUNVIDIA GeForce RTX 4070 Ti (12 GB VRAM)
CPUIntel Core i5-13400F (16 tråde)
RAM125 GB
CUDA12.9 / Driver 595
faster-whisper1.2.1 (CTranslate2 4.8.0)
transformers5.10.2
whisper.cppkompileret fra kilde, CUDA aktiveret
PyTorch2.12.0

Lyd-testsæt

Tre rigtige danske telefonopkald fra et dansk voicelog-korpus (filnavne anonymiseret til Fil 1–3):

FilVarighedNoter
Fil 11m 26sAutentisk dansk samtaletale
Fil 213m 26sAutentisk dansk samtaletale
Fil 31m 51sAutentisk dansk samtaletale

Der findes ingen referencetransskriptioner — kvalitet vurderes via konsensus-WER (parvis enighed på tværs af modeller) og relativ WER (afstand til konsensus-vinderen).

Backends i test

BackendEngineNøgleteknikModeller
faster-whisperCTranslate2int8/float16-kvantiserede kernerlarge-v3, large-v3-turbo
HF Transformers (batched)PyTorch (SDPA)batch_size=24, flash-attention via SDPAlarge-v3, large-v3-turbo
whisper.cppggmlCUDA-kerne-offload / AVX CPUlarge-v3, large-v3-turbo

Resultater: hastighed (RTF — lavere er bedre)

RTF = transskriptionstid ÷ lydvarighed. RTF 0,03 = 33× realtid.

Backend / Model / EnhedFil 1Fil 2Fil 3Gns. RTFFart
faster-whisper / large-v3-turbo / CUDA0.0210.0130.0190.01856×
faster-whisper / large-v3 / CUDA0.0470.0330.0510.04323×
HF Transformers (b24, SDPA) / large-v3-turbo / CUDA0.0400.0620.0360.04622×
HF Transformers (b2, SDPA) / large-v3 / CUDA0.1800.1420.2220.181
whisper.cpp / large-v3-turbo / CUDA0.0280.0170.0300.02540×
whisper.cpp / large-v3 / CUDA0.0700.0500.0800.06715×
faster-whisper / large-v3-turbo / CPU0.2080.1510.2480.203
faster-whisper / large-v3 / CPU0.4700.3540.7140.513
whisper.cpp / large-v3-turbo / CPU0.0340.0170.0270.02639×
whisper.cpp / large-v3 / CPU0.0710.0500.0840.06815×

Resultater: VRAM-forbrug (GPU-kørsler)

Backend / ModelGns. VRAM (MB)
HF Transformers (b24, SDPA) / large-v3-turbo / CUDA3884
HF Transformers (b2, SDPA) / large-v3 / CUDA5727

Resultater: kvalitet (konsensus-WER)

Konsensus-WER måler, hvor meget hver models output afviger fra gruppegennemsnittet. Lavere = mere lig det, alle modeller er enige om.

Backend / Model / EnhedFil 1Fil 2Fil 3Gns. relativ WER
faster-whisper / large-v3-turbo / CUDA0.1320.3590.2260.239
faster-whisper / large-v3 / CUDA0.2300.3340.2940.286
HF Transformers (b24, SDPA) / large-v3-turbo / CUDA0.2370.6010.2290.356
HF Transformers (b2, SDPA) / large-v3 / CUDA0.1520.2250.3260.234
whisper.cpp / large-v3-turbo / CUDA0.0000.6730.0000.224
whisper.cpp / large-v3 / CUDA0.1870.0000.5530.247
faster-whisper / large-v3-turbo / CPU0.1360.3440.1910.224
faster-whisper / large-v3 / CPU0.2490.3390.2740.287
whisper.cpp / large-v3-turbo / CPU0.0000.6730.0000.224
whisper.cpp / large-v3 / CPU0.1870.0000.5530.247

Kvalitetsvinder: faster-whisper / large-v3-turbo / CPU

Side om side: hvor backendsne adskilte sig

Test-lyden er et privat opkald, så i stedet for at gengive det er her en neutral dansk sætning, der står som stedfortræder for den slags samtaletale, der blev testet — plus de afvigelsesmønstre, der faktisk dukkede op på tværs af backends på 86-sekunders-filen:

“Lad os tage mødet på torsdag, så gennemgår vi tallene sammen.” (illustrativ)

  • Tabte indledninger. faster-whisper large-v3 (CUDA og CPU) startede nogle gange et par ord inde og udelod en indledende sætning, som turbo-modellerne og whisper.cpp fangede.
  • Uenighed om egennavne. Det indledende navn blev transskriberet på to forskellige måder på tværs af backends — det klassiske problem med navne i et sprog med få ressourcer, hvor hver model gætter en anden plausibel stavemåde.
  • Forvanskede navneord på støjende segmenter. whisper.cpp large-v3 lavede et klart navneord om til en næsten-homofon, som turbo-modellerne fik rigtigt.
  • Sjældne hallucinerede fragmenter. faster-whisper large-v3 udsendte lejlighedsvis en kort nonsens-frase på en støjende strækning, hvor de andre backends holdt sig rene.
  • Mindre stavefejl. Turbo-CPU-kørslen producerede en og anden vokal-tastefejl, der ikke sås på GPU.

Netto: turbo-modellerne var mest konsekvent kohærente; fuld large-v3 var stærk, men mere tilbøjelig til tabte indledninger og en og anden hallucination på denne støjende telefonlyd.

Nøglefund

  • Hurtigste GPU: faster-whisper / large-v3-turbo / CUDA ved gns. RTF 0,018 (56× realtid).
  • Turbo-speedup (faster-whisper GPU): large-v3-turbo er 2,4× hurtigere end large-v3.
  • Hurtigste CPU: whisper.cpp / large-v3-turbo / CPU ved gns. RTF 0,026.
  • GPU vs. CPU (faster-whisper turbo): GPU er 11,4× hurtigere end CPU int8.
  • Lavest VRAM: HF Transformers (b24, SDPA) / large-v3-turbo / CUDA ved 3884 MB.

Anbefalinger

Use caseAnbefaling
Produktions-pipeline (GPU-server)faster-whisper + large-v3-turbo + float16 — bedste hastighed/kvalitet/VRAM
Højeste præcision (GPU, ingen hastighedsbinding)faster-whisper + large-v3 + float16
Batched offline-behandlingHF Transformers batched (SDPA) + large-v3-turbo, batch_size=24
Embedded / ingen Python-runtimewhisper.cpp CUDA — én binær, lavt overhead
CPU-only-serverfaster-whisper + large-v3-turbo + int8
Edge / Raspberry Piwhisper.cpp CPU + large-v3-turbo (mindste RAM-fodaftryk)

Metodenoter

  • Hver backend/model/enhed-kombination kører som en separat proces for at garantere fuld GPU-hukommelses-frigivelse mellem kørsler.
  • faster-whisper GPU bruger compute_type=float16; CPU bruger int8.
  • HF Transformers bruger attn_implementation=sdpa (PyTorch SDPA / FlashAttention-ækvivalent, ingen ekstra installation).
  • whisper.cpp bruger CUDA automatisk, når den er kompileret med GGML_CUDA=ON — intet flag nødvendigt; CPU-kørsler bruger -t 8 (systemets trådantal).
  • Al lyd forbehandles med ffmpeg før transskribering: highpass=f=200,lowpass=f=3400,afftdn=nr=10:nf=-25,dynaudnorm (telefon-båndpas + let denoise + loudness-normalisering).
  • VRAM måles via torch.cuda.max_memory_allocated(); ikke tilgængeligt for whisper.cpp-subprocess-kørsler.
  • Al lyd er dansk samtale-telefontale — resultater kan variere på andre sprog eller lydforhold.
  • Konsensus-WER beregnes parvist på tværs af alle modeller; modellen med lavest gennemsnitlig parvis WER er “konsensus-vinderen”.