Integraciones

Texto a voz de KugelAudio para LiveKit Agents

KugelAudio ofrece un plugin oficial de TTS para LiveKit Agents en Python y TypeScript. Pásalo a AgentSession como proveedor tts y tu agente hablará con una voz de KugelAudio.

Cómo funciona

Qué hace la integración

  • Una conexión abierta por agente

    El plugin mantiene abierto un WebSocket por agente, así que cada turno se transmite por una conexión ya establecida.

  • Precalentamiento al iniciar la llamada

    Llama a prewarm() mientras se establece la llamada y la primera respuesta no tendrá que esperar a la conexión.

  • Marcas de tiempo por palabra y eliminación de ruido

    Marcas de tiempo por palabra opcionales para barge-in y sincronizar la transcripción, y mejora de voz de KugelAudio en el audio de entrada (Python).

Código

Un agente de voz completo

Instálalo con pip install "kugelaudio[livekit]" o npm install kugelaudio. El worker lee KUGELAUDIO_API_KEY y las credenciales de LiveKit desde el entorno.

Python
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))
TypeScript
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) }));

Copiado de la documentación en docs.kugelaudio.com/integrations/livekit. Leer la guía completa

Dale a tu agente una voz de KugelAudio

Crea una cuenta, copia una clave de API en el panel y elige una voz. Todas las integraciones de esta página funcionan con la misma API.