From f551f55f03ca20afffd92033142f8235245a04af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Wed, 17 Jul 2024 14:54:44 -0700 Subject: [PATCH] examples: add new foundational/18-realtime-ai.py --- examples/foundational/18-realtime-ai.py | 60 +++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 examples/foundational/18-realtime-ai.py diff --git a/examples/foundational/18-realtime-ai.py b/examples/foundational/18-realtime-ai.py new file mode 100644 index 000000000..948330749 --- /dev/null +++ b/examples/foundational/18-realtime-ai.py @@ -0,0 +1,60 @@ +# +# Copyright (c) 2024, Daily +# +# SPDX-License-Identifier: BSD 2-Clause License +# + +import asyncio +import sys +import os + +from pipecat.pipeline.pipeline import Pipeline +from pipecat.pipeline.task import PipelineParams, PipelineTask +from pipecat.pipeline.runner import PipelineRunner +from pipecat.processors.frameworks.realtimeai import RealtimeAIProcessor +from pipecat.transports.services.daily import DailyParams, DailyTransport + +from runner import configure + +from loguru import logger + +from dotenv import load_dotenv +load_dotenv(override=True) + +logger.remove(0) +logger.add(sys.stderr, level="DEBUG") + + +async def main(room_url, token): + transport = DailyTransport( + room_url, + token, + "Realtime AI", + DailyParams( + audio_in_enabled=True, + audio_out_enabled=True, + transcription_enabled=True, + )) + + rtai = RealtimeAIProcessor(transport=transport, tts_api_key=os.getenv("CARTESIA_API_KEY")) + + runner = PipelineRunner() + + pipeline = Pipeline([transport.input(), rtai]) + + task = PipelineTask( + pipeline, + params=PipelineParams( + allow_interruptions=True, + enable_metrics=True, + report_only_initial_ttfb=True)) + + @transport.event_handler("on_participant_joined") + async def on_participant_joined(transport, participant): + transport.capture_participant_transcription(participant["id"]) + + await runner.run(task) + +if __name__ == "__main__": + (url, token) = configure() + asyncio.run(main(url, token))