Views
No views yet
e2e_rnnt — Sber's SOTA Russian ASR model (220M parameters, Conformer + RNN-T with end-to-end punctuation and capitalization).1from transformers import AutoModel
2import torch
3model = AutoModel.from_pretrained("ai-sage/GigaAM-v3", revision="e2e_rnnt", trust_remote_code=True)
4model.to_onnx(dir_path="onnx", dtype=torch.float16)
5# then:
6import openvino as ov
7for f in ["encoder", "decoder", "joint"]:
8 m = ov.convert_model(f"onnx/v3_e2e_rnnt_{f}.onnx")
9 ov.save_model(m, f"v3_e2e_rnnt_{f}.xml")| File | Purpose | Size |
|---|---|---|
v3_e2e_rnnt_encoder.xml/.bin | Conformer encoder (main cost) | ~425 MB FP16 |
v3_e2e_rnnt_decoder.xml/.bin | RNN-T decoder (prediction network) | ~2 MB |
v3_e2e_rnnt_joint.xml/.bin | Joint network | ~1.3 MB |
tokenizer.model | SentencePiece vocabulary (1024 subwords) | 250 KB |
config.json | Original model config (for reference) | 2 KB |
| Device | Encoder | Decoder | Joint | Usable? |
|---|---|---|---|---|
| CPU | ✅ | ✅ | ✅ | Yes (~34× RTFx on 10 s chunk) |
| GPU.0 (Arc Xe2 iGPU) | ✅ | ✅ | ✅ | Yes (~520× RTFx on encoder alone) |
| NPU | ❌ (dynamic shapes) | ✅ | ❌ (dynamic shapes) | Partial only |
9223372036854775807). A re-export with static reshape at 10 s chunks would likely unlock NPU.1import openvino as ov
2core = ov.Core()
3encoder = core.compile_model("v3_e2e_rnnt_encoder.xml", "GPU.0")
4decoder = core.compile_model("v3_e2e_rnnt_decoder.xml", "GPU.0")
5joint = core.compile_model("v3_e2e_rnnt_joint.xml", "GPU.0")
6
7# Preprocess: audio 16 kHz mono -> log-mel (64 bins, 20 ms win, 10 ms hop)
8# Encoder: features -> encoder outputs
9# Decoder + Joint: RNN-T greedy decode loop -> token IDs
10# SentencePieceProcessor(tokenizer.model).decode(ids) -> text