Promises ASR RU (GigaAM-v3 e2e_ctc, fine-tuned, Core ML)
A fine-tune of Sber's ai-sage/GigaAM-v3 (revision e2e_ctc, commit cec030b4c4f35d928e4a9044a3bdb29ebd499fac), a Conformer with a CTC head that writes punctuated, normalised Russian text, converted to Core ML for the Promises app (GigaAM.mlmodelc, fp16; the front end stays fp32). The vocabulary is the original 256 pieces.
What changed against the original: the filler sounds ("э-э", "м-м") are no longer written (22.7 -> 0.9 per 1000 words); Russian accuracy is within noise of the original (table below).
How it was trained
3000 steps: CTC loss per token plus a KL term to the original model on Russian anchor data, SpecAugment, noise and room responses; then the weights were moved 72% of the way from the original to the fine-tuned ones (WiSE-FT, alpha 0.72) to give back most of what fine-tuning cost on read speech. Data: Common Voice ru (CC0), FLEURS ru (CC-BY 4.0), Russian LibriSpeech (CC-BY 4.0, only clips the original model already reads within 5% word errors against the book's text), and 8.2 hours of the author's own microphone recordings with pseudo-labels (the labels have the filler sounds taken out).
Measured (06.11.2026)
| Set (greedy, word error rate, %) | original | this model |
|---|---|---|
| FLEURS-ru test, 120 clips (PyTorch) | 4.25 | 4.58 |
| FLEURS-ru test, Core ML fp16 | 4.37 | 4.66 |
| Russian LibriSpeech test, 300 clips | 6.20 | 6.37 |
| Common Voice ru test, 300 clips | 2.57 | 2.73 |
| Filler sounds written per 1000 words, 8 recordings of 300 s | 22.7 | 0.9 |
| Recall of 81 Russian names (synthetic speech, no word list) | 0.605 | 0.624 |
Core ML fp32 against the fine-tuned PyTorch model: the same greedy ids on 18 clips, max |delta log-prob| 9.4e-4; fp16 is half the size and reads the same text on most clips. The differences of 0.1-0.3 points on sets of 120-300 clips are within noise.
Not measured: English terms (this model has the original vocabulary and does not write them better than the original), speakers and rooms outside the data above, anything by ear.
Privacy and data
Part of the fine-tuning data is a set of the author's own call and microphone recordings (about 8.2 hours, 3 227 clips) with automatic labels. The recordings are not published, and other speakers' voices are in them. Two checks were made on the weights (07.11.2026), on 56 held-out clips and 285 unseen windows:
- the loss gain on familiar clips against held-out clips of the same source is weakly larger and not significantly different from zero (AUC 0.59-0.60, the 95% interval of the difference contains 0);
- phrases that appear in the training texts, written on unseen windows, are generic connectives ("то есть по сути", "для того чтобы"); rare words are no more frequent than for a control corpus; on other people's speech (FLEURS) and on silence, noise and music nothing from the training texts appears.
The power of these checks is small (56 held-out clips). They do not cover speaker or voice leakage or extraction attacks. If you are one of the people heard in such a call and want to raise a concern, open a discussion in this repository.
Use
Input audio (1, N) float32 at 16 kHz with N in {80000, 160000, 320000} (5, 10, 20 s, the clip zero-padded) and length (1,) int32 = the real number of samples; output log_probs (1, T, C), one frame per 40 ms, the last class is the CTC blank. tokens.txt has the pieces in id order; gigaam.json has the constants a runtime needs. Greedy or beam CTC decoding; the Promises app loads it this way. Speed and size are those of GigaAM-v3 (about 424 MB, 2400 s of audio in 9 s on an M4 Pro on CPU+GPU; about 110 MB of memory and 81x real time on CPU only).
MIT, as the original: see LICENSE (the copyright line of GigaChat Team is kept).