SraVaani-1.0 GGUF
GGUF conversions of ARTPARK-IISc/SraVaani-1.0, an Indic multilingual speech recognition model, for CPU inference with parakeet.cpp.
No Python, no PyTorch, no NeMo, no ONNX Runtime. One file and one binary.
Files
| file | size | notes |
|---|---|---|
sravaani-q8_0.gguf |
660 MB | recommended. Byte-identical output to f16 in testing |
sravaani-f16.gguf |
1016 MB | full precision relative to the source weights |
sravaani-q4_k.gguf |
471 MB | smallest; shows occasional orthographic variants |
Usage
Get a parakeet-cli binary from parakeet.cpp releases, then:
parakeet-cli transcribe --model sravaani-q8_0.gguf --input clip.wav --decoder tdt --threads 4
Three things matter:
--decoder tdtis required. This is a token-and-duration transducer, not CTC.Do not pass
--lang. The model detects language automatically and outputs native script. It has no language token.Input must be 16 kHz mono 16-bit PCM WAV. parakeet.cpp reads nothing else. Convert first:
ffmpeg -i in.any -ac 1 -ar 16000 -c:a pcm_s16le out.wav
Model
| architecture | NeMo FastConformer-TDT (transducer) |
| parameters | 443.62M |
| encoder | 1024 d_model, 17 layers, 8 heads |
| subsampling | dw_striding x8, 256 channels |
| features | 128 mel, n_fft 512, win 400, hop 160, 16 kHz |
| predictor | 1 LSTM layer, 640 hidden |
| joint | 640 hidden, 5006 outputs (5000 vocab + blank + 5 durations) |
| tokenizer | SentencePiece, 5000 pieces, embedded in the GGUF |
Benchmark
Intel i7 laptop, CPU only, single Hindi utterance, best of 3 runs.
| model | size | 1 thr | 2 thr | 4 thr | 8 thr | WER vs f16 |
|---|---|---|---|---|---|---|
| f16 | 1016 MB | 3.04 s | 2.07 s | 1.30 s | 1.20 s | 0.000 |
| q8_0 | 660 MB | 2.35 s | 1.86 s | 1.49 s | 1.33 s | 0.000 |
| q4_k | 471 MB | 2.52 s | 1.98 s | 1.51 s | 1.36 s | 0.062 |
Roughly 6 to 7x faster than realtime. Returns collapse past 4 threads.
q4_k's single error was यह where f16 gave ये, both valid Hindi for "this", so the 0.062 overstates the real gap on this sample.
How these were made
SraVaani ships only a TorchScript graph, with no .nemo checkpoint, so the conversion tool had nothing to read. The checkpoint was reconstructed:
- Weights extracted from the TorchScript module and remapped to NeMo names.
- Architecture hyperparameters recovered from tensor shapes, with
xscalingdetermined empirically by measuring the positional encoding's output gain. - Validated by a strict
load_state_dictagainst a freshly builtEncDecRNNTBPEModel: 705 of 705 tensors, zero missing, zero unexpected, zero shape mismatches. - Verified by an exact transcript match against the original implementation.
- Converted with parakeet.cpp's
convert_parakeet_to_gguf.py.
Limitations
- Accuracy testing here is limited to Hindi. Tamil and Telugu in particular are untested in these conversions and are known weaker languages for this model family.
- The base model has a documented weakness on overlapping speakers and crosstalk.
- WER figures compare quantised output against f16 output, not against ground truth. They measure quantisation damage, not accuracy.
Credit
All model weights and training are the work of ARTPARK at IISc. This repository contains format conversions only, released under the same MIT License as the original.
- Downloads last month
- 72
8-bit
16-bit
Model tree for Henil1/Sravaani-1.0-GGUF
Base model
ARTPARK-IISc/SraVaani-1.0