Promises ASR RU Mixed (GigaAM-v3 e2e_ctc, fine-tuned with Latin pieces, Core ML)
A fine-tune of Sber's ai-sage/GigaAM-v3 (revision e2e_ctc, commit cec030b4c4f35d928e4a9044a3bdb29ebd499fac) with an extended vocabulary: the original 256 SentencePiece pieces plus Latin pieces, 596 in all (the CTC blank is class 596). It can write Latin words (product names, abbreviations: "Kubernetes", "SKU") in Russian speech, which the original cannot. Converted to Core ML for the Promises app (GigaAM.mlmodelc, fp16).
How it was trained
8000 steps on the recipe of the sibling model (CTC loss per token plus a KL term to the original on Russian anchor data, SpecAugment, noise and room responses) with added code-switching data: about 10 thousand sentences with Latin terms, read by a synthetic-speech model (Qwen3-TTS, 337 voices, part of the clips in an accent mode), next to the Russian data of the sibling model (Common Voice ru, FLEURS ru, Russian LibriSpeech, the author's own recordings with pseudo-labels, 8.2 hours); then the weights were moved 70% of the way from the original (WiSE-FT, alpha 0.7).
Measured (07.11.2026)
| Set (greedy, word error rate, %) | original | this model |
|---|---|---|
| FLEURS-ru test, 120 clips (PyTorch) | 4.25 | 4.41 |
| FLEURS-ru test, Core ML fp16 (CPU+GPU and CPU+NE) | 4.37 | 4.46-4.54 |
| Russian LibriSpeech test, 300 clips | 6.20 | 6.06 |
| Common Voice ru test, 300 clips | 2.57 | 2.81 |
| Recall of 81 Russian names | 0.605 | 0.648 |
| Filler sounds written per 1000 words | 21.1 | 0.9 |
| Terms written correctly in Latin, 875 terms never seen in training (synthetic speech) | 12.8% | 20.8% |
| the same, Core ML fp16 | - | 20.5-20.7% |
The gain on terms is modest: four out of five unseen terms are still not written in Latin (many are written by sound in Cyrillic or lost). It is not a replacement for a term list; in the Promises app it is combined with a recogniser that writes Latin better (Parakeet) and with the user's own glossary. The test speech is synthetic; real recordings were not measured for terms. fp32 parity with PyTorch: the same ids on 20 clips (max |delta log-prob| 2.9e-3); fp16 the same ids on 18 of 20.
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).