--- license: cc-by-nc-4.0 language: - ro library_name: nemo pipeline_tag: automatic-speech-recognition base_model: nvidia/parakeet-tdt_ctc-110m tags: - surogate - surogate-speech - jackrabbit - fastconformer - cache-aware-streaming - streaming - romanian model-index: - name: jackrabbit-110m-ro-streaming results: - task: type: automatic-speech-recognition dataset: name: FLEURS ro_ro test (live 32 ms packets, leaderboard references and normalizer) type: google/fleurs config: ro_ro split: test metrics: - {type: wer, value: 7.03, name: WER, streaming finals (CTC + 4-gram)} ---

Surogate Speech | Training and Serving Engine | Toolkit and Evals |
License: CC-BY-NC-4.0 | Authors: Invergent

# Jackrabbit 110M Streaming (Romanian) **Jackrabbit Streaming is the live member of Surogate's speech recognition family. This is the Romanian model:** the same 116M-parameter FastConformer as [Jackrabbit 110M](https://huggingface.co/surogate/jackrabbit-110m-ro), converted to cache-aware streaming. It shows words as you speak with about one second of lookahead, then writes a final, cased and punctuated sentence when you pause. It is served fastest by the [**surogate** engine](https://github.com/invergent-ai/surogate), which streams audio over HTTP or WebSocket with no Python in the serving path. Every number on this page was measured, and the harnesses are named, so you can reproduce them. ## Accuracy Word error rate in % on the FLEURS Romanian test (883 clips), each clip fed as live 32 ms audio packets, scored against the Open ASR Leaderboard's references with its multilingual normalizer, on one RTX 5090: | | WER | |---|---:| | **Streaming finals** (full-context re-read + 4-gram LM after each pause) | **7.03** | | Live partials only (what the leaderboard's offline runner sees) | 10.67 | | Offline [Jackrabbit 110M](https://huggingface.co/surogate/jackrabbit-110m-ro), TDT greedy, for reference | 7.56 | | Offline Jackrabbit 110M, CTC + 4-gram, for reference | 5.69 | Finals re-read each utterance with full attention after a 640 ms pause and decode the CTC head with the bundled 4-gram language model (beam 64, α 0.55, β 1.75). Live partials come from the TDT head as you speak. Transcripts for every clip are in [surogate-speech-evals](https://huggingface.co/datasets/surogate/surogate-speech-evals). ## Latency The final sentence arrives about **0.72 s after you stop talking** on an RTX 5090: 640 ms of silence to decide you have paused, then the finalize step. | Finalize step after the pause | Median | p95 | |---|---:|---:| | RTX 5090 | 84 ms | 182 ms | Algorithmic lookahead is about 1.04 s (attention context [70, 13] at 80 ms per frame). ## Running it ### With surogate (recommended) Needs surogate 1.5.4 or newer. ```bash docker pull ghcr.io/invergent-ai/surogate:1.5.4 docker run --gpus all -p 8000:8000 ghcr.io/invergent-ai/surogate:1.5.4 \ serve --stt surogate/jackrabbit-110m-ro-streaming --host 0.0.0.0 --port 8000 ``` Files go through `/v1/audio/transcriptions`, live audio through `/v1/audio/streams` (HTTP or WebSocket): ```bash surogate serve --stt surogate/jackrabbit-110m-ro-streaming ``` Or talk to it from your microphone with [surogate-speech](https://github.com/invergent-ai/surogate-speech): ```bash pip install "surogate-speech[asr] @ git+https://github.com/invergent-ai/surogate-speech" surogate-speech listen ``` ## Files | File | Size | What it is | |---|---:|---| | `jackrabbit-110m-ro-streaming.nemo` | 467 MB | The model (NeMo 3.0) | | `lm-4gram-ro.nemo` | 2.07 GB | 4-gram language model for the finals, in NeMo's GPU n-gram format | ## Details - Cache-aware FastConformer encoder, 17 layers, width 512, chunked limited attention [70, 13], causal convolutions - TDT decoder for partials; CTC decoder plus language model for finals - 2,048-piece SentencePiece vocabulary with case and punctuation - 16 kHz mono PCM input; pause detection with Silero VAD ## Limitations Romanian only. Finals depend on pause detection: long unbroken speech is finalized later, and very short pauses can split a sentence. Accuracy was measured on read and parliamentary speech; telephone audio, heavy noise and overlapping speakers are not measured here. The model transcribes; it does not identify speakers or decide when a voice agent should answer. ## License CC-BY-NC-4.0: free for research and other non-commercial use; for commercial use, contact [Invergent](https://invergent.ai). The base model, [nvidia/parakeet-tdt_ctc-110m](https://huggingface.co/nvidia/parakeet-tdt_ctc-110m), is by NVIDIA under CC-BY-4.0.