Release Notes: v0.2.0¶
Release Date: 2026-07-06
Summary¶
This release adds lip-sync avatar support via Tavus integration, enabling realistic talking head video for voice AI agents. It also updates the voice pipeline documentation to highlight voice-to-voice capabilities for lower latency.
Highlights¶
- Lip-Sync Avatars via Tavus: Realistic talking head video synchronized with agent speech
- tavus-go SDK Integration: Type-safe Go SDK for Tavus CVI (Conversational Video Interface)
- Voice-to-Voice Support: Lower latency option using OmniVoice's direct voice transformation
- Enhanced Voice Pipeline: Comprehensive STT → LLM → TTS documentation
Features¶
Avatar Package¶
The new avatar package provides infrastructure for avatar session management:
import "github.com/plexusone/omni-livekit/avatar"
// Session interface for avatar lifecycle
type Session interface {
Start(ctx context.Context) error
Stop() error
AudioDestination() AudioDestination
}
// AudioDestination for streaming audio to avatars
type AudioDestination interface {
Write(samples []int16) error
}
Tavus Provider¶
Lip-sync avatar integration using the tavus-go SDK:
import "github.com/plexusone/omni-livekit/avatar/tavus"
// Create Tavus client
client, _ := tavus.NewClient(tavus.ClientConfig{
APIKey: os.Getenv("TAVUS_API_KEY"),
})
// Create conversation with LiveKit transport
resp, _ := client.CreateConversation(ctx, tavus.CreateConversationRequest{
PalID: "your-pal-id",
LiveKitURL: os.Getenv("LIVEKIT_URL"),
LiveKitToken: token,
})
Voice Pipeline¶
The voice pipeline architecture supports two modes:
Standard Pipeline (STT → LLM → TTS):
Providers supported:
- STT: Deepgram, Google, OpenAI Whisper
- LLM: OpenAI, Anthropic, and any OpenAI-compatible endpoint
- TTS: ElevenLabs, OpenAI, Google
Voice-to-Voice (Lower Latency):
OmniVoice supports direct voice-to-voice with:
- Deepgram Nova-3 Voice Agent
- Google Gemini Live
- OpenAI Realtime API
Voice-to-voice reduces latency by eliminating the text intermediate step.
Audio Streaming¶
Flexible audio output options for different use cases:
// DataStream output for LiveKit ByteStream
output := avatar.NewDataStreamAudioOutput(room, destIdentity)
// Queue output for local testing
output := avatar.NewQueueAudioOutput()
Token Generation¶
Support for lk.publish_on_behalf capability for avatar video publishing:
import "github.com/plexusone/omni-livekit/avatar"
// Generate token with publish-on-behalf capability
token, _ := avatar.GenerateAvatarToken(avatar.TokenConfig{
APIKey: os.Getenv("LIVEKIT_API_KEY"),
APISecret: os.Getenv("LIVEKIT_API_SECRET"),
RoomName: "my-room",
AvatarID: "tavus-avatar",
OnBehalfOf: "ai-agent", // Avatar publishes as agent
})
Dependencies¶
| Dependency | Version |
|---|---|
| tavus-go | v0.2.0 |
| livekit/server-sdk-go/v2 | v2.17.0 |
| omnimeet-core | v0.1.0 |
| omnivoice | v0.13.0 |
| omnivoice-core | v0.15.0 |