Pipecat avatar TTFB metrics vs timing a Sume avatar job

Pipecat's Tavus service reports TTFB from TTSStartedFrame and BotStartedSpeakingFrame. A Sume avatar job has no first byte to time: measure submit to completed.

4 min readSume
All posts

What does Pipecat measure for the avatar?

The Tavus page says it records TTFB metrics using TTSStartedFrame and BotStartedSpeakingFrame. That makes sense for a live avatar: the number is the delay between the voice starting and the face speaking.

What is the equivalent for a recorded clip?

A Sume job has no stream, so a first-byte time means little. The measurable intervals are the time from submit to completed, and the time you spend polling. The status response gives next_poll_after_seconds when it has a hint; obey it, or back off exponentially if absent.

Stop on completed, failed or canceled, and read /result only when result_ready is true.

What to time, by approach; Pipecat row read 2026-10-06
ApproachStartStop
Pipecat live avatarTTSStartedFrameBotStartedSpeakingFrame
Sume avatar jobSubmit accepted (job id returned)Status completed
Your pageClickClip playing

How do I log it?

Store the timestamps yourself at submit and at the webhook or poll that sees completed. The difference is your render time for that tier and script length. Compare standard and plus on your own scripts instead of guessing, since the docs call standard the fastest path and max the slowest.

If you wait inline, sync mode returns after at most 30 seconds, and you still follow the status URL if it timed out.

import time

t0 = time.monotonic()
# ... submit the job, then poll status until it is completed ...
elapsed = time.monotonic() - t0
print("submit_to_completed_seconds=%.1f" % elapsed)

Sources

Related posts

More in Sume Avatar 1.0

All Sume Avatar 1.0 posts

Written by Sume