Make your voice agent answer at human speed.
Rabel Labs builds AI that cuts the wait before a voice agent answers. Four models, one for each step of the answer, all running beside the speech-to-text, reply model and voice you already use.
The caller says
Did anything come in from the landlord this morning?
Without Bell
1.5 s
With Bell
500 ms
Bell
Hear the difference.
The same conversation twice: as a voice agent answers today, and with Bell. Listen for the pause after the caller stops.
Without Bell
1.5 s
With Bell
500 ms
Each model starts one step of the answer before the caller has finished.
An answer has four steps: hearing the words, calling a tool, writing the reply, speaking it. Whistle, Hum, Bell and Sing each cut the wait at one step, beside the speech-to-text, reply model and voice that do the work. Use one or all four.
-
Whistle
Gets your agent the words before the transcript has them.
480 ms sooner to each word, on the words Whistle has firstGet Whistle -
Hum
Starts your agent’s tool calls while the caller is still asking.
300 ms saved a turn on the tool callGet Hum -
Bell
Gets your agent’s reply written while the caller is still talking.
365 ms saved a turn on the replyGet Bell -
Sing
Gets your agent talking the moment its first words are ready.
100 ms sooner to the first word, when Sing is ready firstGet Sing
Whistle
Whistle gets your agent the words sooner.
Whistle hands your agent the caller’s words while the speech-to-text is still printing them, so everything the agent does next starts sooner. It runs beside the speech-to-text you already use.
Measured
480 ms
sooner to each word, on the words Whistle has first.
Hum v2
Hum gets your agent’s tool calls done sooner.
When an answer needs a tool call, a lookup in your systems, Hum starts it while the caller is still speaking, so the answer is ready sooner. Your tools and data stay where they are.
Measured
300 ms
saved a turn on the tool call.
Bell v2
Bell gets your agent’s reply ready sooner.
Bell lets your reply model start writing while the caller is still talking, so the agent answers the way a person does. It runs beside the reply model you already use.
Measured
365 ms
saved a turn on the reply.
Sing
Sing gets your agent talking sooner.
Sing starts the agent’s voice on the first words of the reply instead of waiting for the whole of it, so the first word comes sooner. It runs beside the voice you already use.
Measured
100 ms
sooner to the first word, when Sing is ready first.
Rabel APIBeta
Add Bell to the voice agent you already run.
Bell takes the words from your speech-to-text. Sign up with your email for an API key and 60 free minutes.
const bell = new WebSocket("wss://api.rabellabs.com/v1/conversation");
bell.onopen = () =>
bell.send(JSON.stringify({ key: process.env.RABEL_API_KEY }));
// your speech-to-text's words so far, each time it has new ones
stt.on("words", (text) =>
bell.send(JSON.stringify({ type: "heard", text })));
// its final words, when it ends the turn
stt.on("endOfTurn", (text) =>
bell.send(JSON.stringify({ type: "end_of_turn", text })));
bell.onmessage = (e) => {
const m = JSON.parse(e.data);
if (m.type === "ready") stt.start();
// start your reply on Bell's guess
if (m.type === "guess") reply.start(m.text);
// the guess that matched, or null
if (m.type === "end_of_turn") reply.keep(m.guess_id);
};
URL = "wss://api.rabellabs.com/v1/conversation"
async with websockets.connect(URL) as bell:
await bell.send(json.dumps({"key": os.environ["RABEL_API_KEY"]}))
# your speech-to-text's words so far, each time it has new ones
async def on_words(text):
await bell.send(json.dumps({"type": "heard", "text": text}))
# its final words, when it ends the turn
async def on_end_of_turn(text):
await bell.send(json.dumps({"type": "end_of_turn", "text": text}))
async for msg in bell:
m = json.loads(msg)
if m["type"] == "ready":
stt.start(on_words, on_end_of_turn)
elif m["type"] == "guess":
reply.start(m["text"]) # start your reply on Bell's guess
elif m["type"] == "end_of_turn":
reply.keep(m["guess_id"]) # the guess that matched, or None
Free to start
60 min
free with every account, then $0.005 a minute.
Works with the stack you already run.
Rabel APIBeta
Bell, at $0.005 a minute, billed by the second while a conversation is open. Every account starts with 60 free minutes.
Contact us
Leave your email and we’ll set you up.
Thanks. We’ll be in touch.