Skip to main content

Overview

BeyTransport generates real-time video avatars for your Pipecat agents using Beyond Presence. The Beyond Presence avatar provides synchronized video and audio output while your bot handles the conversation logic. The transport is built on top of the Daily transport: the Pipecat bot, the Bey avatar, and the user all join the same Daily room.

Source Repository

Source code, examples, and issues for the Beyond Presence integration

PyPI Package

The pipecat-ai-bey package on PyPI

Beyond Presence

Learn more about Beyond Presence video avatars

Beyond Presence Docs

Documentation, including the default avatar IDs

Installation

This is a community-maintained package distributed separately from pipecat-ai:
pip install pipecat-ai-bey

Prerequisites

Before using the Beyond Presence transport, you need:

Required Environment Variables

  • BEY_API_KEY: Your Beyond Presence API key
  • DAILY_API_KEY: Your Daily API key
  • DAILY_ROOM_URL: The Daily room URL where the session takes place

Configuration

BeyTransport constructor parameters:
bot_name
str
required
The name of the Pipecat bot.
session
aiohttp.ClientSession
required
aiohttp session used for async HTTP requests.
bey_api_key
str
required
Beyond Presence API key for authentication.
daily_api_key
str
required
Daily API key for Daily services.
avatar_id
str
required
ID of the avatar to use for video generation. See the Beyond Presence docs for available avatar IDs.
room_url
str
required
Daily room URL for the session.
params
BeyParams
default:"BeyParams()"
Bey-specific configuration parameters. See Params below.
input_name
str
default:"None"
Optional name for the input transport.
output_name
str
default:"None"
Optional name for the output transport.

Params

BeyParams extends Pipecat’s DailyParams and adds the following fields. Pass it via the params constructor argument using BeyParams(...).
ParameterTypeDefaultDescription
audio_in_enabledboolTrueWhether to enable audio input from participants.
audio_out_enabledboolTrueWhether to enable audio output to participants.
microphone_out_enabledboolFalseWhether to enable the microphone output track.
BeyParams inherits all DailyParams fields (for example, vad_analyzer). See the source repository for the authoritative, up-to-date list.

Usage

import os

import aiohttp
from pipecat.audio.vad.silero import SileroVADAnalyzer
from pipecat.audio.vad.vad_analyzer import VADParams
from pipecat.pipeline.pipeline import Pipeline

from pipecat_bey import BeyParams, BeyTransport

async with aiohttp.ClientSession() as session:
    transport = BeyTransport(
        bot_name="Pipecat bot",
        session=session,
        bey_api_key=os.environ["BEY_API_KEY"],
        daily_api_key=os.environ["DAILY_API_KEY"],
        avatar_id="b9be11b8-89fb-4227-8f86-4a881393cbdb",  # Default "Ege" avatar
        room_url=os.environ["DAILY_ROOM_URL"],
        params=BeyParams(
            audio_in_enabled=True,
            audio_out_enabled=True,
            microphone_out_enabled=False,
            vad_analyzer=SileroVADAnalyzer(params=VADParams(stop_secs=0.2)),
        ),
    )

    pipeline = Pipeline(
        [
            transport.input(),
            stt,
            context_aggregator.user(),
            llm,
            tts,
            transport.output(),
            context_aggregator.assistant(),
        ]
    )
See example.py in the source repository for a complete working example.

Compatibility

Tested with Pipecat v0.0.89. Check the source repository for the latest tested version and changelog.