Change language by swapping <|en|> in the prompt to the desired language code.
Performance (INT8)
All benchmarks run on a Windows 11 machine with CPU only (no dedicated GPU), 24 GB shared RAM, using the INT8 variant. No special optimization or batching -- just sequential chunk-by-chunk processing.
Audio
Language
Duration
Processing Time
Speed
Tokens Generated
Voice memo
English
30.5s
5.4s
5.6x realtime
61
Interview podcast (Mike Agugliaro / Jay Abraham)
English
57.1 min
14 min 53s
3.8x realtime
~14,500
Language learning podcast (Easy German)
German
35.0 min
9 min 24s
3.7x realtime
~8,900
What the Numbers Mean
5.6x realtime means 1 second of audio is transcribed in ~0.18 seconds
3.7-3.8x realtime on longer files (the slight slowdown vs short clips is because longer audio produces more decoder tokens per chunk)
Encoder takes ~3.5-7s per 30s chunk (the heavy lifting -- 48 Conformer layers)
Decoder takes ~1.5-3s per chunk depending on how many words are spoken
Memory Usage
Component
RAM
Encoder session (loaded once)
~2.6 GB
Decoder session (loaded once)
~146 MB
Per-chunk inference overhead
~300-500 MB
Decoder KV cache
~256 MB
Peak total
~3.5-4 GB
Peak RAM stays constant regardless of audio length -- only one chunk is in memory at a time. A 5-minute file and a 5-hour file use the same amount of RAM.
GPU Acceleration
These benchmarks are CPU-only. For GPU acceleration on Windows, use DirectML (works with any DirectX 12 GPU -- AMD, NVIDIA, Intel). Expected 3-5x additional speedup, bringing throughput to 15-25x realtime.
Long Audio
The encoder handles up to ~35 seconds per call. For longer audio, split into overlapping chunks:
Chunk size: 30 seconds
Overlap: 5 seconds
Stride: 25 seconds
Transcribe each chunk, join results with spaces.
How This Was Made
The original PyTorch model was converted to ONNX with several engineering adaptations:
Feature extraction baked in -- The encoder takes raw 16kHz audio, not mel spectrograms. STFT is implemented via Conv1d DFT filters (since torch.stft doesn't export to ONNX).
Cross-attention K/V pre-computed -- The encoder pre-computes Key/Value projections for all 8 decoder layers, matching the Whisper-style encoder-decoder ONNX pattern.
Selective quantization -- INT8 quantization protects convolutional and batch normalization layers in the audio frontend for accuracy preservation.
See PORTING_GUIDE.md for the complete technical writeup with every concept explained.