From e6203954161b3e7d369e3dc86a9d4dbc09b43e4d Mon Sep 17 00:00:00 2001 From: CarolinePascal Date: Fri, 23 May 2025 16:04:28 +0200 Subject: [PATCH] feat(init audio buffer): adding a separate parameter for the initial audio buffer size --- src/lerobot/datasets/lerobot_dataset.py | 3 ++- src/lerobot/datasets/utils.py | 1 + src/lerobot/scripts/lerobot_record.py | 9 +++++++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/lerobot/datasets/lerobot_dataset.py b/src/lerobot/datasets/lerobot_dataset.py index b68ab6ffd..c9f74dab5 100644 --- a/src/lerobot/datasets/lerobot_dataset.py +++ b/src/lerobot/datasets/lerobot_dataset.py @@ -41,6 +41,7 @@ from lerobot.datasets.utils import ( DEFAULT_EPISODES_PATH, DEFAULT_FEATURES, DEFAULT_IMAGE_PATH, + DEFAULT_INITIAL_AUDIO_BUFFER_DURATION, DEFAULT_RAW_AUDIO_PATH, INFO_PATH, _validate_feature_names, @@ -482,7 +483,7 @@ class LeRobotDatasetMetadata: if not self.features[key].get("info", None): audio_path = self.root / self.audio_path.format(audio_key=key, chunk_index=0, file_index=0) self.info["features"][key]["info"] = get_audio_info(audio_path) - self.info["features"][key]["info"]["start_time_s"] = DEFAULT_AUDIO_CHUNK_DURATION + self.info["features"][key]["info"]["start_time_s"] = DEFAULT_INITIAL_AUDIO_BUFFER_DURATION def update_chunk_settings( self, diff --git a/src/lerobot/datasets/utils.py b/src/lerobot/datasets/utils.py index e5d0248e7..fc312b3db 100644 --- a/src/lerobot/datasets/utils.py +++ b/src/lerobot/datasets/utils.py @@ -71,6 +71,7 @@ DEFAULT_IMAGE_PATH = "images/{image_key}/episode-{episode_index:06d}/frame-{fram DEFAULT_RAW_AUDIO_PATH = "raw_audio/{audio_key}/episode_{episode_index:06d}.wav" DEFAULT_AUDIO_CHUNK_DURATION = 0.5 # seconds +DEFAULT_INITIAL_AUDIO_BUFFER_DURATION = 1.0 # seconds LEGACY_EPISODES_PATH = "meta/episodes.jsonl" LEGACY_EPISODES_STATS_PATH = "meta/episodes_stats.jsonl" diff --git a/src/lerobot/scripts/lerobot_record.py b/src/lerobot/scripts/lerobot_record.py index 2e121c9b0..b61179cfa 100644 --- a/src/lerobot/scripts/lerobot_record.py +++ b/src/lerobot/scripts/lerobot_record.py @@ -84,7 +84,12 @@ from lerobot.configs.policies import PreTrainedConfig from lerobot.datasets.image_writer import safe_stop_image_writer from lerobot.datasets.lerobot_dataset import LeRobotDataset from lerobot.datasets.pipeline_features import aggregate_pipeline_dataset_features, create_initial_features -from lerobot.datasets.utils import DEFAULT_AUDIO_CHUNK_DURATION, build_dataset_frame, combine_feature_dicts +from lerobot.datasets.utils import ( + DEFAULT_AUDIO_CHUNK_DURATION, + DEFAULT_INITIAL_AUDIO_BUFFER_DURATION, + build_dataset_frame, + combine_feature_dicts, +) from lerobot.datasets.video_utils import VideoEncodingManager from lerobot.microphones.utils import ( async_microphones_start_recording, @@ -345,7 +350,7 @@ def record_loop( # Fill audio buffers if needed if robot.microphones: - busy_wait(DEFAULT_AUDIO_CHUNK_DURATION) + busy_wait(DEFAULT_INITIAL_AUDIO_BUFFER_DURATION) timestamp = 0 start_episode_t = time.perf_counter()