diff --git a/src/pipecat/serializers/exotel.py b/src/pipecat/serializers/exotel.py index abfe13ff1..62da5ef68 100644 --- a/src/pipecat/serializers/exotel.py +++ b/src/pipecat/serializers/exotel.py @@ -11,7 +11,6 @@ from typing import Optional from loguru import logger from pydantic import BaseModel -from pipecat.audio.utils import create_default_resampler from pipecat.frames.frames import ( AudioRawFrame, Frame, @@ -58,13 +57,12 @@ class ExotelFrameSerializer(FrameSerializer): params: Configuration parameters. """ self._stream_sid = stream_sid + self._call_sid = call_sid self._params = params or ExotelFrameSerializer.InputParams() self._exotel_sample_rate = self._params.exotel_sample_rate self._sample_rate = 0 # Pipeline input rate - self._resampler = create_default_resampler() - @property def type(self) -> FrameSerializerType: """Gets the serializer type. @@ -97,13 +95,8 @@ class ExotelFrameSerializer(FrameSerializer): answer = {"event": "clear", "streamSid": self._stream_sid} return json.dumps(answer) elif isinstance(frame, AudioRawFrame): - data = frame.audio - - # Resample the audio data - serialized_data = await self._resampler.resample( - data, frame.sample_rate, self._exotel_sample_rate - ) - payload = base64.b64encode(serialized_data).decode("ascii") + # Audio data is now directly used without resampling + payload = base64.b64encode(frame.audio).decode("ascii") answer = { "event": "media", @@ -132,18 +125,13 @@ class ExotelFrameSerializer(FrameSerializer): if message["event"] == "media": payload_base64 = message["media"]["payload"] - payload = base64.b64decode(payload_base64) - - deserialized_data = await self._resampler.resample( - payload, - self._exotel_sample_rate, - self._sample_rate, - ) + audio_data = base64.b64decode(payload_base64) + # Audio data is now directly used without resampling audio_frame = InputAudioRawFrame( - audio=deserialized_data, - num_channels=1, - sample_rate=self._sample_rate, + audio=audio_data, + num_channels=1, # Assuming mono audio from Exotel + sample_rate=self._sample_rate, # Use the configured pipeline input rate ) return audio_frame elif message["event"] == "dtmf":