Skip to content

OmniAvatar

Provider-agnostic AI avatars for Go — one interface, two surfaces, three providers.

OmniAvatar gives PlexusOne applications a unified way to work with AI avatar vendors:

  • live — real-time streaming avatar sessions (LiveKit rooms, PCM audio streaming for lip-sync) for conversational agents such as OmniMeet
  • render — asynchronous batch avatar video generation (narration audio in, talking-head MP4 out) for offline pipelines such as videoascode presentation videos

Supported Providers

Provider Live Render Render Audio Upload
HeyGen LiveAvatar LITE mode Video Generation v2 Yes (MP3)
Tavus Conversational Video (CVI) Video Generation (replicas) No — URL only
bitHuman Real-time Avatars Video Generation Yes

Installation

go get github.com/plexusone/omniavatar

For interfaces only (no provider dependencies):

go get github.com/plexusone/omniavatar-core

Quick Example

import (
    "github.com/plexusone/omniavatar"
    "github.com/plexusone/omniavatar-core/render"
    _ "github.com/plexusone/omniavatar/providers/all"
)

provider, err := omniavatar.GetRenderProvider("heygen",
    omniavatar.WithAPIKey(os.Getenv("HEYGEN_API_KEY")))

job, err := provider.Generate(ctx, render.GenerateRequest{
    AvatarID: avatarID,
    AudioURL: narrationURL, // lip-sync driven by your own audio
})
status, err := render.Wait(ctx, provider, job.ID, 5*time.Second)
err = provider.Download(ctx, job.ID, outFile)

Module Layout

OmniAvatar follows the same pattern as OmniVoice:

Module Contents
omniavatar-core Interfaces only (live, render, registry) — no provider dependencies
omniavatar Provider implementations with auto-registration

See the Architecture guide for how the split works and when to import which.

Next Steps