WORK / ABHYAS VOICE COACH
Abhyas Voice Coach
A real-time voice agent that interviews you and coaches your English - sub-second streaming replies, real interruption, and a coach that scores every answer without ever slowing the conversation.
ROLE
Sole builder
STACK
Python · FastAPI · asyncio · WebSockets · Sarvam STT / LLM / TTS · SQLite · vanilla JS
TIMELINE
2026
STATUS
Open source · MIT

INSIDE THE PRODUCT
THE PROBLEM
Mock-interview practice needs either another person or a chatbot with a voice bolted on. Neither tracks how you actually perform - filler words, tense errors, whether your answers have structure - and neither uses that history to decide what to ask next.
Abhyas is a hard systems-design interviewer, a warm HR panellist or a patient English tutor, chosen in the browser and changeable mid-session. It runs on your own machine, and your API key never leaves the Python process.
CONSTRAINTS
- -Latency - a spoken reply that takes three seconds feels broken
- -Real interruption - talking over it has to stop it mid-word
- -Text-to-speech is billed per character, so speech nobody hears is wasted money
- -Runs locally: no cloud backend, the key never reaches the browser
ARCHITECTURE
Two loops that share state but never share a deadline. The fast loop owns the microphone-to-speaker path and awaits nothing except speech recognition, the model and speech synthesis. Scoring, memory and database writes run on a slow loop, fired and forgotten.
- 01Fast loop - mic → STT + VAD (saaras:v4) → turn engine → streaming LLM → TTS (bulbul:v3) → jitter buffer → speaker
- 02Clause-level chunking and sockets pre-warmed at session start, for sub-second replies
- 03Barge-in state machine - stops mid-word, drops queued audio, keeps only what you actually heard
- 04Slow loop - a second model scores clarity, structure, depth and correctness, and updates your profile
- 05Personas as YAML - role, voice, VAD timing, tools and dials, hot-reloaded on save
- 06SQLite (WAL) - transcripts, scores, tasks and latency marks, all stored locally
DECISIONS
1.Nothing on the fast path waits for intelligence
Scoring, corrections and summarisation are create_task'd and forgotten while you're already hearing the reply. Adding more analysis therefore costs zero latency - the rule that keeps the conversation fast is structural, not a matter of tuning.
2.Remember only what was heard
When you interrupt, the history is truncated to the words that actually played. Otherwise the model believes it said things you never heard, and the next turn answers a conversation that didn't happen.
3.Pace speech synthesis to playback
A chunk only goes to TTS once the browser is close to needing it, and the browser drops silent microphone frames before upload. Interrupt the coach and the spend stops near what you heard, not at the end of the whole reply.
4.Backchannels don't interrupt
"mm", "yeah" and "haan" while it's talking are you nodding along, not an objection. Rejecting them - and rejoining a mid-sentence pause instead of splitting it into two answers - is what makes it feel like a person is listening.
RESULTS
<1 s
Spoken reply, streamed end to end
42
Tests, no key or network needed
3
Personas, hot-reloaded from YAML
what I'd do differently…
I'd add per-hop latency marks before the first feature, not after. Every tuning decision - silence duration, clause size, socket pre-warming - depended on knowing which hop the time was going to, and measuring is cheaper than guessing.
quick answers
Quick answers about Abhyas Voice Coach
- What is Abhyas Voice Coach?
- A real-time voice agent that interviews you and coaches your English - sub-second streaming replies, real interruption, and a coach that scores every answer without ever slowing the conversation.
- What is Abhyas Voice Coach built with?
- Abhyas Voice Coach is built with Python, FastAPI, asyncio, WebSockets, Sarvam STT / LLM / TTS, SQLite, vanilla JS.
- What was SK Rohan Parveag's role on Abhyas Voice Coach?
- Sole builder.
- What is the current status of Abhyas Voice Coach?
- Open source · MIT. Links: GitHub (https://github.com/DevRohan33/Abhyas-Voice-Coach).