    def __getitem__(self, index):
        """
        single_feature:
            wav: (T)
            wav_len: int
            target_len: int
            mask: (n_frames, 1)
            spk_id: (1)
        """
        utt_item = self.metadata[index]

        wav_path = utt_item["Path"]
        wav, _ = librosa.load(wav_path, sr=self.sample_rate)
        # wav: (T)
        wav = torch.as_tensor(wav, dtype=torch.float32)
        wav_len = len(wav)
        # mask: (n_frames, 1)
        frame_len = wav_len // self.hop_size
        mask = torch.ones(frame_len, 1, dtype=torch.long)

        single_feature = {
            "wav": wav,
            "wav_len": wav_len,
            "target_len": frame_len,
            "mask": mask,
        }

        if self.cfg.preprocess.use_spkid:
            utt = "{}_{}".format(utt_item["Dataset"], utt_item["Uid"])
            single_feature["spk_id"] = torch.tensor(
                [self.spk2id[self.utt2spk[utt]]], dtype=torch.int32
            )

        return single_feature
single_feature:
wav: (T)
wav_len: int
target_len: int
mask: (n_frames, 1)
spk_id: (1)
models/base/base_dataset.py