Skip to main content
agent-1 ist der Standard-Konversations-Avatar-Agent. Er verbindet eine komplette Sprach-KI-Pipeline — Speech-to-Text, Large Language Model und Text-to-Speech — direkt mit einem Avaluma-Avatar über LiveKit Inference. Spricht ein Nutzer, läuft das Audio durch AssemblyAI zur Transkription, OpenAI GPT-4.1-mini für eine Antwort und Cartesia Sonic-3 zur Synthese; das finale Audio wird vom Avatar-Server in einen Live-Video-Stream gerendert.

Pipeline

Setup

1

Plugin installieren

Das Paket avaluma-livekit-plugin stellt die AvatarSession-Klasse bereit, die die Agent-Pipeline mit deinem Avatar verbindet. Die pyproject.toml deklariert es bereits als Abhängigkeit — bei Verwendung von Docker ist kein zusätzlicher Installationsschritt nötig:
pyproject.toml
2

Zugangsdaten konfigurieren

Kopiere .env.example nach .env.local und trage deine Zugangsdaten ein:
.env.local
3

Avatar-ID setzen

Öffne agents/1-agent-with-livekit-inference/agent-1.py und setze avatar_id auf den Namen deiner .hvia-Datei ohne Endung:
agent-1.py
4

Agent starten

Starte livekit-agent-1 mit Docker Compose:
Der Container baut aus dem Projekt-Root, lädt .env.local und mountet agent-1.py im Container unter /app/src/agent.py.

Vollständiger Agent-Code

Dies ist der komplette Quellcode von agent-1.py:
agent-1.py

Wichtige Komponenten erklärt

AvatarSession

AvatarSession ist der Kern der Avaluma-Integration. Du instanziierst sie mit deinem Lizenzschlüssel, der Avatar-ID (passend zum .hvia-Dateinamen) und der Avatar-Server-URL:
Der Aufruf await avatar.start() registriert den Avatar als Teilnehmer im LiveKit-Raum und verbindet ihn mit der AgentSession, sodass TTS-Audio-Frames zum Rendern an den Avatar-Server weitergeleitet werden. Der Aufruf blockiert, bis der Avatar-Teilnehmer dem Raum vollständig beigetreten ist.

AgentSession mit LiveKit Inference

Die AgentSession konfiguriert die vollständige Sprach-Pipeline über die verwalteten Inference-Endpunkte von LiveKit — für STT, LLM oder TTS sind keine separaten API-Keys erforderlich:

Geräuschunterdrückung

Die Unterdrückung von Hintergrundgeräuschen wird auf Raum-Eingabeebene mit noise_cancellation.BVC() angewendet:
BVC (Background Voice Cancellation) filtert Umgebungsgeräusche aus dem Mikrofon-Feed, bevor das Audio das STT-Modell erreicht, und verbessert so die Transkriptionsgenauigkeit in lauten Umgebungen.

Prewarm-Funktion

Die prewarm-Funktion lädt das Silero-VAD-Modell in den Speicher des Worker-Prozesses, bevor der erste Job eintrifft, und eliminiert so Kaltstart-Latenz:

Einen neuen Agent hinzufügen

Folge diesen Schritten, um einen zusätzlichen Agent neben agent-1 zu erstellen:
1

Neues Agent-Verzeichnis anlegen

Füge ein Verzeichnis unter agents/ hinzu und lege dein Agent-Skript hinein:
2

Eindeutigen Agent-Namen setzen

Setze in deinem neuen Skript agent_name auf einen Wert, der innerhalb deines LiveKit-Projekts eindeutig ist:
agent-3.py
3

Service zur docker-compose.yaml hinzufügen

Mounte dein Skript in den Container und setze AGENT_NAME passend zu agent_name in deinem Skript:
docker-compose.yaml
4

Neuen Agent starten

Jeder Agent-Service muss einen eindeutigen AGENT_NAME haben. Mehrere Agenten mit demselben Namen im selben LiveKit-Projekt zu deployen führt zu Routing-Konflikten — beide Worker konkurrieren um dieselben Jobs.