From 1a146c2a64a0bcc4edeaed5d1b6084b60606c9ea Mon Sep 17 00:00:00 2001 From: Filipi Fuchter Date: Fri, 11 Jul 2025 10:15:09 -0300 Subject: [PATCH] Not serializing a JSON in case we have no audio. --- src/pipecat/serializers/exotel.py | 4 ++++ src/pipecat/serializers/plivo.py | 4 ++++ src/pipecat/serializers/telnyx.py | 4 ++++ src/pipecat/serializers/twilio.py | 10 +++++----- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/pipecat/serializers/exotel.py b/src/pipecat/serializers/exotel.py index 811146d60..3fd2fb92d 100644 --- a/src/pipecat/serializers/exotel.py +++ b/src/pipecat/serializers/exotel.py @@ -108,6 +108,10 @@ class ExotelFrameSerializer(FrameSerializer): serialized_data = await self._output_resampler.resample( data, frame.sample_rate, self._exotel_sample_rate ) + if serialized_data is None or len(serialized_data) == 0: + # Ignoring in case we don't have audio + return None + payload = base64.b64encode(serialized_data).decode("ascii") answer = { diff --git a/src/pipecat/serializers/plivo.py b/src/pipecat/serializers/plivo.py index 90b45bf3e..11855d850 100644 --- a/src/pipecat/serializers/plivo.py +++ b/src/pipecat/serializers/plivo.py @@ -132,6 +132,10 @@ class PlivoFrameSerializer(FrameSerializer): serialized_data = await pcm_to_ulaw( data, frame.sample_rate, self._plivo_sample_rate, self._output_resampler ) + if serialized_data is None or len(serialized_data) == 0: + # Ignoring in case we don't have audio + return None + payload = base64.b64encode(serialized_data).decode("utf-8") answer = { "event": "playAudio", diff --git a/src/pipecat/serializers/telnyx.py b/src/pipecat/serializers/telnyx.py index 435be5704..bf8d5d69f 100644 --- a/src/pipecat/serializers/telnyx.py +++ b/src/pipecat/serializers/telnyx.py @@ -155,6 +155,10 @@ class TelnyxFrameSerializer(FrameSerializer): else: raise ValueError(f"Unsupported encoding: {self._params.inbound_encoding}") + if serialized_data is None or len(serialized_data) == 0: + # Ignoring in case we don't have audio + return None + payload = base64.b64encode(serialized_data).decode("utf-8") answer = { "event": "media", diff --git a/src/pipecat/serializers/twilio.py b/src/pipecat/serializers/twilio.py index 5a5a9d0c2..7679e8721 100644 --- a/src/pipecat/serializers/twilio.py +++ b/src/pipecat/serializers/twilio.py @@ -13,11 +13,7 @@ from typing import Optional from loguru import logger from pydantic import BaseModel -from pipecat.audio.utils import ( - create_stream_resampler, - pcm_to_ulaw, - ulaw_to_pcm, -) +from pipecat.audio.utils import create_stream_resampler, pcm_to_ulaw, ulaw_to_pcm from pipecat.frames.frames import ( AudioRawFrame, CancelFrame, @@ -136,6 +132,10 @@ class TwilioFrameSerializer(FrameSerializer): serialized_data = await pcm_to_ulaw( data, frame.sample_rate, self._twilio_sample_rate, self._output_resampler ) + if serialized_data is None or len(serialized_data) == 0: + # Ignoring in case we don't have audio + return None + payload = base64.b64encode(serialized_data).decode("utf-8") answer = { "event": "media",