Open source · Apache-2.0 · v1

Crele Nimbus A real-time audio decision model

Crele Nimbus answers yes/no questions about live audio in plain English, every 40 ms, about a tenth of a second after the moment. It also knows whether the user or someone else is speaking.

Crele Nimbus

Is there an open-source Jev model for audio?

Crele Nimbus answers Jev-style yes/no questions about live audio as it streams, with open weights under Apache-2.0. Jev reads text and does not take audio, so with Jev, sound has to become a transcript first.

Jev, on a transcript
# POST https://api.typesafe.ai/v1/systemone{  "model": "jev-latest",  "state": "Caller: sorry, can you say that again?",  "questions": {    "tv": {      "type": "noul",      "instructions": "Is a TV playing in the room?",      "criteria": {        "true": "A TV, radio or video is playing",        "false": "Only people in the room"      }    }  }}
Crele Nimbus, on the sound
# the same question, asked of the audio itselfsession.ask(    "tv", "Is a TV playing in the room?",    yes_means="A TV, radio or video is playing",    no_means="Only people in the room",) for update in session.push(mic_16k):    update.answers["tv"].answer   # yes, no or cant_tell    for event in update.events:   # started, stopped        ...
PropertyJev (TypeSafe)Crele Nimbus
ReadsText in state; no audio or videoLive audio, 16 kHz, pushed in any chunk size
Question typesnoul (yes/no), choice, scoreYes/no
Your meaningcriteria, true and false for a noulyes_means, no_means
AnswersA noul is a number from 0 to 1, per callYes, no or can't tell with the probability, every 40 ms, plus started and stopped events
Who is speakingWhatever the transcript saysBuilt in: the user, from a few seconds of their voice, and anyone else
RunsHosted, by TypeSafe and its providersOn your own machine, real time on a laptop CPU, Apache-2.0

How does Crele Nimbus tell the user from everyone else?

Crele Nimbus does personal voice activity detection: from a few seconds of the user's voice, it says when the user starts and stops talking, apart from anyone else in the room or on a TV.

Barge-in from the user only

Stop talking when the user interrupts, and keep going through the TV.

When the user stops talking

Reply when the user's voice stops, even while others keep talking.

Sounds around the call

Music, laughter, a siren: ask about them in your own words.

Someone joins

Notice another person or a TV voice, and adapt.

How fast is Crele Nimbus?

Crele Nimbus says yes about 0.2 s after a sound starts, and runs in real time on a laptop CPU.

Medians over the sounds it caught, on 500 real AudioSet clips.
Every 40 ms
An answer every 40 ms, delivered every 80 ms: 80 to 120 ms of audio after the moment, plus compute.
On a laptop CPU
Keeps up with live audio on an Apple M4 Pro CPU with 8 and with 32 questions.
Speech
A median of 0.21 s from the start of speech to a yes, with 97% of 181 speech onsets caught.
In your own words
Reworded questions it never trained on scored 0.892 against 0.911 for its own wording (mean AUROC, 40 sounds, the same 500 clips).
In a silent room
The highest resting answer in a silent room was 0.03 across twelve sound questions.
Size
About 97M parameters on the audio, plus a 0.6B text encoder used once per question.

How do I run Crele Nimbus?

Install the package, stream audio into a session and read the answers, or try it on your microphone in the playground.

  1. Step 1

    Install the package

    Python 3.10 or newer, PyTorch 2.4 or newer. First use downloads 1.6 GB: the weights and the text encoder that reads the questions.

    Terminal
    pip install git+https://github.com/Crele-AI/nimbus
  2. Step 2

    Ask questions and stream audio

    Push 16 kHz mono audio in any chunk size. A few seconds of the user's voice turn on the user signal.

    Python
    from crele_nimbus import Nimbus model = Nimbus.from_pretrained("crele/nimbus-v1")session = model.session()session.ask("music", "Is music playing?")session.enroll(user_voice_16k)        # a few seconds of the user for update in session.push(pcm_16k):  # float32 mono, any length    for event in update.events:        if event.question == "user" and event.kind == "started":            agent.stop()              # the user interrupted
  3. Step 3

    Try it on your microphone

    One page on your own machine: press the microphone or play a file, and watch a row per question answer.

    Terminal
    python -m crele_nimbus.playground --open
The playground on a laptop microphone: a row per question, the user's own voice first, then music.

What are Crele Nimbus's limits?

Crele Nimbus takes English questions, one user voice per session, and 16 kHz mono audio.

English questions
Questions are asked in English.
One user voice
One reference voice per session. The user signal answers can't tell until it has heard a few seconds of it.
The first second
Every question answers can't tell for the first second of a stream, while the model gathers context.
16 kHz mono
Resample anything else to 16 kHz first. Phone audio is untested.
First use
Downloads 1.6 GB into the Hugging Face cache: the weights and the text encoder that reads the questions.
One thread
A session is called from one thread; the playground shows the pattern for async code.

Questions

Is there a local Jev model for audio?
TypeSafe offers Jev as a hosted API, and Jev reads text rather than audio. Crele Nimbus answers Jev-style yes/no questions about live audio on your own machine, under Apache-2.0.
Can Jev process audio?
No. TypeSafe's documentation says Jev does not accept audio or video and asks you to turn them into text first; Crele Nimbus answers yes/no questions about the audio itself.
What is personal voice activity detection?
Voice activity detection that follows one known person: it says when that person is talking, not when anyone is. Crele Nimbus does it live from a few seconds of the user's voice, beside a second signal for everyone else.
How is Crele Nimbus different from voice activity detection?
A voice activity detector answers one question: is anyone speaking? Crele Nimbus answers whether the user is speaking, whether someone else is, and any yes/no question you ask about the other sounds.
How do I make a voice agent ignore the TV?
Stop the agent on the user's voice, not on any voice. With Crele Nimbus, act on the user signal's started event; a TV or another person shows up on the other signal instead.
Can Crele Nimbus run on a CPU?
Yes. It keeps up with live audio on an Apple M4 Pro laptop CPU with 8 and with 32 questions.
How do I detect if music is playing in real time?
Ask Crele Nimbus "Is music playing?" and read its answer every 40 ms, or act on the started and stopped events. Any other sound works the same way, asked in plain English.
Is Crele Nimbus free for commercial use?
Yes. The code and the weights are Apache-2.0.
How many questions can Crele Nimbus answer at once?
Up to 32 per session. The audio is heard once and every question reads from it, and it keeps up with live audio on a laptop CPU with 32 questions.
Does my audio go to Crele?
No. Crele Nimbus runs on your own machine, and the audio never leaves it.
What languages does Crele Nimbus understand?
Its questions are in English.
What is Crele Nimbus built on?
A streaming audio encoder with the structure of Dasheng-Base, the CAM++ speaker model for the two voice signals, and Qwen3-Embedding-0.6B, which reads each question once. It was trained on AudioSet and AudioSet-Strong, LibriSpeech, MUSAN and FSD50K.
Is there a hosted Crele Nimbus API?
Not yet. If you want Crele Nimbus as a hosted stream, say so on the API waitlist.