WinSTT logoWinSTT
Models

Compute & Quantization

How WinSTT picks an ONNX Runtime execution provider and what the fp16 / int8 / q4 quantization labels mean for size, speed, and accuracy.

Two knobs decide how fast a model runs: the execution provider (which hardware ONNX Runtime targets) and the quantization (how compressed the model's weights are). The provider is fixed by the platform/build; the quantization is per-model in the picker.

2
EPs in official builds (CPU + DirectML)
7
quantization labels in the picker
~13%
q4 size vs fp32 default
The Model tab's Device control showing Auto and CPU options for selecting the ONNX Runtime execution provider.
Auto picks the best bundled provider for your platform; CPU pins the CPU path.

Execution providers

WinSTT runs every model on ONNX Runtime. Which hardware backend — "execution provider" (EP) — it uses depends on the platform and build features. Every official package has a CPU fallback; Windows builds also include DirectML. Other EPs such as CoreML, CUDA, ROCm, and OpenVINO are custom/development build features until release packaging for those targets is finalized.

Provider availability is platform/build specific. The app falls back to CPU when a requested provider is unavailable.
ProviderHardwareWhen to use
CPUAll supported desktop platformsUniversal fallback and the default path when no validated accelerator is bundled.
DirectMLWindows with any DirectX 12 GPU — AMD, Intel, or NVIDIAVendor-agnostic Windows GPU path; falls back to CPU when the GPU path is not viable.
CoreMLmacOS builds with the CoreML featureApple GPU/Neural Engine path for custom or future signed macOS builds.
CUDA / ROCm / OpenVINOCustom builds for matching hardwareDevelopment or native-runner paths; not separate public alpha packages today.

The Model tab's Device control offers Auto and CPU for official packages: Auto uses the best bundled provider for the platform when one is viable, and CPU forces the CPU path regardless.

Why no CUDA build on Windows?

On our workload DirectML is both faster and ~10× lighter than CUDA. On an RTX 3080 Ti running whisper-tiny-q4, DirectML measures p50 = 85 ms (p95 = 89 ms, stdev = 3 ms) versus CUDA's p50 = 120 ms (p95 = 151 ms, stdev = 37 ms) — DirectML wins on both the median and consistency, while the package is far smaller. CUDA remains a custom/development path for Linux NVIDIA machines.

Auto-fallback to CPU

GPU-capable builds degrade gracefully. At startup the backend probes the active provider, and if the requested GPU path isn't viable it silently falls back to CPU. You get a working app either way. The per-OS auto priority skips providers that were not bundled for that build.

When the GPU path is skipped

The backend falls back to CPU when there's no DirectX 12 GPU for DirectML, a custom EP is missing its driver/runtime libraries, or the model graph is unsupported on the requested provider.

Force CPU manually

Set the Model tab's Device control to CPU to pin the CPU path regardless of the active build — useful when a GPU driver is flaky. OpenVINO's target can be steered with the OPENVINO_DEVICE env var (AUTO / GPU / GPU.0 / CPU; default AUTO).

Quantization

Quantization compresses a model's weights to a lower numerical precision. Lower precision means a smaller download, less RAM/VRAM, and faster inference — at the cost of small, usually-imperceptible accuracy differences. WinSTT exposes it as the model.onnxQuantization setting, set per-model in the picker.

An empty value (Auto) uses the model's default precision. The picker only shows the quantizations the upstream repo actually publishes for a given model — you can't pick a variant that doesn't exist, and the server falls back to the default if a chosen file is missing.

Sizes/speeds are relative to the model's fp32 default and vary by family. The setting applies to both the main model and the realtime model.
QuantizationPrecisionRelative sizeRelative speedBest for
AutoModel default (fp32)100%1.0×Maximum accuracy; pick when unsure
fp1616-bit float~50%fast on GPUDirectML / GPU — the fastest GPU path
int88-bit integer~25%fast on CPUCPU — best balance (NeMo, GigaAM, Vosk)
uint88-bit unsigned int~25%fast on CPUCPU alternative to int8 where published
q44-bit~13%small + lightSmallest download, lowest RAM
q4f16Mixed 4-/16-bit~20%small + lightSmall with better quality than plain q4
bnb4bitsandbytes 4-bit~13%small + light4-bit alternative where q4 isn't published

These seven values match the labels in the Model picker exactly. Availability is per-family: most Whisper and Lite-Whisper models publish fp16, q4, q4f16, and bnb4; NeMo, GigaAM, and Vosk/Kaldi models publish int8. A few models (e.g. large-v3, t-tech/t-one) ship the default precision only.

Picking a quantization

On a GPU build

Prefer fp16 when the model publishes it — it roughly halves memory with negligible quality loss and the GPU accelerates it directly. Fall back to Auto if fp16 isn't offered.

On the CPU build

Use int8 for NeMo / GigaAM / Vosk — best speed for minimal quality cost. For Whisper on a RAM-tight machine, q4 or q4f16 shrink the footprint the most.

When accuracy matters most

Leave it on Auto (full fp32). This is the safe default and the reference against which every other variant trades.

When disk or RAM is scarce

q4 / bnb4 are ~13% of the fp32 size. Great for laptops and small models you want resident with a long unload timeout.

int8 on a GPU isn't a free win

4-bit and 8-bit weight quantization is built for shrinking the download and easing CPU/RAM pressure — not for squeezing more speed out of a GPU. On a GPU the dequantization overhead can cancel the savings, and some int8/q4 ONNX exports are broken or unsupported on the GPU EP, so the session quietly falls back to CPU or errors. The reliable GPU lever is fp16; reach for int8/q4 when you're constrained on disk or memory, not chasing GPU throughput.

Per-quantization downloads

Each quantization is a separate download. In the picker you can download, pause, resume, cancel, or delete a single variant per model — so you can keep, say, fp16 for the GPU and delete the fp32 default to reclaim disk, without touching the other models.

On this page