ai-sage's ai-sage/GigaAM-v3
family ported to transcribe.cpp. Russian-only ASR built around a shared
16-layer Conformer encoder (768-d, 16 heads, rotary positional
embeddings), paired with one of two decoder heads (RNN-T or CTC) and
trained either end-to-end on cased+punctuated text or on
lowercased no-punctuation text with a 33-entry character vocabulary.
The four shipped variants are the four cells of that 2×2.
For the architecture deep-dive, validation contract, and porting notes,
see the family doc at
docs/porting/families/gigaam.md.
- Cased + punctuated Russian, best accuracy.
gigaam-v3-e2e-rnnt— RNN-T head trained end-to-end with a 1024-piece SentencePiece vocab. - Cased + punctuated Russian, fastest decode.
gigaam-v3-e2e-ctc— same Conformer encoder and training data ase2e-rnnt, but a more compact 256-piece SentencePiece vocab, with single-pass CTC alignment instead of the transducer loop. - Lowercased no-punct (charwise output).
gigaam-v3-rnntandgigaam-v3-ctc— 33-entry character vocabulary (space + а–я), output is normalized for downstream ASR scoring pipelines that expect this convention. Higher raw WER than the e2e variants because errors on case/punctuation are no longer absorbed by tokenization. - The encoder is structurally identical across the four variants but the weights are per-variant fine-tuned — you cannot swap heads at runtime.
WER is on FLEURS Russian (fleurs-ru) for the Q8_0 preset,
measured by transcribe.cpp's WER pipeline. See each per-variant doc
for the full quant matrix.
| Variant | Params | Languages | Q8_0 size | Benchmark | Q8_0 | Capabilities | Doc |
|---|---|---|---|---|---|---|---|
gigaam-v3-e2e-rnnt |
223M | ru | 274 MB | FLEURS ru (WER) | 5.35% | token timestamps | gigaam-v3-e2e-rnnt.md |
gigaam-v3-e2e-ctc |
221M | ru | 272 MB | FLEURS ru (WER) | 5.53% | token timestamps | gigaam-v3-e2e-ctc.md |
gigaam-v3-rnnt |
222M | ru | 273 MB | FLEURS ru (WER) | 8.07% | token timestamps | gigaam-v3-rnnt.md |
gigaam-v3-ctc |
221M | ru | 272 MB | FLEURS ru (WER) | 8.42% | token timestamps | gigaam-v3-ctc.md |
Pre-built GGUFs for every variant and quant are hosted under
handy-computer on Hugging Face;
each per-variant doc has direct download links.
GigaAM is trained for utterances up to about 25 seconds. Longer audio is encoded in overlapping windows of at most 25 s, and the encoder frames are stitched into one sequence for a single greedy decode. There is no practical length limit, and the encoder workspace does not grow with input length. Audio up to 25 s is encoded in one pass. See the input-length contract.
Pick a variant and run:
cmake -B build
cmake --build build
build/bin/transcribe-cli \
-m models/gigaam-v3-e2e-rnnt/gigaam-v3-e2e-rnnt-Q8_0.gguf \
samples/jfk.wavThe repo doesn't ship the GGUFs — pull them from the corresponding
handy-computer/<variant>-gguf repo on Hugging Face, or convert from
the upstream ai-sage/GigaAM-v3 checkpoint via the per-variant doc's
reproduction section.
All GigaAM-v3 variants support:
- Transcription of 16 kHz mono WAV input, Russian only.
- Token-level timestamps at the encoder frame rate (40 ms granularity).
What's not supported (consistent across the family): translation, real-time
streaming, VAD, speaker diarization, languages other than Russian.
Long-form input is windowed internally rather than through upstream's
transcribe_longform PyAnnote-VAD chunking. See the family doc for the full
runtime contract.