From f60eeaa212ac278f9392296ad90c87e3bd2dc336 Mon Sep 17 00:00:00 2001 From: Neil Ruaro Date: Fri, 16 Jan 2026 02:50:18 +0800 Subject: [PATCH] reverted uv.lock, updated readthedocs.yaml, copyright year updates --- .readthedocs.yaml | 2 +- src/pipecat/services/camb/__init__.py | 2 +- src/pipecat/services/camb/tts.py | 10 ++++++++- uv.lock | 31 +-------------------------- 4 files changed, 12 insertions(+), 33 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 9f2f13608..79785daca 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -11,7 +11,7 @@ build: jobs: post_install: - pip install uv - - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer --no-extra local_smart_turn --no-extra moondream --no-extra riva --no-extra mlx-whisper --no-extra camb + - UV_PROJECT_ENVIRONMENT=$READTHEDOCS_VIRTUALENV_PATH uv sync --group docs --all-extras --no-extra krisp --no-extra gstreamer --no-extra local_smart_turn --no-extra moondream --no-extra riva --no-extra mlx-whisper sphinx: configuration: docs/api/conf.py diff --git a/src/pipecat/services/camb/__init__.py b/src/pipecat/services/camb/__init__.py index d23112945..f28a0edd6 100644 --- a/src/pipecat/services/camb/__init__.py +++ b/src/pipecat/services/camb/__init__.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2024–2025, Daily +# Copyright (c) 2024–2026, Daily # # SPDX-License-Identifier: BSD 2-Clause License # diff --git a/src/pipecat/services/camb/tts.py b/src/pipecat/services/camb/tts.py index 51fc67000..09d1c4e77 100644 --- a/src/pipecat/services/camb/tts.py +++ b/src/pipecat/services/camb/tts.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2024–2025, Daily +# Copyright (c) 2024–2026, Daily # # SPDX-License-Identifier: BSD 2-Clause License # @@ -253,6 +253,14 @@ class CambTTSService(TTSService): self._sample_rate = MODEL_SAMPLE_RATES.get(self._model_name, 22050) self._settings["sample_rate"] = self._sample_rate + # Warn if sample rate doesn't match model's supported rate + if self._sample_rate != MODEL_SAMPLE_RATES.get(self._model_name): + logger.warning( + f"Camb.ai's {self._model_name} model requires " + f"{MODEL_SAMPLE_RATES.get(self._model_name)}Hz sample rate. " + f"Current rate of {self._sample_rate}Hz may cause issues." + ) + @traced_tts async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]: """Generate speech from text using Camb.ai's TTS API. diff --git a/uv.lock b/uv.lock index c8b163dc4..24b9a13c6 100644 --- a/uv.lock +++ b/uv.lock @@ -575,22 +575,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6c/56/3124f61d37a7a4e7cc96afc5492c78ba0cb551151e530b54669ddd1436ef/cachetools-6.2.0-py3-none-any.whl", hash = "sha256:1c76a8960c0041fcc21097e357f882197c79da0dbff766e7317890a65d7d8ba6", size = 11276, upload-time = "2025-08-25T18:57:29.684Z" }, ] -[[package]] -name = "camb-sdk" -version = "1.5.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "httpx" }, - { name = "pydantic" }, - { name = "typing-extensions" }, - { name = "websocket-client" }, - { name = "websockets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/68/44/b4161f5da381f1b0d35a1abc7d69588ff24af6dacc9f13bccfb6f9889c46/camb_sdk-1.5.4.tar.gz", hash = "sha256:e882fb1b32aa45243ead5a558fed4e4e7ff8542af9f1802565a5fb4b7114fb5c", size = 83074, upload-time = "2026-01-12T20:19:34.318Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/c9/f718b6028d6e457391d1a6a8f93ae6073055731d77279ef097734b84bdcb/camb_sdk-1.5.4-py3-none-any.whl", hash = "sha256:b9ad43fddc0d749dd522839a06136df89d109510f57e68102414a8c0078e496a", size = 152143, upload-time = "2026-01-12T20:19:31.769Z" }, -] - [[package]] name = "cartesia" version = "2.0.9" @@ -3909,9 +3893,6 @@ aws-nova-sonic = [ azure = [ { name = "azure-cognitiveservices-speech" }, ] -camb = [ - { name = "camb-sdk" }, -] cartesia = [ { name = "cartesia" }, { name = "websockets" }, @@ -4131,7 +4112,6 @@ requires-dist = [ { name = "aws-sdk-bedrock-runtime", marker = "python_full_version >= '3.12' and extra == 'aws-nova-sonic'", specifier = "~=0.2.0" }, { name = "aws-sdk-sagemaker-runtime-http2", marker = "python_full_version >= '3.12' and extra == 'sagemaker'" }, { name = "azure-cognitiveservices-speech", marker = "extra == 'azure'", specifier = "~=1.42.0" }, - { name = "camb-sdk", marker = "extra == 'camb'", specifier = ">=1.5.4" }, { name = "cartesia", marker = "extra == 'cartesia'", specifier = "~=2.0.3" }, { name = "coremltools", marker = "extra == 'local-smart-turn'", specifier = ">=8.0" }, { name = "daily-python", marker = "extra == 'daily'", specifier = "~=0.23.0" }, @@ -4225,7 +4205,7 @@ requires-dist = [ { name = "wait-for2", marker = "python_full_version < '3.12'", specifier = ">=0.4.1" }, { name = "websockets", marker = "extra == 'websockets-base'", specifier = ">=13.1,<16.0" }, ] -provides-extras = ["aic", "anthropic", "assemblyai", "asyncai", "aws", "aws-nova-sonic", "azure", "camb", "cartesia", "cerebras", "daily", "deepgram", "deepseek", "elevenlabs", "fal", "fireworks", "fish", "gladia", "google", "gradium", "grok", "groq", "gstreamer", "heygen", "hume", "inworld", "koala", "krisp", "langchain", "livekit", "lmnt", "local", "local-smart-turn", "local-smart-turn-v3", "mcp", "mem0", "mistral", "mlx-whisper", "moondream", "neuphonic", "noisereduce", "nvidia", "openai", "rnnoise", "openpipe", "openrouter", "perplexity", "playht", "qwen", "remote-smart-turn", "rime", "riva", "runner", "sagemaker", "sambanova", "sarvam", "sentry", "silero", "simli", "soniox", "soundfile", "speechmatics", "strands", "tavus", "together", "tracing", "ultravox", "webrtc", "websocket", "websockets-base", "whisper"] +provides-extras = ["aic", "anthropic", "assemblyai", "asyncai", "aws", "aws-nova-sonic", "azure", "cartesia", "cerebras", "daily", "deepgram", "deepseek", "elevenlabs", "fal", "fireworks", "fish", "gladia", "google", "gradium", "grok", "groq", "gstreamer", "heygen", "hume", "inworld", "koala", "krisp", "langchain", "livekit", "lmnt", "local", "local-smart-turn", "local-smart-turn-v3", "mcp", "mem0", "mistral", "mlx-whisper", "moondream", "neuphonic", "noisereduce", "nvidia", "openai", "rnnoise", "openpipe", "openrouter", "perplexity", "playht", "qwen", "remote-smart-turn", "rime", "riva", "runner", "sagemaker", "sambanova", "sarvam", "sentry", "silero", "simli", "soniox", "soundfile", "speechmatics", "strands", "tavus", "together", "tracing", "ultravox", "webrtc", "websocket", "websockets-base", "whisper"] [package.metadata.requires-dev] dev = [ @@ -6943,15 +6923,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/d3/254cea30f918f489db09d6a8435a7de7047f8cb68584477a515f160541d6/watchfiles-1.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:923fec6e5461c42bd7e3fd5ec37492c6f3468be0499bc0707b4bbbc16ac21792", size = 454009, upload-time = "2025-06-15T19:06:52.896Z" }, ] -[[package]] -name = "websocket-client" -version = "1.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/26/a951e489a0e3d2c64e5562e0248a15d2e73e0edb4ba0833d685abb1a262e/websocket_client-1.9.0.tar.gz", hash = "sha256:0c59a2e7a35f8a1879a3f15f8a4fd424a549779f8d6c6fbc6cf6d13939c1b9c5", size = 56817, upload-time = "2025-12-11T08:11:04.182Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/1e/4e8dec1a49596497549f59036c8e9b3b18e9f2dfbb540a51e6f3ead9bcc9/websocket_client-1.9.0-py3-none-any.whl", hash = "sha256:a579efc637ce2324bbe38a7a74b0d88bdbc3abe1c95e6f750d0f736be7986dde", size = 55621, upload-time = "2025-12-11T08:11:01.553Z" }, -] - [[package]] name = "websockets" version = "13.1"