diff --git a/src/pipecat/serializers/twilio.py b/src/pipecat/serializers/twilio.py index 71ac60da5..5a5a9d0c2 100644 --- a/src/pipecat/serializers/twilio.py +++ b/src/pipecat/serializers/twilio.py @@ -13,7 +13,11 @@ 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, @@ -235,6 +239,10 @@ class TwilioFrameSerializer(FrameSerializer): deserialized_data = await ulaw_to_pcm( payload, self._twilio_sample_rate, self._sample_rate, self._input_resampler ) + if deserialized_data is None or len(deserialized_data) == 0: + # Ignoring in case we don't have audio + return None + audio_frame = InputAudioRawFrame( audio=deserialized_data, num_channels=1, sample_rate=self._sample_rate ) diff --git a/src/pipecat/services/stt_service.py b/src/pipecat/services/stt_service.py index 5aebe10f3..104be4810 100644 --- a/src/pipecat/services/stt_service.py +++ b/src/pipecat/services/stt_service.py @@ -152,6 +152,13 @@ class STTService(AIService): else: self._user_id = "" + if not frame.audio: + # Ignoring in case we don't have audio to transcribe. + logger.warning( + f"Empty audio frame received for STT service: {self.name} {frame.num_frames}" + ) + return + await self.process_generator(self.run_stt(frame.audio)) async def process_frame(self, frame: Frame, direction: FrameDirection):