Grai · Features
The full inventory, with the measured figure next to each item. And, at the end, what does not exist yet.
Partial text as you say the words, with state kept between chunks. It does not re-transcribe from scratch on every chunk. Partial text arrives with the delay of the 1120 ms chunk (~1.1 s); after you stop talking, the flush takes 92 ms.
92 ms p50 after you stop · 13.8× real time (M3 Max GPU)The pitch slope over the last 600 ms decides whether you have finished. A firm fall: yes. Flat or rising: no. At a 560 ms wait, pauses cut wrongly (TOR, lower is better) drop from 69.4% to 52.0% — measured on CANDOR, in English, 80 clips, 98 pauses, offline replay.
TOR 69.4% → 52.0% · 0.42 ms per decision (M3 Max)“Mhm”, “da” (yes), “aha” don't stop it. It tells four cases apart: short or long, acknowledgement or taking the turn.
You stop mid-sentence and carry on — the continuation is not treated as a new question. If it had already started answering, that answer is cancelled.
2.5 s windowWhen you dictate numbers, a code or an address, it waits longer — so it doesn't cut you off between “șapte” and “sute” (seven… hundred).
The threshold adjusts to how fast you speak, measured in syllables per second.
Removes its own voice from the microphone, so the microphone can stay open on speakers, not only on headphones.
15.7 dB ERLE, measured on signal; not yet validated on real speakersPace, pitch, energy, hesitation, whisper — all normalized against your own baseline, not in absolute terms.
1.9 ms per turn“Douăzeci și trei de mii patru sute optzeci” (twenty-three thousand four hundred eighty) becomes 23480 before it reaches the model. Times, dates, amounts, codes.
98 testsRomanian and Russian, switched during the conversation, without reconnecting. Speech recognition, speech synthesis and instructions change together.
Starts speaking from the first sentence, not after the whole answer has been generated. The first chunk is deliberately kept short.
305 ms p50 to the first synthesized sound (n=17)You talk over it and it goes quiet. Everything in the queue is dropped.
1–3 msThe history is cut at the number of milliseconds that actually came out of the speaker, not at what was generated. Otherwise it would say “as I already told you” about something you never heard.
The same voice speaks both languages. One voice per agent, chosen in the configuration.
23480 becomes “douăzeci și trei de mii patru sute optzeci”; 069123456 is read digit by digit; 09:00 becomes “ora nouă” (nine o'clock). Three different rules, chosen by context.
Fixed gain plus a soft limiter, calibrated once offline. No volume pumping from one sentence to the next.
sample-to-sample jump 1.11 → 0.118Formatting tags and typographic symbols that the engine would read out literally or reject with an error are removed first.
Proper terms, company names and foreign words, pronounced correctly, from a list per agent.
Says a short bridge phrase, sends the job to another thread and carries on. It stays interruptible while the tool is working.
If the tool runs past the conversation, the result is announced when it arrives — even if you have closed the tab in the meantime.
It schedules a follow-up — “I'll tell you in ten minutes” — and it fires even if nobody is connected.
Remembers people and what was discussed, with revision over time: “is coming on Friday” becomes “came on Friday” once Friday has passed.
104 testsDeletion works on disk, not just in the interface.
Placed in the system prompt so that it lands in the provider's prompt cache — so knowledge makes a request cheaper, not more expensive.
You close the tab; the conversation continues where it left off.
Not just a disconnect — a full restart of the process, too.
Voice, language, instructions, tools, knowledge base — configuration, not a separate process. Dozens of agents on the same process.
Each with its own key. One client can neither see nor touch another client's agents.
Limits per client and per address, with your position in the queue instead of a flat refusal.
57 testsA single script on the client's page. No dependencies, isolated from the host page's styles.
27.6 KBCapacity moved past the ceiling of 2 simultaneous sessions once the speech recognizer lease moved from the connection to the turn — the ceiling did not depend on hardware, it was a resource held busy for nothing. Now: 12 simultaneous connections measured. Latency grows with them: ASR p95 165 ms at 1 session, 880 ms at 4, 2.4 s at 6.
We do on-premise deployments, on the client's own server. Tell us what you need.