omniavatar

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package omniavatar provides an OmniAvatar render provider backed by the Tavus video generation API.

It implements render.Provider (Generate/Status/Download) for audio-driven talking-head generation using Tavus replicas. Tavus has no audio upload API, so it does not implement render.AudioUploader — supply a publicly fetchable GenerateRequest.AudioURL.

The adapter is constructor-based and depends only on omniavatar-core. The batteries omniavatar package registers it; import that to use it by name:

renderer, err := omniavatar.GetRenderProvider("tavus",
    omniavatar.WithAPIKey(os.Getenv("TAVUS_API_KEY")),
    omniavatar.WithExtension("replica_id", replicaID))

Or construct directly:

p, err := tavusomni.NewRenderProvider(tavusomni.RenderConfig{
    APIKey: os.Getenv("TAVUS_API_KEY"),
})

The real-time (live) Tavus provider lives in the batteries omniavatar package (github.com/plexusone/omniavatar/providers/tavus), because its LiveKit integration depends on that package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewRenderProviderFromConfig

func NewRenderProviderFromConfig(cfg registry.ProviderConfig) (render.Provider, error)

NewRenderProviderFromConfig creates a Tavus render provider from registry config. It is the registry-friendly constructor the batteries omniavatar package registers as a render.Provider factory.

Types

type RenderConfig

type RenderConfig struct {
	// APIKey is the Tavus API key.
	// Required.
	APIKey string

	// BaseURL is the Tavus API base URL.
	// Default: https://tavusapi.com
	BaseURL string

	// ReplicaID is the default Tavus replica used when
	// GenerateRequest.AvatarID is empty.
	ReplicaID string

	// HTTPClient is an optional custom HTTP client, used for both API
	// calls and video downloads.
	HTTPClient *http.Client
}

RenderConfig configures the Tavus render (batch video generation) provider.

type RenderProvider

type RenderProvider struct {
	// contains filtered or unexported fields
}

RenderProvider implements render.Provider for Tavus video generation.

Tavus has no audio upload API, so RenderProvider does not implement render.AudioUploader; callers must supply a publicly fetchable GenerateRequest.AudioURL (.wav or .mp3).

func NewRenderProvider

func NewRenderProvider(cfg RenderConfig) (*RenderProvider, error)

NewRenderProvider creates a Tavus render provider.

func (*RenderProvider) Download

func (p *RenderProvider) Download(ctx context.Context, jobID string, dst io.Writer) error

Download streams the completed video to dst. It prefers the download URL and falls back to the stream URL.

func (*RenderProvider) Generate

func (p *RenderProvider) Generate(ctx context.Context, req render.GenerateRequest) (*render.Job, error)

Generate submits a video generation job to Tavus.

GenerateRequest.AvatarID maps to the Tavus replica ID. Width and Height are not supported by the Tavus API and are ignored. Background maps best-effort: Type "video" sets background_source_url; Type "image" and "color" are unsupported. Extensions: "fast" (bool), "callback_url".

func (*RenderProvider) Name

func (p *RenderProvider) Name() string

Name returns the provider name.

func (*RenderProvider) Status

func (p *RenderProvider) Status(ctx context.Context, jobID string) (*render.JobStatus, error)

Status returns the current status of a generation job.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL