{"id":5368,"library":"pipecat-ai","title":"PipeCat AI","description":"PipeCat AI is an open-source framework designed for building real-time voice and multimodal AI assistants. It provides a modular pipeline architecture for integrating various services like Speech-to-Text (STT), Large Language Models (LLM), Text-to-Speech (TTS), and real-time transports (e.g., Daily.co). It's currently in pre-1.0 development, with frequent updates introducing new features and services.","status":"active","version":"0.0.108","language":"en","source_language":"en","source_url":"https://github.com/pipecat-ai/pipecat","tags":["AI","voice-assistant","multimodal","realtime","LLM","TTS","STT","pipeline","conversational-ai"],"install":[{"cmd":"pip install pipecat-ai","lang":"bash","label":"Install base library"}],"dependencies":[{"reason":"Requires Python 3.10 or newer for async/await and other features.","package":"Python","optional":false}],"imports":[{"symbol":"Pipeline","correct":"from pipecat.pipeline.pipeline import Pipeline"},{"symbol":"PipelineRunner","correct":"from pipecat.pipeline.runner import PipelineRunner"},{"symbol":"LLMService","correct":"from pipecat.services.llm import LLMService"},{"symbol":"TTSService","correct":"from pipecat.services.tts import TTSService"},{"symbol":"VADService","correct":"from pipecat.services.vad import VADService"},{"symbol":"DailyTransport","correct":"from pipecat.transports.services.daily import DailyTransport"},{"symbol":"DailyParams","correct":"from pipecat.transports.services.daily import DailyParams"},{"symbol":"DailyTransportOptions","correct":"from pipecat.transports.services.daily import DailyTransportOptions"},{"symbol":"AudioFrame","correct":"from pipecat.frames.frames import AudioFrame"},{"symbol":"TextFrame","correct":"from pipecat.frames.frames import TextFrame"}],"quickstart":{"code":"import asyncio\nimport os\n\nfrom pipecat.frames.frames import AudioFrame, TextFrame\nfrom pipecat.pipeline.pipeline import Pipeline\nfrom pipecat.pipeline.runner import PipelineRunner\nfrom pipecat.services.vad import VADService\nfrom pipecat.transports.services.daily import DailyParams, DailyTransport, DailyTransportOptions\nfrom pipecat.services.llm import LLMService\nfrom pipecat.services.tts import TTSService\n\nasync def main():\n    # Make sure to set environment variables for DAILY_URL and OPENAI_API_KEY\n    # e.g., export DAILY_URL=\"https://example.daily.co/YOUR_ROOM\" \n    #       export OPENAI_API_KEY=\"sk-proj-...\"\n    \n    daily_url = os.environ.get(\"DAILY_URL\", \"\")\n    openai_api_key = os.environ.get(\"OPENAI_API_KEY\", \"\")\n\n    if not daily_url or not openai_api_key:\n        print(\"Please set DAILY_URL and OPENAI_API_KEY environment variables.\")\n        return\n\n    # Setup your services (Daily, VAD, LLM, TTS)\n    transport = DailyTransport(\n        daily_url,\n        DailyTransportOptions(\n            lang=\"en\",\n            vad_enabled=True,\n            mic_enabled=True,\n            speaker_enabled=True,\n            vad_service=VADService(),\n        ),\n    )\n    llm = LLMService(\n        api_key=openai_api_key,\n        model=\"gpt-4o\",\n    )\n    tts = TTSService(\n        api_key=openai_api_key,\n        model=\"tts-1\",\n        voice=\"alloy\",\n    )\n\n    # Define your pipeline: User audio -> LLM text -> TTS audio -> Bot audio\n    pipeline = Pipeline([\n        transport.input(),        # User input (audio) from Daily\n        llm,                      # LLM processes user text\n        tts,                      # TTS generates audio from LLM text\n        transport.output(),       # Bot output (audio) to Daily\n    ])\n\n    runner = PipelineRunner()\n\n    print(\"Starting PipeCat AI assistant. Join the Daily room specified by DAILY_URL.\")\n    await runner.run(pipeline)\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n","lang":"python","description":"This quickstart sets up a basic voice AI assistant using Daily.co for real-time communication, OpenAI's GPT-4o for language understanding, and OpenAI's TTS-1 for speech synthesis. It demonstrates the core pipeline concept: user speech input is processed by an LLM, the LLM's text response is converted to speech, and then output to the user."},"warnings":[{"fix":"Always pin exact versions (`pipecat-ai==0.0.x`) and thoroughly test when upgrading to a new minor version (e.g., 0.0.100 to 0.0.101).","message":"As a pre-1.0 library (version 0.0.x), PipeCat AI's API is subject to frequent and potentially breaking changes without strict semantic versioning. Always review release notes when upgrading.","severity":"gotcha","affected_versions":"0.0.x"},{"fix":"Migrate any runtime service setting updates from dictionary-based structures to the new strongly-typed objects (e.g., `LLMUpdateSettingsFrame(model='gpt-4')` instead of `LLMUpdateSettingsFrame(settings={'model': 'gpt-4'})`).","message":"Beginning with v0.0.104, PipeCat AI introduced support for strongly-typed objects instead of plain dictionaries for updating service settings at runtime (e.g., `STTUpdateSettingsFrame`). While dictionaries might still work for some settings, the new typed objects are the recommended and future-proof approach.","severity":"gotcha","affected_versions":">=0.0.104"},{"fix":"If using `SyncParallelPipeline` and requiring output frames to follow the pipeline definition order, explicitly pass `frame_order=FrameOrder.PIPELINE` during initialization.","message":"In v0.0.107, the default behavior of `SyncParallelPipeline` for output frame ordering changed. It now defaults to arrival order. If your application relies on the order in which pipelines were defined, you must explicitly set `frame_order=FrameOrder.PIPELINE`.","severity":"gotcha","affected_versions":">=0.0.107"},{"fix":"Ensure you have valid API keys for all external AI services your pipeline utilizes and set them as environment variables or pass them directly to the service constructors (e.g., `LLMService(api_key=...)`).","message":"PipeCat AI is an orchestration framework; it does not provide built-in LLM, TTS, or STT services. Users must bring their own cloud service API keys (e.g., OpenAI, Azure, Deepgram, Google) and configure the respective PipeCat service wrappers.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-13T00:00:00.000Z","next_check":"2026-07-12T00:00:00.000Z"}