diff --git a/src/torchaudio/__init__.py b/src/torchaudio/__init__.py index 6e2a965297..e9c5124383 100644 --- a/src/torchaudio/__init__.py +++ b/src/torchaudio/__init__.py @@ -83,16 +83,21 @@ def load( - Not all audio formats supported by torchaudio backends may be supported by TorchCodec. """ - return load_with_torchcodec( - uri, - frame_offset=frame_offset, - num_frames=num_frames, - normalize=normalize, - channels_first=channels_first, - format=format, - buffer_size=buffer_size, - backend=backend, - ) + try: + return load_with_torchcodec( + uri, + frame_offset=frame_offset, + num_frames=num_frames, + normalize=normalize, + channels_first=channels_first, + format=format, + buffer_size=buffer_size, + backend=backend, + ) + except Exception as e: + if str(uri) not in str(e): + raise type(e)(f"Failed to load audio from {uri}: {e}") from e + raise def save( diff --git a/src/torchaudio/_torchcodec.py b/src/torchaudio/_torchcodec.py index a785fe50ad..980610ae6c 100644 --- a/src/torchaudio/_torchcodec.py +++ b/src/torchaudio/_torchcodec.py @@ -120,14 +120,14 @@ def load_with_torchcodec( # Get sample rate from metadata sample_rate = decoder.metadata.sample_rate if sample_rate is None: - raise RuntimeError("Unable to determine sample rate from audio metadata") + raise RuntimeError(f"Unable to determine sample rate from audio metadata for {uri}") # Decode the entire file first, then subsample manually # This is the simplest approach since torchcodec uses time-based indexing try: audio_samples = decoder.get_all_samples() except Exception as e: - raise RuntimeError(f"Failed to decode audio samples: {e}") from e + raise RuntimeError(f"Failed to decode audio samples from {uri}: {e}") from e data = audio_samples.data