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 | Decoder | Output | Params | Q8_0 size | WER (Q8_0) | Doc |
|---|---|---|---|---|---|---|
gigaam-v3-e2e-rnnt |
RNN-T | cased + punctuated | ~180M | 261 MB | 5.36% | gigaam-v3-e2e-rnnt.md |
gigaam-v3-e2e-ctc |
CTC | cased + punctuated | ~180M | 260 MB | 5.50% | gigaam-v3-e2e-ctc.md |
gigaam-v3-rnnt |
RNN-T | lowercased, no-punctuation | ~180M | 260 MB | 8.08% | gigaam-v3-rnnt.md |
gigaam-v3-ctc |
CTC | lowercased, no-punctuation | ~180M | 259 MB | 8.40% | 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
accepted, but the library logs a WARN and accuracy may degrade past that
window — it is not rejected (upstream GigaAM rejects outright; transcribe.cpp
leaves the choice to you). Segment long recordings (e.g. with VAD) for best
results. 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 beyond 25 seconds per utterance (upstream
transcribe_longform PyAnnote-VAD chunking is intentionally not
ported). See the family doc for the full runtime contract.