evaluation.md

November 20, 2025 · View on GitHub

ASR

Word Error Rate (%) across all validation sets for ASR models:

Set NameV3 CTCV3 RNNTE2E CTC*E2E RNNT*V2 CTCV2 RNNTV1 CTCV1 RNNTT-One + LMWhisper*
Golos Farfield4.53.96.15.54.34.05.84.812.216.4
Golos Crowd2.82.49.79.12.52.33.12.35.719.0
Russian LibriSpeech4.74.46.46.45.25.27.57.76.29.4
Mozilla Common Voice 191.30.93.23.01.50.98.48.05.25.5
Natural Speech7.86.99.68.510.810.312.611.414.513.4
Disordered Speech20.619.222.823.128.027.537.540.851.058.6
Callcenter10.39.513.312.613.612.915.515.013.523.1
OpenSTT Phone Calls18.617.420.019.120.719.823.021.119.827.4
OpenSTT Youtube11.610.612.711.813.913.016.014.721.917.8
OpenSTT Audiobooks8.78.210.39.310.810.312.711.713.414.3
Average9.18.312.011.211.110.614.213.816.321.0

* with post-processing applied (removing punctuation and capitalization, replacing numerals, etc.)

End-to-end ASR

Side-by-side (SBS) comparison of v3_e2e_ctc (blue) and v3_e2e_rnnt (red) against Whisper outputs across domains, using 500 random samples per test set. Each model was evaluated independently against Whisper by an LLM-as-a-Judge with randomized prompt ordering.

plot

For the creation of training labels with punctuation and text normalization, we used GigaChat Max Audio: this model was provided with both the original audio and transcription from the training corpus, alongside few-shot examples, to produce normalized text with precise punctuation. In contrast, using Whisper in forced decoding mode adds only punctuation (not normalization). Although this alternative reduces hallucinations, it results in especially poor comma accuracy, and training on such labels further degrades overall model performance.

NormalizationF1(,) ↑F1(.) ↑F1(?) ↑WER ↓CER ↓
GigaChat Max AudioFull84.285.674.918.410.9
Whisper Punctuatorpunctuation only62.285.077.70.00.0
GigaAM from Whisper labelspunctuation only50.384.177.712.07.8
GigaAM-e2e-ctcFull83.786.778.616.08.7
GigaAM-e2e-rnntFull84.586.779.814.28.8

Emotion recognition

GigaAM-Emo was trained on the Dusha dataset

CrowdPodcast
Unweighted AccuracyWeighted AccuracyMacro F1-scoreUnweighted AccuracyWeighted AccuracyMacro F1-score
DUSHA baseline
(MobileNetV2 + Self-Attention)
0.830.760.770.890.530.54
АБК (TIM-Net)0.840.770.780.900.500.55
GigaAM-Emo0.900.870.840.900.760.67

Attention type

We benchmarked attention implementations (one layer and full encoder) on CUDA. Custom implementation runs naive tensor multiplication. SDPA is enabled by default, as it offers better robustness across varying input dimensions. flash_attn is only beneficial for long sequences with batch_size >> 1 (example for bs > 1).

  • Only Attention Mechanism (Time (ms) ± std)
bs, seq_lenCustomSDPAFlash
1, 10s0.03 ± 0.000.03 ± 0.000.05 ± 0.03
8, 20s0.15 ± 0.010.14 ± 0.010.66 ± 0.14
128, 30s3.60 ± 0.103.59 ± 0.041.40 ± 0.06
  • Full Encoder Inference (Time (ms) ± std)
bs, seq_lenCustomSDPAFlash
1, 10s10.14 ± 0.1710.06 ± 0.1211.57 ± 0.25
8, 20s15.84 ± 0.0715.90 ± 0.0225.26 ± 0.26
128, 30s324.53 ± 0.17324.48 ± 0.09293.80 ± 0.89

Test Coverage

We maintain high unit test coverage to ensure reliability and ease of refactoring. Coverage currently stands at 91%, measured with pytest-cov (flash-attn is not covered, as it requires GPU execution).

Command to reproduce (testing will take some time)

HF_TOKEN=<your hf token> pytest --cov=gigaam --cov-report=term-missing -v tests/