Changes Split out module attributes to make engine settings clearer Removed internal audio buffer to use latest Speechmatics python SDK (0.4.0) Use diarization for improved VAD in multi-speaker situations Support custom dictionary / vocabulary with attributes Deprecated attributes superseded by re-organised attributes Diarization Enhancements Focus on specific speakers (using speaker labels) Ignore specific speakers (using speaker labels) Separate transcription formats for active and inactive speakers Support for known speakers
159 lines
5.0 KiB
TOML
159 lines
5.0 KiB
TOML
[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 = "BSD-2-Clause"
|
|
license-files = ["LICENSE"]
|
|
readme = "README.md"
|
|
requires-python = ">=3.10"
|
|
keywords = ["webrtc", "audio", "video", "ai"]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Intended Audience :: Developers",
|
|
"Topic :: Communications :: Conferencing",
|
|
"Topic :: Multimedia :: Sound/Audio",
|
|
"Topic :: Multimedia :: Video",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence"
|
|
]
|
|
dependencies = [
|
|
"aiohttp>=3.11.12,<4",
|
|
"audioop-lts~=0.2.1; python_version>='3.13'",
|
|
"docstring_parser~=0.16",
|
|
"loguru~=0.7.3",
|
|
"Markdown>=3.7,<4",
|
|
"nltk>=3.9.1,<4",
|
|
"numpy>=1.26.4,<3",
|
|
"Pillow>=11.1.0,<12",
|
|
"protobuf~=5.29.3",
|
|
"pydantic>=2.10.6,<3",
|
|
"pyloudnorm~=0.1.1",
|
|
"resampy~=0.4.3",
|
|
"soxr~=0.5.0",
|
|
"openai>=1.74.0,<2",
|
|
# Explicit dependency pins for Python 3.11+ compatibility
|
|
"numba>=0.60.0,<1",
|
|
]
|
|
|
|
[project.urls]
|
|
Source = "https://github.com/pipecat-ai/pipecat"
|
|
Website = "https://pipecat.ai"
|
|
|
|
[project.optional-dependencies]
|
|
anthropic = [ "anthropic~=0.49.0" ]
|
|
assemblyai = [ "websockets>=13.1,<15.0" ]
|
|
asyncai = [ "websockets>=13.1,<15.0" ]
|
|
aws = [ "aioboto3~=15.0.0", "websockets>=13.1,<15.0" ]
|
|
aws-nova-sonic = [ "aws_sdk_bedrock_runtime~=0.0.2; python_version>='3.12'" ]
|
|
azure = [ "azure-cognitiveservices-speech~=1.42.0"]
|
|
cartesia = [ "cartesia~=2.0.3", "websockets>=13.1,<15.0" ]
|
|
cerebras = []
|
|
deepseek = []
|
|
daily = [ "daily-python~=0.19.5" ]
|
|
deepgram = [ "deepgram-sdk~=4.7.0" ]
|
|
elevenlabs = [ "websockets>=13.1,<15.0" ]
|
|
fal = [ "fal-client~=0.5.9" ]
|
|
fireworks = []
|
|
fish = [ "ormsgpack~=1.7.0", "websockets>=13.1,<15.0" ]
|
|
gladia = [ "websockets>=13.1,<15.0" ]
|
|
google = [ "google-cloud-speech~=2.32.0", "google-cloud-texttospeech~=2.26.0", "google-genai~=1.24.0", "websockets>=13.1,<15.0" ]
|
|
grok = []
|
|
groq = [ "groq~=0.23.0" ]
|
|
gstreamer = [ "pygobject~=3.50.0" ]
|
|
heygen = [ "livekit>=0.22.0", "websockets>=13.1,<15.0" ]
|
|
inworld = []
|
|
krisp = [ "pipecat-ai-krisp~=0.4.0" ]
|
|
koala = [ "pvkoala~=2.0.3" ]
|
|
langchain = [ "langchain~=0.3.20", "langchain-community~=0.3.20", "langchain-openai~=0.3.9" ]
|
|
livekit = [ "livekit~=0.22.0", "livekit-api~=0.8.2", "tenacity>=8.2.3,<10.0.0" ]
|
|
lmnt = [ "websockets>=13.1,<15.0" ]
|
|
local = [ "pyaudio~=0.2.14" ]
|
|
mcp = [ "mcp[cli]~=1.9.4" ]
|
|
mem0 = [ "mem0ai~=0.1.94" ]
|
|
mlx-whisper = [ "mlx-whisper~=0.4.2" ]
|
|
moondream = [ "einops~=0.8.0", "timm~=1.0.13", "transformers>=4.48.0" ]
|
|
nim = []
|
|
neuphonic = [ "websockets>=13.1,<15.0" ]
|
|
noisereduce = [ "noisereduce~=3.0.3" ]
|
|
openai = [ "websockets>=13.1,<15.0" ]
|
|
openpipe = [ "openpipe~=4.50.0" ]
|
|
openrouter = []
|
|
perplexity = []
|
|
playht = [ "pyht>=0.1.6", "websockets>=13.1,<15.0" ]
|
|
qwen = []
|
|
rime = [ "websockets>=13.1,<15.0" ]
|
|
riva = [ "nvidia-riva-client~=2.21.1" ]
|
|
runner = [ "python-dotenv>=1.0.0,<2.0.0", "uvicorn>=0.32.0,<1.0.0", "fastapi>=0.115.6,<0.117.0", "pipecat-ai-small-webrtc-prebuilt>=1.0.0"]
|
|
sambanova = []
|
|
sentry = [ "sentry-sdk~=2.23.1" ]
|
|
local-smart-turn = [ "coremltools>=8.0", "transformers", "torch~=2.5.0", "torchaudio~=2.5.0" ]
|
|
remote-smart-turn = []
|
|
silero = [ "onnxruntime~=1.20.1" ]
|
|
simli = [ "simli-ai~=0.1.10"]
|
|
soniox = [ "websockets>=13.1,<15.0" ]
|
|
soundfile = [ "soundfile~=0.13.0" ]
|
|
speechmatics = [ "speechmatics-rt>=0.4.0" ]
|
|
tavus=[]
|
|
together = []
|
|
tracing = [ "opentelemetry-sdk>=1.33.0", "opentelemetry-api>=1.33.0", "opentelemetry-instrumentation>=0.54b0" ]
|
|
ultravox = [ "transformers>=4.48.0", "vllm~=0.7.3" ]
|
|
webrtc = [ "aiortc~=1.11.0", "opencv-python~=4.11.0.86" ]
|
|
websocket = [ "websockets>=13.1,<15.0", "fastapi>=0.115.6,<0.117.0" ]
|
|
whisper = [ "faster-whisper~=1.1.1" ]
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.setuptools.package-data]
|
|
"pipecat" = ["py.typed"]
|
|
"pipecat.services.aws_nova_sonic" = ["src/pipecat/services/aws_nova_sonic/ready.wav"]
|
|
|
|
[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
|
|
]
|
|
ignore = [
|
|
"D105", # Missing docstring in magic methods (__str__, __repr__, etc.)
|
|
]
|
|
|
|
[tool.ruff.lint.per-file-ignores]
|
|
# Skip docstring checks for non-source code
|
|
"examples/**/*.py" = ["D"]
|
|
"tests/**/*.py" = ["D"]
|
|
"scripts/**/*.py" = ["D"]
|
|
"docs/**/*.py" = ["D"]
|
|
# Skip D104 (missing docstring in public package) for __init__.py files
|
|
"**/__init__.py" = ["D104"]
|
|
# Skip specific rules for generated protobuf files
|
|
"**/*_pb2.py" = ["D"]
|
|
"src/pipecat/services/__init__.py" = ["D"]
|
|
|
|
[tool.ruff.lint.pydocstyle]
|
|
convention = "google"
|
|
|
|
[tool.coverage.run]
|
|
command_line = "--module pytest"
|
|
source = ["src"]
|
|
omit = ["*/tests/*"]
|