Skip to content

v0.7.0

Release Date: 2026-07-16

Highlights

  • Optional avatar presenter overlay: generate a talking-head video from narration audio via OmniAvatar (HeyGen, Tavus, bitHuman) and composite it as a circular overlay onto slides videos
  • One-shot mode: vac slides video --avatar-id ... runs the avatar overlay as an integrated final pipeline stage

Added

  • vac slides video avatar flags (--avatar-id, --avatar-provider, --avatar-diameter, --avatar-position, --avatar-border, ...) that run generation + composition as an integrated final stage (upload-capable providers: heygen, bithuman)
  • vac avatar generate command: narration audio (file, manifest, or hosted URL) to presenter video via an OmniAvatar render provider, with content-addressed caching
  • vac avatar compose command: FFmpeg circular mask overlay of the presenter video onto a slides video, with position/diameter/margin/border options and authoritative narration audio mapping
  • pkg/avatar package: Generate (provider-agnostic generation with upload feature-detection and caching), ConcatManifestAudio, and ConcatAudioFiles
  • pkg/video.OverlayAvatar with OverlayOptions for circle-masked corner overlays
  • orchestrator.AvatarConfig integrating the overlay into the slides pipeline

Dependencies

  • Add github.com/plexusone/omniavatar and github.com/plexusone/omniavatar-core (render providers)

Usage

One-shot (everything in a single command):

export HEYGEN_API_KEY=...
vac slides video --input slides.md --manifest audio/en-US/manifest.json \
  --output final.mp4 --avatar-id <avatar-id> --avatar-border 6

Decoupled (explicit steps; also the path for Tavus via --audio-url):

# 1. Generate narration audio + manifest
vac slides tts --transcript transcript.json --output audio/

# 2. Generate the presenter video
vac avatar generate --manifest audio/en-US/manifest.json \
  --provider heygen --avatar-id <avatar-id> --output presenter.mp4

# 3. Render the slides video
vac slides video --input slides.md \
  --manifest audio/en-US/manifest.json --output slides.mp4

# 4. Composite the presenter circle onto the slides
vac avatar compose --slides slides.mp4 --avatar presenter.mp4 \
  --output final.mp4 --border 6

See the Avatar Presenter guide for details.


Full Changelog