Integrations
KugelAudio text to speech for LiveKit Agents
KugelAudio ships an official TTS plugin for LiveKit Agents in Python and TypeScript. Pass it to AgentSession as the tts provider and your agent speaks with a KugelAudio voice.
How it works
What the integration does
One warm connection per agent
The plugin keeps one WebSocket open per agent, so every turn streams over a connection that is already up.
Prewarm during call setup
Call prewarm() while the call connects, and the first response does not wait for the connection.
Word timestamps and noise removal
Optional word timestamps for barge-in and transcript sync, and KugelAudio speech enhancement on the input audio (Python).
Code
A complete voice agent
Install with pip install "kugelaudio[livekit]" or npm install kugelaudio. The worker reads KUGELAUDIO_API_KEY and the LiveKit credentials from the environment.
from livekit.agents import Agent, AgentSession, JobContext
from livekit.agents import WorkerOptions, cli
from livekit.plugins import deepgram, openai, silero
from kugelaudio.livekit import TTS as KugelAudioTTS
async def entrypoint(ctx: JobContext):
await ctx.connect()
tts = KugelAudioTTS(model="kugel-3.5", voice_id=1071, language="en")
tts.prewarm()
session = AgentSession(
stt=deepgram.STT(),
llm=openai.LLM(model="gpt-4o-mini"),
tts=tts,
vad=silero.VAD.load(),
)
await session.start(
room=ctx.room,
agent=Agent(instructions="You are a helpful voice assistant."),
)
await session.say("Hello! How can I help you?")
if __name__ == "__main__":
cli.run_app(WorkerOptions(entrypoint_fnc=entrypoint))import { fileURLToPath } from 'node:url';
import { WorkerOptions, cli, defineAgent, voice } from '@livekit/agents';
import * as deepgram from '@livekit/agents-plugin-deepgram';
import * as openai from '@livekit/agents-plugin-openai';
import * as silero from '@livekit/agents-plugin-silero';
import { TTS as KugelAudioTTS } from 'kugelaudio/livekit';
export default defineAgent({
entry: async (ctx) => {
await ctx.connect();
const tts = new KugelAudioTTS({
model: 'kugel-3.5',
voiceId: 1071,
language: 'en',
});
tts.prewarm();
const session = new voice.AgentSession({
stt: new deepgram.STT(),
llm: new openai.LLM({ model: 'gpt-4o-mini' }),
tts,
vad: await silero.VAD.load(),
});
await session.start({
agent: new voice.Agent({
instructions: 'You are a helpful voice assistant.',
}),
room: ctx.room,
});
await session.say('Hello! How can I help you?');
},
});
cli.runApp(new WorkerOptions({ agent: fileURLToPath(import.meta.url) }));Copied from the documentation at docs.kugelaudio.com/integrations/livekit. Read the full guide
Integrations
Other integrations
Pipecat
Official TTS service for Pipecat voice pipelines in Python.
View integrationVapi
Built-in custom TTS endpoint for Vapi assistants, no proxy needed.
View integrationCognigy
Custom speech vendor endpoint for Cognigy Voice Gateway.
View integrationMCP server
Connect Claude, Cursor or any MCP client and generate speech from a chat.
View integration
Give your agent a KugelAudio voice
Create an account, copy an API key from the dashboard and pick a voice. Every integration on this page runs on the same API.