Shortcuts

Source code for torchaudio.prototype.datasets.musan

from pathlib import Path
from typing import Tuple, Union

import torch
from torch.utils.data import Dataset
from torchaudio.datasets.utils import _load_waveform


_SUBSETS = ["music", "noise", "speech"]
_SAMPLE_RATE = 16_000


[docs]class Musan(Dataset): r"""*MUSAN* :cite:`musan2015` dataset. Args: root (str or Path): Root directory where the dataset's top-level directory exists. subset (str): Subset of the dataset to use. Options: [``"music"``, ``"noise"``, ``"speech"``]. """ def __init__(self, root: Union[str, Path], subset: str): if subset not in _SUBSETS: raise ValueError(f"Invalid subset '{subset}' given. Please provide one of {_SUBSETS}") subset_path = Path(root) / subset self._walker = [str(p) for p in subset_path.glob("*/*.*")]
[docs] def get_metadata(self, n: int) -> Tuple[str, int, str]: r"""Get metadata for the n-th sample in the dataset. Returns filepath instead of waveform, but otherwise returns the same fields as :py:func:`__getitem__`. Args: n (int): Index of sample to be loaded. Returns: (str, int, str): str Path to audio. int Sample rate. str File name. """ audio_path = self._walker[n] return audio_path, _SAMPLE_RATE, Path(audio_path).name
[docs] def __getitem__(self, n: int) -> Tuple[torch.Tensor, int, str]: r"""Return the n-th sample in the dataset. Args: n (int): Index of sample to be loaded. Returns: (torch.Tensor, int, str): torch.Tensor Waveform. int Sample rate. str File name. """ audio_path, sample_rate, filename = self.get_metadata(n) path = Path(audio_path) return _load_waveform(path.parent, path.name, sample_rate), sample_rate, filename
def __len__(self) -> int: return len(self._walker)

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources