---
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.