Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
language:
|
| 4 |
+
- ru
|
| 5 |
+
pipeline_tag: automatic-speech-recognition
|
| 6 |
+
tags:
|
| 7 |
+
- audio
|
| 8 |
+
- speech-recognition
|
| 9 |
+
- transcription
|
| 10 |
+
- russian
|
| 11 |
+
- ggml
|
| 12 |
+
- gguf
|
| 13 |
+
- gigaam
|
| 14 |
+
- conformer
|
| 15 |
+
- rnn-t
|
| 16 |
+
- ctc
|
| 17 |
+
library_name: ggml
|
| 18 |
+
base_model: ai-sage/GigaAM-v3
|
| 19 |
+
---
|
| 20 |
+
|
| 21 |
+
# GigaAM-v3 — GGUF (ggml conversions)
|
| 22 |
+
|
| 23 |
+
GGUF conversions of [`ai-sage/GigaAM-v3`](https://huggingface.co/ai-sage/GigaAM-v3)
|
| 24 |
+
for use with the `gigaam` backend in
|
| 25 |
+
**[CrispStrobe/CrispASR](https://github.com/CrispStrobe/CrispASR)**.
|
| 26 |
+
|
| 27 |
+
GigaAM-v3 is a 220 M-parameter Conformer foundation model for **Russian** ASR,
|
| 28 |
+
pretrained with a HuBERT-CTC objective on ~700 K hours of Russian speech. The
|
| 29 |
+
upstream repo ships five checkpoints as git revisions; the four ASR ones are
|
| 30 |
+
converted here (the `ssl` encoder has no head and produces no transcript).
|
| 31 |
+
|
| 32 |
+
| File | Size | Head | Vocabulary | Output |
|
| 33 |
+
|---|---|---|---|---|
|
| 34 |
+
| `gigaam-v3-e2e-rnnt-{f16,q8_0,q4_k}.gguf` | 452 / 249 / 154 MB | RNN-T | SentencePiece 1024 | punctuation + casing + ITN — **best WER (8.4 % avg)** |
|
| 35 |
+
| `gigaam-v3-e2e-ctc-{f16,q8_0,q4_k}.gguf` | 449 / 247 / 152 MB | CTC | SentencePiece 256 | punctuation + casing + ITN, faster decode |
|
| 36 |
+
| `gigaam-v3-rnnt-{f16,q8_0,q4_k}.gguf` | 449 / 246 / 152 MB | RNN-T | 33 Cyrillic chars | lowercase, no punctuation |
|
| 37 |
+
| `gigaam-v3-ctc-{f16,q8_0,q4_k}.gguf` | 449 / 246 / 151 MB | CTC | 33 Cyrillic chars | lowercase, no punctuation |
|
| 38 |
+
|
| 39 |
+
## Which one to pick
|
| 40 |
+
|
| 41 |
+
**`gigaam-v3-e2e-rnnt-q8_0.gguf`** unless you have a reason not to — it is the
|
| 42 |
+
lowest-WER variant, emits punctuation and casing, and its transcript is
|
| 43 |
+
identical to the PyTorch reference.
|
| 44 |
+
|
| 45 |
+
## Usage
|
| 46 |
+
|
| 47 |
+
```bash
|
| 48 |
+
crispasr --backend gigaam -m gigaam-v3-e2e-rnnt-q8_0.gguf -f audio.wav
|
| 49 |
+
# or let the registry fetch it:
|
| 50 |
+
crispasr --backend gigaam -m auto --auto-download -f audio.wav
|
| 51 |
+
```
|
| 52 |
+
|
| 53 |
+
Audio is 16 kHz mono. Long inputs are sliced by the CLI's VAD/chunking; the
|
| 54 |
+
model itself has a ~25 s practical window (full attention, O(T²)).
|
| 55 |
+
|
| 56 |
+
## Verification
|
| 57 |
+
|
| 58 |
+
Every file was checked against a per-stage PyTorch reference dumped from the
|
| 59 |
+
upstream `modeling_gigaam.py` (`crispasr-diff gigaam <model> <ref> <wav>`), on
|
| 60 |
+
GigaAM's own `example.wav`:
|
| 61 |
+
|
| 62 |
+
| variant | mel | encoder (cos) | transcript vs PyTorch |
|
| 63 |
+
|---|---|---|---|
|
| 64 |
+
| f16 (all four) | 1.000000 | **1.000000** | **byte-identical** |
|
| 65 |
+
| q8_0 (all four) | 1.000000 | 0.9974 – 0.9988 | **byte-identical** |
|
| 66 |
+
| q4_k `ctc`, `rnnt` | 1.000000 | 0.95 – 0.99 | **byte-identical** |
|
| 67 |
+
| q4_k `e2e_ctc` | 1.000000 | 0.982 | one spurious trailing `,` |
|
| 68 |
+
| q4_k `e2e_rnnt` | 1.000000 | 0.987 | content identical; 4 words lose their capital letter |
|
| 69 |
+
|
| 70 |
+
So: **q8_0 is the safe quant**; q4_k is fine for the charwise models and costs
|
| 71 |
+
a little casing/punctuation fidelity on the two SentencePiece ones.
|
| 72 |
+
|
| 73 |
+
In every quant the mel filterbank, Hann window, `encoder.pre.*` subsampling
|
| 74 |
+
convs and the decode head (`joint.*` / `decoder.*` / `head.ctc.*`) are kept at
|
| 75 |
+
source precision — the mel is un-normalized log-mel, so subsampling rounding
|
| 76 |
+
error would otherwise cascade through all 16 conformer blocks, and the head is
|
| 77 |
+
a blank-vs-token argmax where a flipped decision derails the greedy decode.
|
| 78 |
+
|
| 79 |
+
## Conversion
|
| 80 |
+
|
| 81 |
+
```bash
|
| 82 |
+
python models/convert-gigaam-to-gguf.py \
|
| 83 |
+
--model ai-sage/GigaAM-v3 --revision e2e_rnnt \
|
| 84 |
+
--output gigaam-v3-e2e-rnnt-f16.gguf
|
| 85 |
+
./build/bin/crispasr-quantize gigaam-v3-e2e-rnnt-f16.gguf \
|
| 86 |
+
gigaam-v3-e2e-rnnt-q8_0.gguf q8_0
|
| 87 |
+
```
|
| 88 |
+
|
| 89 |
+
## License
|
| 90 |
+
|
| 91 |
+
MIT, inherited from [`ai-sage/GigaAM-v3`](https://huggingface.co/ai-sage/GigaAM-v3).
|
| 92 |
+
Please cite the upstream model when you use these weights.
|