refactor: rename audio_packet_bytes to fixed_audio_packet_size
This commit is contained in:
@@ -1 +1,2 @@
|
|||||||
- Enhanced `FastAPIWebsocketTransport` with optional protocol-level audio packetization to support media endpoints requiring strict framing and real-time pacing.
|
- Enhanced `FastAPIWebsocketTransport` with optional protocol-level audio packetization to support media endpoints requiring strict framing and real-time pacing.
|
||||||
|
- Renamed `audio_packet_bytes` to `fixed_audio_packet_size` for clearer audio framing semantics.
|
||||||
|
|||||||
@@ -56,14 +56,14 @@ class FastAPIWebsocketParams(TransportParams):
|
|||||||
add_wav_header: Whether to add WAV headers to audio frames.
|
add_wav_header: Whether to add WAV headers to audio frames.
|
||||||
serializer: Frame serializer for encoding/decoding messages.
|
serializer: Frame serializer for encoding/decoding messages.
|
||||||
session_timeout: Session timeout in seconds, None for no timeout.
|
session_timeout: Session timeout in seconds, None for no timeout.
|
||||||
audio_packet_bytes: Optional fixed-size packetization for raw PCM audio payloads.
|
fixed_audio_packet_size: Optional fixed-size packetization for raw PCM audio payloads.
|
||||||
Useful when the remote WebSocket media endpoint requires strict audio framing.
|
Useful when the remote WebSocket media endpoint requires strict audio framing.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
add_wav_header: bool = False
|
add_wav_header: bool = False
|
||||||
serializer: Optional[FrameSerializer] = None
|
serializer: Optional[FrameSerializer] = None
|
||||||
session_timeout: Optional[int] = None
|
session_timeout: Optional[int] = None
|
||||||
audio_packet_bytes: Optional[int] = None
|
fixed_audio_packet_size: Optional[int] = None
|
||||||
|
|
||||||
|
|
||||||
class FastAPIWebsocketCallbacks(BaseModel):
|
class FastAPIWebsocketCallbacks(BaseModel):
|
||||||
@@ -366,7 +366,7 @@ class FastAPIWebsocketOutputTransport(BaseOutputTransport):
|
|||||||
# Buffer for optional protocol-level audio packetization.
|
# Buffer for optional protocol-level audio packetization.
|
||||||
# Some serializers may emit arbitrarily sized raw PCM payloads, while
|
# Some serializers may emit arbitrarily sized raw PCM payloads, while
|
||||||
# certain downstream transports or media endpoints require audio to be
|
# certain downstream transports or media endpoints require audio to be
|
||||||
# sent in fixed-size frames. When `params.audio_packet_bytes` is set,
|
# sent in fixed-size frames. When `params.fixed_audio_packet_size` is set,
|
||||||
# this buffer accumulates outgoing audio until a full packet can be
|
# this buffer accumulates outgoing audio until a full packet can be
|
||||||
# emitted, preserving any remainder for subsequent sends.
|
# emitted, preserving any remainder for subsequent sends.
|
||||||
self._audio_send_buffer = bytearray()
|
self._audio_send_buffer = bytearray()
|
||||||
@@ -429,7 +429,7 @@ class FastAPIWebsocketOutputTransport(BaseOutputTransport):
|
|||||||
|
|
||||||
if isinstance(frame, InterruptionFrame):
|
if isinstance(frame, InterruptionFrame):
|
||||||
# Drop any partially buffered audio to avoid replaying stale PCM
|
# Drop any partially buffered audio to avoid replaying stale PCM
|
||||||
if self._params.audio_packet_bytes:
|
if self._params.fixed_audio_packet_size:
|
||||||
self._audio_send_buffer.clear()
|
self._audio_send_buffer.clear()
|
||||||
|
|
||||||
await self._write_frame(frame)
|
await self._write_frame(frame)
|
||||||
@@ -497,8 +497,8 @@ class FastAPIWebsocketOutputTransport(BaseOutputTransport):
|
|||||||
if payload:
|
if payload:
|
||||||
# Optional protocol-level audio packetization:
|
# Optional protocol-level audio packetization:
|
||||||
# If a downstream WebSocket media endpoint requires fixed-size PCM frames,
|
# If a downstream WebSocket media endpoint requires fixed-size PCM frames,
|
||||||
# configure params.audio_packet_bytes (e.g. 640 for 20ms @ 16kHz PCM16 mono).
|
# configure params.fixed_audio_packet_size (e.g. 640 for 20ms @ 16kHz PCM16 mono).
|
||||||
packet_bytes = self._params.audio_packet_bytes
|
packet_bytes = self._params.fixed_audio_packet_size
|
||||||
|
|
||||||
if packet_bytes and isinstance(payload, (bytes, bytearray)):
|
if packet_bytes and isinstance(payload, (bytes, bytearray)):
|
||||||
self._audio_send_buffer.extend(bytes(payload))
|
self._audio_send_buffer.extend(bytes(payload))
|
||||||
|
|||||||
Reference in New Issue
Block a user