Low-latency speech models.

Streaming Speech-To-Text and Text-To-Speech that run natively in the Surogate engine, on a CPU or a GPU.

Jackrabbit ASR
Jackrabbit Streaming ASR
Amami TTS

Surogate Speech is our line of small, open speech models for agents: a model family per job, Jackrabbit to listen and Amami to speak, shipped language by language.

Weights under CC-BY-NC-4.0 for research and non-commercial use; commercial licences through Invergent.

Amami TTS: realtime voices on two CPU cores.

A 110M-parameter voice that runs in real time on two CPU cores, no GPU. It puts the stress where native speakers put it, says the English words Romanians use at work (meeting, call, update, backup) the English way, reads numbers, dates and amounts in words, and dictates codes, IBANs and phone numbers one character at a time from recorded clips, so a voice agent never reads a code wrong.

What to hear

Both sides of this call are Amami.

Seven lines, two voices, one bank support call: English words, an SMS code dictated from recorded clips, an amount in lei and bani. Generated on a laptop CPU with 2 threads, first audio in about 40 ms per line.

  1. AgentBună ziua, ați sunat la suportul Băncii Livada. Cu ce vă pot ajuta?
  2. CallerBună! Nu mai pot să intru în app de la ultimul update.
  3. AgentVă trimit acum un cod prin SMS. Vă rog să mi-l citiți.
  4. CallerCodul este 7XK-492-QPA.
  5. AgentMulțumesc, v-am verificat. Am resetat accesul, iar plata de 249,90 lei către Raftul apare ca finalizată.
  6. CallerSuper, mersi! Mai am un call la zece, așa că închid.
  7. AgentCu plăcere! O zi frumoasă și spor la meeting!
2.83% WER

word error rate on a set of ordinary Romanian sentences, transcribed back by the Surogate Romanian speech recogniser

Model card

Jackrabbit ASR writes it down.

A 116M-parameter recogniser that writes cased, punctuated text, from a file or live over HTTP or WebSocket. Below, real people reading real sentences.

Live, as you speak

Press play. Words appear as the recording reaches them.

Partials: Jackrabbit Streaming run over this recording, shown at the moment of audio it had heard. Final: from the published evaluation run, re-read with full context and a 4-gram LM after the pause; words it changed are underlined.

Same recording, two recognisers 9 to 13 times bigger

What was saidPorțiuni mari mai spre nord sunt destul de puțin populate, iar unele sunt aproape sălbăticie nepopulată.

Jackrabbit · 116M parametersexact

Porțiuni mari, mai spre nord, sunt destul de puțin populate, iar unele sunt aproape sălbăticie nepopulată.

A 1B-parameter recogniser2 wrong words

Porțiuni mari, mai spre nou, sunt destul de puțin populate, iar unele sunt aproape sălbaticie nepopulată.

A 1.55B-parameter recogniser5 wrong words

Porțiuni mari, mai spre nori, sunt destul de puțin populate, iar unele se aproape să îl pătricie nepopulată.

Clips picked to show the difference. Over all 883 FLEURS Romanian test clips the word error rate is 5.69% for Jackrabbit (CTC + 4-gram), 5.95% for the 1B model and 8.42% for the 1.55B model, each run through the same harness; every transcript is in the evaluation dataset. Recordings: FLEURS by Google, CC BY 4.0.

Speech recognition · Jackrabbit 110M

Jackrabbit ASR

Writes cased, punctuated text from recordings. A 116M-parameter model that runs comfortably on a CPU, with no Python in the serving path.

5.69% WER
word error rate on the FLEURS Romanian test, CTC decoding with a 4-gram language model, Open ASR Leaderboard runner
Model card
Live speech recognition · Jackrabbit 110M Streaming

Jackrabbit Streaming ASR

Shows words as you speak, then writes a final, punctuated sentence when you pause. Live audio over HTTP or WebSocket.

0.72 s to text
from the moment you stop talking to the final sentence, on one RTX 5090, including 640 ms to detect the pause
Model card

One container, one HTTP API.

From the model cards. Amami runs on CPU only and needs Surogate 1.5.5 or later; drop --gpus all to run Jackrabbit on a CPU too.

Speak with Amamitext to speech
hf download surogate/amami-110m-ro --local-dir amami-110m-ro
SUROGATE_TTS_PYTHON=/path/to/venv/bin/python surogate serve --tts amami-110m-ro --port 8080

curl localhost:8080/v1/audio/speech -H "Content-Type: application/json" \
  -d '{"input": "Bună ziua! Codul de confirmare este 4B7X9.", "voice": "male"}' -o out.wav
Listen with Jackrabbitspeech to text
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

curl http://localhost:8000/v1/audio/transcriptions -F [email protected]

Run speech on your own servers.

Jackrabbit listens and Amami speaks, from one container, on a CPU or a GPU.