[build-system] requires = ["setuptools>=64", "setuptools_scm>=8"] build-backend = "setuptools.build_meta" [project] name = "pipecat-ai" dynamic = ["version"] description = "An open source framework for voice (and multimodal) assistants" license = { text = "BSD 2-Clause License" } readme = "README.md" requires-python = ">=3.10" keywords = ["webrtc", "audio", "video", "ai"] classifiers = [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Topic :: Communications :: Conferencing", "Topic :: Multimedia :: Sound/Audio", "Topic :: Multimedia :: Video", "Topic :: Scientific/Engineering :: Artificial Intelligence" ] dependencies = [ "aiohttp~=3.11.11", "audioop-lts~=0.2.1; python_version>='3.13'", # We need an older version of `httpx` that doesn't remove the deprecated # `proxies` argument. This is necessary for Azure and Anthropic clients. "httpx~=0.27.2", "loguru~=0.7.3", "Markdown~=3.7", "numpy~=1.26.4", "Pillow~=11.1.0", "protobuf~=5.29.3", "pydantic~=2.10.5", "pyloudnorm~=0.1.1", "soxr~=0.5.0" ] [project.urls] Source = "https://github.com/pipecat-ai/pipecat" Website = "https://pipecat.ai" [project.optional-dependencies] anthropic = [ "anthropic~=0.39.0" ] assemblyai = [ "assemblyai~=0.36.0" ] aws = [ "boto3~=1.35.99" ] azure = [ "azure-cognitiveservices-speech~=1.42.0", "openai~=1.59.6" ] canonical = [ "aiofiles~=24.1.0" ] cartesia = [ "cartesia~=1.3.1", "websockets~=13.1" ] cerebras = [ "openai~=1.59.6" ] deepseek = [ "openai~=1.59.6" ] daily = [ "daily-python~=0.14.2" ] deepgram = [ "deepgram-sdk~=3.8.0" ] elevenlabs = [ "websockets~=13.1" ] fal = [ "fal-client~=0.5.6" ] fish = [ "ormsgpack~=1.7.0", "websockets~=13.1" ] gladia = [ "websockets~=13.1" ] google = [ "google-generativeai~=0.8.3", "google-cloud-texttospeech~=2.24.0", "google-genai~=0.7.0" ] grok = [ "openai~=1.59.6" ] groq = [ "openai~=1.59.6" ] gstreamer = [ "pygobject~=3.50.0" ] fireworks = [ "openai~=1.59.6" ] krisp = [ "pipecat-ai-krisp~=0.3.0" ] koala = [ "pvkoala~=2.0.3" ] langchain = [ "langchain~=0.3.14", "langchain-community~=0.3.14", "langchain-openai~=0.3.0" ] livekit = [ "livekit~=0.19.1", "livekit-api~=0.8.1", "tenacity~=9.0.0" ] lmnt = [ "websockets~=13.1" ] local = [ "pyaudio~=0.2.14" ] moondream = [ "einops~=0.8.0", "timm~=1.0.13", "transformers~=4.48.0" ] nim = [ "openai~=1.59.6" ] noisereduce = [ "noisereduce~=3.0.3" ] openai = [ "openai~=1.59.6", "websockets~=13.1", "python-deepcompare~=2.1.0" ] openpipe = [ "openpipe~=4.43.0" ] playht = [ "pyht~=0.1.6", "websockets~=13.1" ] riva = [ "nvidia-riva-client~=2.18.0" ] silero = [ "onnxruntime~=1.20.1" ] simli = [ "simli-ai~=0.1.10"] soundfile = [ "soundfile~=0.13.0" ] together = [ "openai~=1.59.6" ] websocket = [ "websockets~=13.1", "fastapi~=0.115.6" ] whisper = [ "faster-whisper~=1.1.1" ] openrouter = [ "openai~=1.59.6" ] [tool.setuptools.packages.find] # All the following settings are optional: where = ["src"] [tool.pytest.ini_options] addopts = "--verbose" testpaths = ["tests"] pythonpath = ["src"] asyncio_default_fixture_loop_scope = "function" filterwarnings = [ "ignore:'audioop' is deprecated:DeprecationWarning", ] [tool.setuptools_scm] local_scheme = "no-local-version" fallback_version = "0.0.0-dev" [tool.ruff] exclude = [".git", "*_pb2.py"] line-length = 100 [tool.ruff.lint] select = [ "D", # Docstring rules "I", # Import rules ] [tool.ruff.lint.pydocstyle] convention = "google"