Voice AI that listens as fast as you speak.

Kural — Tamil for voice — turns a raw microphone stream into understanding — voice activity detection, streaming speech recognition and a local language model, wired end to end over a single WebSocket.

Speech probability 0.00
Listening

16 kHzPCM16 mono capture
32 msVAD frame size
200 msPre-speech buffer
300 msSilence to endpoint
Pipeline

From waveform to answer, one stage at a time.

Every stage is small, observable and swappable.

  1. 01

    Capture

    An AudioWorklet resamples the mic to 16 kHz PCM16 and streams it over WebSocket.

  2. 02

    Detect

    Silero VAD scores every 32 ms frame; the endpointer decides when speech starts and ends.

  3. 03

    Transcribe

    Streaming NeMo ASR emits partial text live, with Whisper.cpp for batch utterances.

  4. 04

    Reason

    A compact LLM served by llama.cpp turns the transcript into a concise, speakable reply.

  5. 05

    Speak soon

    Speech synthesis closes the loop for a fully spoken conversation.

Why Kural

Built for conversations, not file uploads.

Streaming first

Audio flows in continuously and text comes back as you speak — no record-then-upload round trip.

Runs on your hardware

Native whisper.cpp, NeMo and llama.cpp servers on CPU. Your audio never has to leave the machine.

Smart endpointing

Hysteresis thresholds, minimum speech and silence windows keep turns crisp without clipping words.

Modular by design

Framer, VAD, endpointer, buffer, transcriber and reasoner are independent modules you can swap.

Stack

Open models. Native runtimes.

Start talking to your machine.

Clone the repo, start the servers, press the mic.

Get the code