From 5412840a933bc6fb85ff1645744aad1b1efcb7b4 Mon Sep 17 00:00:00 2001 From: filipi87 Date: Tue, 6 Jan 2026 10:16:12 -0300 Subject: [PATCH] Added support for using the HeyGen LiveAvatar API with the HeyGenTransport. --- examples/foundational/43-heygen-transport.py | 5 +++-- src/pipecat/services/heygen/api_liveavatar.py | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/foundational/43-heygen-transport.py b/examples/foundational/43-heygen-transport.py index 6eb2e5e49..8e4905102 100644 --- a/examples/foundational/43-heygen-transport.py +++ b/examples/foundational/43-heygen-transport.py @@ -27,7 +27,7 @@ from pipecat.processors.aggregators.llm_response_universal import ( from pipecat.services.cartesia.tts import CartesiaTTSService from pipecat.services.deepgram.stt import DeepgramSTTService from pipecat.services.google.llm import GoogleLLMService -from pipecat.transports.heygen.transport import HeyGenParams, HeyGenTransport +from pipecat.transports.heygen.transport import HeyGenParams, HeyGenTransport, ServiceType from pipecat.turns.user_stop import TurnAnalyzerUserTurnStopStrategy from pipecat.turns.user_turn_strategies import UserTurnStrategies @@ -40,7 +40,8 @@ logger.add(sys.stderr, level="DEBUG") async def main(): async with aiohttp.ClientSession() as session: transport = HeyGenTransport( - api_key=os.getenv("HEYGEN_API_KEY"), + api_key=os.getenv("HEYGEN_LIVE_AVATAR_API_KEY"), + service_type=ServiceType.LIVE_AVATAR, session=session, params=HeyGenParams( audio_in_enabled=True, diff --git a/src/pipecat/services/heygen/api_liveavatar.py b/src/pipecat/services/heygen/api_liveavatar.py index a7ca78892..bca870f56 100644 --- a/src/pipecat/services/heygen/api_liveavatar.py +++ b/src/pipecat/services/heygen/api_liveavatar.py @@ -93,7 +93,8 @@ class LiveAvatarSessionData(BaseModel): Parameters: session_id (str): Unique identifier for the streaming session. livekit_url (str): LiveKit server URL for the session. - livekit_client_token (str): Access token for LiveKit. + livekit_client_token (str): Access token for LiveKit user. + livekit_agent_token (str): Access token for LiveKit Agent (Pipecat). max_session_duration (int): Maximum session duration in seconds. ws_url (str): WebSocket URL for the session. """ @@ -101,6 +102,7 @@ class LiveAvatarSessionData(BaseModel): session_id: str livekit_url: str livekit_client_token: str + livekit_agent_token: str max_session_duration: int ws_url: str @@ -303,10 +305,7 @@ class LiveAvatarApi(BaseAvatarApi): session_id=session_response.data.session_id, access_token=session_response.data.livekit_client_token, livekit_url=session_response.data.livekit_url, - # TODO: HeyGen will create a new token for Pipecat - # Right now they are creating a single token, which is supposed to be used by the user - # Due to this, HeyGenTransport it is not going to work yet. - livekit_agent_token=session_response.data.livekit_client_token, + livekit_agent_token=session_response.data.livekit_agent_token, ws_url=session_response.data.ws_url, raw_response=session_response, )