Skip to main content
by the end you’ll have a voice agent you can talk to, that replies out loud in natural hinglish using rumik. we’ll build it with livekit agents, which gives you rooms, web and mobile SDKs, and phone calls out of the box.

what you’ll build

a real-time loop running inside a livekit room: you speak, the agent transcribes you, an LLM writes a reply, and silk speaks it back.
silk is the voice. you can swap the STT and LLM for any provider livekit supports.

before you start

you need:
you can swap deepgram or openai for any STT / LLM that livekit supports. we use these two because they’re quick to set up.

step 1 · set up the project

make a folder, a virtual environment, and install the packages.
livekit-plugins-rumik-ai is the official rumik TTS plugin.

step 2 · add your keys

create a file called .env:
.env
the livekit values come from your livekit cloud project settings.

step 3 · write the agent

create agent.py. livekit wires the four steps together in an AgentSession. the rumik part is the tts line.
agent.py
rumik_ai.TTS reads RUMIK_API_KEY from the environment automatically. the system prompt makes the LLM emit muga’s [tone] tags. the full rules are in prompting muga.
tones are required — but there’s a default. muga speaks one [tone] per line, and the INSTRUCTIONS above make the LLM tag every reply. if a reply ever arrives without a tag, the plugin falls back to [neutral] so it never errors — or set your own fallback with rumik_ai.TTS(model="muga", tone="happy").

step 4 · run it

start the agent worker:
then open the livekit agents playground, connect to your project, and talk. you’ll hear muga reply in hinglish. it streams, and livekit handles interruptions and turn-taking for you.

customize it

change the voice

use rumik_ai.TTS(model="mulberry", description="...") to design any voice. see prompting mulberry.

pin a preset voice

add speaker="ira" alongside your description to pin one of the twelve named voices for the whole conversation.

tune the personality

edit the INSTRUCTIONS system prompt. that’s the agent’s character.

set a default tone

rumik_ai.TTS(model="muga", tone="neutral") prefixes any untagged reply with that tone, so the LLM doesn’t have to tag every line.

ship to phone or web

livekit handles telephony and web/mobile SDKs from the same agent.

next steps