Anva for Pipecat
Give your Pipecat agent a face.
Drop one service into the pipeline you already have. Anva takes the audio your TTS produces and returns the avatar's video and voice as ordinary Pipecat frames — on Daily, LiveKit, or any transport that sends video.
Two lines in the pipeline you already have
pip install pipecat-anva
A Pipecat pipeline with an Anva avatar
from pipecat_anva import AnvaVideoService
anva = AnvaVideoService(api_key=os.environ["ANVA_API_KEY"], avatar_id="av_...")
pipeline = Pipeline([
transport.input(),
stt,
context_aggregator.user(),
llm,
tts,
anva, # after the TTS, before the transport
transport.output(),
context_aggregator.assistant(),
])
# Daily: enable video out at the avatar's size
DailyParams(video_out_enabled=True, video_out_width=480, video_out_height=480, ...)How it works
- It sits after your TTS. AnvaVideoService takes the audio your TTS produces instead of letting it go straight to the transport, so you never hear the line twice.
- The avatar comes back as ordinary frames. Video arrives as OutputImageRawFrame and the voice as TTSAudioRawFrame, in sync — so Daily, LiveKit, WebRTC or any transport with video out just works.
- Interruptions stop the face mid-sentence. An InterruptionFrame cancels what is playing and drops what was queued. Sending is paced by playback reports, so a long answer is never front-loaded.
Common questions
- Does this only work with Daily?
- No. The service returns plain Pipecat frames, so it works with any transport that can send video out — Daily, LiveKit, WebRTC, or your own.
- Do I have to change my STT, LLM or TTS?
- No. Anva adds a face to the speech your pipeline already produces. Everything else stays exactly as it is.
- What size is the video?
- Anva renders 480×480 at 25 fps by default. Set your transport’s video_out_width and video_out_height to match, or let the transport scale it.
- How is it billed?
- At the Avatar Only rate, per connected minute, on the Developer plan or above. Nothing is billed until the session is connected.
Give it a face
The full reference — session options, webhooks, the events socket and every error code — is in the documentation.