From 29b9dccc53357f9dea32fc995916ce0f5f09f915 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleix=20Conchillo=20Flaqu=C3=A9?= Date: Thu, 6 Feb 2025 09:01:03 -0800 Subject: [PATCH] serializers: don't update twilio/telnyx sample rates --- CHANGELOG.md | 7 ++++--- src/pipecat/serializers/telnyx.py | 6 ++---- src/pipecat/serializers/twilio.py | 6 ++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df74b782c..2cda9f663 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 resampled to the desired output sample rate. - Fixed an issue with the `TwilioFrameSerializer` and `TelnyxFrameSerializer` - where `frame.audio_out_sample_rate` was incorrectly used in place of - `frame.audio_in_sample_rate`, which caused audio input detection to fail when - using different input and output sample rates. + where `twilio_sample_rate` and `telnyx_sample_rate` were incorrectly + initialized to `audio_in_sample_rate`. Those values currently default to 8000 + and should be set manually from the serializer constructor if a different + value is needed. ## [0.0.55] - 2025-02-05 diff --git a/src/pipecat/serializers/telnyx.py b/src/pipecat/serializers/telnyx.py index df184cec3..cbf16a156 100644 --- a/src/pipecat/serializers/telnyx.py +++ b/src/pipecat/serializers/telnyx.py @@ -31,7 +31,7 @@ from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializer class TelnyxFrameSerializer(FrameSerializer): class InputParams(BaseModel): - telnyx_sample_rate: Optional[int] = None # Default Telnyx rate (8kHz) + telnyx_sample_rate: int = 8000 # Default Telnyx rate (8kHz) sample_rate: Optional[int] = None # Pipeline input rate inbound_encoding: str = "PCMU" outbound_encoding: str = "PCMU" @@ -48,7 +48,7 @@ class TelnyxFrameSerializer(FrameSerializer): params.inbound_encoding = inbound_encoding self._params = params - self._telnyx_sample_rate = 0 # Fixed rate for Telnyx (8kHz) + self._telnyx_sample_rate = self._params.telnyx_sample_rate self._sample_rate = 0 # Pipeline input rate self._resampler = create_default_resampler() @@ -58,8 +58,6 @@ class TelnyxFrameSerializer(FrameSerializer): return FrameSerializerType.TEXT async def setup(self, frame: StartFrame): - # Configure rates for input path: Telnyx (8kHz encoded) -> Pipeline (PCM) - self._telnyx_sample_rate = self._params.telnyx_sample_rate or frame.audio_in_sample_rate self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate async def serialize(self, frame: Frame) -> str | bytes | None: diff --git a/src/pipecat/serializers/twilio.py b/src/pipecat/serializers/twilio.py index 81f4d542d..e08920132 100644 --- a/src/pipecat/serializers/twilio.py +++ b/src/pipecat/serializers/twilio.py @@ -27,14 +27,14 @@ from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializer class TwilioFrameSerializer(FrameSerializer): class InputParams(BaseModel): - twilio_sample_rate: Optional[int] = None # Default Twilio rate (8kHz) + twilio_sample_rate: int = 8000 # Default Twilio rate (8kHz) sample_rate: Optional[int] = None # Pipeline input rate def __init__(self, stream_sid: str, params: InputParams = InputParams()): self._stream_sid = stream_sid self._params = params - self._twilio_sample_rate = 0 # Fixed rate for Twilio (8kHz) + self._twilio_sample_rate = self._params.twilio_sample_rate self._sample_rate = 0 # Pipeline input rate self._resampler = create_default_resampler() @@ -44,8 +44,6 @@ class TwilioFrameSerializer(FrameSerializer): return FrameSerializerType.TEXT async def setup(self, frame: StartFrame): - # Configure rates for input path: Twilio (8kHz μ-law) -> Pipeline (PCM) - self._twilio_sample_rate = self._params.twilio_sample_rate or frame.audio_in_sample_rate self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate async def serialize(self, frame: Frame) -> str | bytes | None: