# # Copyright (c) 2024, Daily # # SPDX-License-Identifier: BSD 2-Clause License # import asyncio import aiohttp import os import sys from pipecat.frames.frames import TextFrame from pipecat.pipeline.pipeline import Pipeline from pipecat.pipeline.runner import PipelineRunner from pipecat.pipeline.task import PipelineTask from pipecat.services.cartesia import CartesiaTTSService from pipecat.transports.base_transport import TransportParams from pipecat.transports.local.audio import LocalAudioTransport 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(): async with aiohttp.ClientSession() as session: transport = LocalAudioTransport(TransportParams(audio_out_enabled=True)) tts = CartesiaTTSService( api_key=os.getenv("CARTESIA_API_KEY"), voice_id="79a125e8-cd45-4c13-8a67-188112f4dd22", # British Lady ) pipeline = Pipeline([tts, transport.output()]) task = PipelineTask(pipeline) async def say_something(): await asyncio.sleep(1) await task.queue_frame(TextFrame("Hello there!")) runner = PipelineRunner() await asyncio.gather(runner.run(task), say_something()) if __name__ == "__main__": asyncio.run(main())