pytorch / audio

Data manipulation and transformation for audio signal processing, powered by PyTorch
https://pytorch.org/audio
BSD 2-Clause "Simplified" License
2.43k stars 635 forks source link

frame offset + num frames to utilize http range header #3783

Open mogwai opened 2 months ago

mogwai commented 2 months ago

🚀 The feature

If load is called with a url e.g.

torchaudio.load(url, frame_offset=16000, num_frames=16000)

And the url supports range headers, is it not possible to only get the required bytes from the url??

Motivation, pitch

Would make it possible to load sections of large audio files quickly without having to pre cut them.

ae99 commented 3 days ago

When using FFMPEG backend (and passing a URL or FileLike) and interacting with the underlying StreamingMediaDecoder, FFMPEG only ends up reading first n bytes to get num_frames. As far I can tell it also can use range requests on the underlying URL if it knows the framelength or has an index, but most variable bitrate formats it ends up just manually seeking.