mirror of
https://github.com/huggingface/lerobot.git
synced 2026-07-24 10:16:09 +00:00
feat(torchcodec): setting torchcodec as default as the new official release supports audio decoding
This commit is contained in:
@@ -41,7 +41,7 @@ def decode_audio(
|
|||||||
audio_path: Path | str,
|
audio_path: Path | str,
|
||||||
timestamps: list[float],
|
timestamps: list[float],
|
||||||
duration: float,
|
duration: float,
|
||||||
backend: str | None = "torchaudio",
|
backend: str | None = "torchcodec",
|
||||||
) -> torch.Tensor:
|
) -> torch.Tensor:
|
||||||
"""
|
"""
|
||||||
Decodes audio using the specified backend.
|
Decodes audio using the specified backend.
|
||||||
@@ -49,7 +49,7 @@ def decode_audio(
|
|||||||
audio_path (Path): Path to the audio file.
|
audio_path (Path): Path to the audio file.
|
||||||
timestamps (list[float]): List of (starting) timestamps to extract audio chunks.
|
timestamps (list[float]): List of (starting) timestamps to extract audio chunks.
|
||||||
duration (float): Duration of the audio chunks in seconds.
|
duration (float): Duration of the audio chunks in seconds.
|
||||||
backend (str, optional): Backend to use for decoding. Defaults to "torchaudio".
|
backend (str, optional): Backend to use for decoding. Defaults to "torchcodec".
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
torch.Tensor: Decoded audio chunks.
|
torch.Tensor: Decoded audio chunks.
|
||||||
@@ -57,8 +57,7 @@ def decode_audio(
|
|||||||
Currently supports torchaudio.
|
Currently supports torchaudio.
|
||||||
"""
|
"""
|
||||||
if backend == "torchcodec":
|
if backend == "torchcodec":
|
||||||
# return decode_audio_torchcodec(audio_path, timestamps, duration) #TODO(CarolinePascal): uncomment this line at next torchcodec release
|
return decode_audio_torchcodec(audio_path, timestamps, duration)
|
||||||
raise ValueError("torchcodec backend is not available yet.")
|
|
||||||
elif backend == "torchaudio":
|
elif backend == "torchaudio":
|
||||||
return decode_audio_torchaudio(audio_path, timestamps, duration)
|
return decode_audio_torchaudio(audio_path, timestamps, duration)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -757,7 +757,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
download_audio (bool, optional): Flag to download the audio. Defaults to True.
|
download_audio (bool, optional): Flag to download the audio. Defaults to True.
|
||||||
video_backend (str | None, optional): Video backend to use for decoding videos. Defaults to torchcodec when available int the platform; otherwise, defaults to 'pyav'.
|
video_backend (str | None, optional): Video backend to use for decoding videos. Defaults to torchcodec when available int the platform; otherwise, defaults to 'pyav'.
|
||||||
You can also use the 'pyav' decoder used by Torchvision, which used to be the default option, or 'video_reader' which is another decoder of Torchvision.
|
You can also use the 'pyav' decoder used by Torchvision, which used to be the default option, or 'video_reader' which is another decoder of Torchvision.
|
||||||
audio_backend (str | None, optional): Audio backend to use for decoding audio. Defaults to 'torchaudio'.
|
audio_backend (str | None, optional): Audio backend to use for decoding audio. Defaults to 'torchcodec'.
|
||||||
batch_encoding_size (int, optional): Number of episodes to accumulate before batch encoding videos.
|
batch_encoding_size (int, optional): Number of episodes to accumulate before batch encoding videos.
|
||||||
Set to 1 for immediate encoding (default), or higher for batched encoding. Defaults to 1.
|
Set to 1 for immediate encoding (default), or higher for batched encoding. Defaults to 1.
|
||||||
vcodec (str, optional): Video codec for encoding videos during recording. Options: 'h264', 'hevc',
|
vcodec (str, optional): Video codec for encoding videos during recording. Options: 'h264', 'hevc',
|
||||||
@@ -776,7 +776,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
self.revision = revision if revision else CODEBASE_VERSION
|
self.revision = revision if revision else CODEBASE_VERSION
|
||||||
self.video_backend = video_backend if video_backend else get_safe_default_codec()
|
self.video_backend = video_backend if video_backend else get_safe_default_codec()
|
||||||
self.audio_backend = (
|
self.audio_backend = (
|
||||||
audio_backend if audio_backend else "torchaudio"
|
audio_backend if audio_backend else "torchcodec"
|
||||||
) # Waiting for torchcodec release #TODO(CarolinePascal)
|
) # Waiting for torchcodec release #TODO(CarolinePascal)
|
||||||
self.delta_indices = None
|
self.delta_indices = None
|
||||||
self.batch_encoding_size = batch_encoding_size
|
self.batch_encoding_size = batch_encoding_size
|
||||||
@@ -1950,7 +1950,7 @@ class LeRobotDataset(torch.utils.data.Dataset):
|
|||||||
obj._recorded_frames = 0
|
obj._recorded_frames = 0
|
||||||
obj._writer_closed_for_reading = False
|
obj._writer_closed_for_reading = False
|
||||||
obj.audio_backend = (
|
obj.audio_backend = (
|
||||||
audio_backend if audio_backend is not None else "torchaudio"
|
audio_backend if audio_backend is not None else "torchcodec"
|
||||||
) # Waiting for torchcodec release #TODO(CarolinePascal)
|
) # Waiting for torchcodec release #TODO(CarolinePascal)
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user