ONNX Runtime export of AigizK/GigaAM-Bashkir-CV25,
a character-level CTC ASR model for Bashkir (Башҡорт теле). The source model
was fine-tuned from GigaAM Multilingual multilingual_ssl on Mozilla Common
Voice 25 Bashkir.
Results
Raw WER is computed after lowercasing and punctuation removal on the complete
Common Voice 25 splits, using onnx-asr with batch size 32.
Runtime
Validation WER
Test WER
PyTorch checkpoint
7.20%
7.73%
ONNX FP32
7.26%
7.74%
ONNX dynamic INT8
7.37%
7.80%
Validation contains 14,525 clips (19.467 hours); test contains 14,572 clips
(19.885 hours). See evaluation_results.json for exact error counts, hashes,
providers, and runtime measurements.
onnx-asr accepts mono PCM WAV paths directly. It also accepts a float32 NumPy
waveform and a sample_rate argument when audio is decoded by another library.
The output is lowercase Bashkir text without punctuation.
Performance benchmark
Higher × realtime is better: 100× means 100 seconds of audio are processed
in one second. Audio was decoded to mono 16 kHz and preloaded into RAM. Timed
sections include feature extraction, ONNX inference, and greedy CTC decoding;
Hub download, model loading/graph optimization, MP3 decoding, and disk I/O are
excluded.
Hardware and software:
AMD EPYC 7452, 32 physical cores / 64 threads
NVIDIA GeForce RTX 3090 24 GB
NVIDIA GeForce RTX 5090 32 GB
onnx-asr 0.12.0, ONNX Runtime 1.23.2, Python 3.11
deterministic, evenly spaced rows from Common Voice 25 Bashkir test
Batch size
Same 96 clips / 466.704 seconds of audio for every row. CPU uses 32 ONNX Runtime
intra-op threads. GPU uses the CUDA Execution Provider.
Runtime
Batch
Clips/s
Audio speed
p50 batch latency
CPU FP32
1
6.9
33.7×
138.1 ms
CPU FP32
8
6.9
33.6×
1213.8 ms
CPU FP32
32
7.5
36.5×
4103.1 ms
CPU INT8
1
6.3
30.4×
149.2 ms
CPU INT8
8
4.9
23.8×
1659.3 ms
CPU INT8
32
4.8
23.5×
6590.4 ms
RTX 3090 FP32
1
14.3
69.7×
67.9 ms
RTX 3090 FP32
8
110.2
535.7×
74.4 ms
RTX 3090 FP32
32
153.3
745.1×
202.5 ms
RTX 5090 FP32
1
23.8
115.9×
40.3 ms
RTX 5090 FP32
8
178.6
868.3×
46.6 ms
RTX 5090 FP32
32
379.3
1844.0×
86.0 ms
CPU intra-op thread scaling
Batch size 8; same 24 clips / 117.324 seconds of audio.
ORT threads
FP32
INT8
1
5.2×
5.0×
2
9.6×
8.8×
4
17.2×
14.1×
8
26.5×
19.8×
16
34.1×
24.3×
32
38.0×
27.6×
Parallel batch-1 requests
One shared model, Python ThreadPoolExecutor, same 32 clips / 158.580 seconds.
CPU sessions use 8 intra-op threads.
Runtime
1 worker
2 workers
4 workers
CPU FP32
29.0×
41.0×
54.4×
CPU INT8
24.9×
40.5×
58.6×
RTX 3090 FP32
76.6×
101.5×
143.8×
RTX 5090 FP32
129.1×
154.1×
203.0×
Key observations:
RTX 5090 reaches about 1844× realtime at batch 32; RTX 3090 reaches about 745×.
Batching is much more effective than concurrent batch-1 calls on GPU.
On this EPYC, FP32 is faster than dynamic INT8. INT8's main benefit here is the 4× smaller artifact and lower memory/storage usage; speed depends on CPU instruction support and ONNX Runtime kernels.
Four parallel CPU requests reach about 54× realtime FP32 and 59× INT8 aggregate throughput.
Results are hardware- and workload-specific. Benchmark your expected audio lengths and concurrency.
Full-precision values and methodology are in benchmark_results.json; the
reproducible runner is benchmark_onnx.py.
Artifacts
multilingual_bashkir_ctc.onnx: FP32 encoder and 43-class CTC head.
multilingual_bashkir_ctc.int8.onnx: dynamic unsigned INT8 quantization for CPU.
multilingual_vocab.txt: 42 Bashkir characters plus CTC blank at index 42.
config.json: model configuration used by onnx-asr.
INT8 was produced with ONNX Runtime dynamic quantization, using unsigned 8-bit
weights and activations with per-tensor scales. FP32 was evaluated with the CUDA
Execution Provider; INT8 was evaluated with the CPU Execution Provider.
Limitations
Trained and evaluated on read speech from Common Voice; conversational and noisy speech may differ.
Greedy CTC decoding only; no external language model.
No capitalization or punctuation prediction.
License
MIT License. Commercial use, modification, redistribution, and private use are
permitted. Retain the copyright and license notice when redistributing.