feat: add max recording limit

This commit is contained in:
Abhishek Kumar 2025-11-29 21:37:15 +07:00
parent cf4870fe38
commit 61a74292ca
4 changed files with 11 additions and 4 deletions

View file

@ -33,7 +33,8 @@ class AudioConfig:
transport_out_sample_rate: int
vad_sample_rate: int = 16000 # VAD typically resamples internally
pipeline_sample_rate: Optional[int] = None # If None, uses transport rates
buffer_size_seconds: float = 1.0 # This is how frequenly we will call merge_auido
buffer_size_seconds: float = 5.0 # This is how frequenly we will call merge_auido
max_recording_duration_seconds: float = 300.0 # 5 minutes max recording duration
def __post_init__(self):
# Validate VAD sample rate
@ -75,6 +76,12 @@ class AudioConfig:
"""Calculate buffer size in samples based on pipeline sample rate."""
return int(self.pipeline_sample_rate * self.buffer_size_seconds)
@property
def max_recording_bytes(self) -> int:
"""Calculate max recording size in bytes based on pipeline sample rate and duration."""
# 2 bytes per sample (16-bit PCM)
return int(self.pipeline_sample_rate * 2 * self.max_recording_duration_seconds)
def create_audio_config(transport_type: str) -> AudioConfig:
"""Create audio configuration based on transport type.

View file

@ -27,6 +27,7 @@ def create_pipeline_components(audio_config: AudioConfig, engine: "PipecatEngine
audio_buffer = AudioBuffer(
sample_rate=audio_config.pipeline_sample_rate,
buffer_size=audio_config.buffer_size_bytes,
max_recording_bytes=audio_config.max_recording_bytes,
)
# Create synchronizer for merged audio (outside pipeline)