Skip to main content
Your agent can appear on a call as a talking face that moves its lips with its voice. Pipecat’s SimliVideoService turns the bot’s speech into video, and RelayTransport sends that video into the Relay call as your agent’s camera.

Before you start

Install the Relay packages and Pipecat with its Simli service:

Run the avatar bot

This is Pipecat’s own Simli example with RelayTransport in place of its Daily or WebRTC transport. Simli sits after text-to-speech: it takes the bot’s audio and emits matching 512x512 video frames and audio, and the transport’s output sends both into the call.
avatar_bot.py
Call answer(event["data"]["call"]["id"]) from your call.created handler. The person sees the face as your agent’s video and hears its voice; until the first frame arrives, they see a black camera.

Choose another avatar service

Any Pipecat service that emits OutputImageRawFrames in RGB, RGBA, BGRA or ARGB works the same way: place it where SimliVideoService is, and set video_out_width and video_out_height to its frame size. Video calls covers frame rate and bitrate. LiveKit’s avatar plugins publish into LiveKit rooms, and LemonSlice into LiveKit, Daily or Agora sessions, so they don’t join Relay calls directly.

See also