|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from pathlib import Path |
|
|
|
|
|
from lhotse import CutSet, load_manifest |
|
|
from lhotse.dataset import K2SpeechRecognitionDataset, SimpleCutSampler |
|
|
from lhotse.dataset.collation import collate_custom_field |
|
|
from torch.utils.data import DataLoader |
|
|
|
|
|
ICEFALL_DIR = Path(__file__).resolve().parent.parent |
|
|
egs_dir = ICEFALL_DIR / "egs/librispeech/ASR" |
|
|
lang_dir = egs_dir / "data/lang_bpe_500" |
|
|
cuts_json = egs_dir / "data/ali/cuts_dev-clean.json.gz" |
|
|
|
|
|
|
|
|
def data_exists(): |
|
|
return cuts_json.exists() and lang_dir.exists() |
|
|
|
|
|
|
|
|
def get_dataloader(): |
|
|
cuts = load_manifest(cuts_json) |
|
|
print(cuts[0]) |
|
|
cuts = cuts.with_features_path_prefix(egs_dir) |
|
|
sampler = SimpleCutSampler( |
|
|
cuts, |
|
|
max_duration=10, |
|
|
shuffle=False, |
|
|
) |
|
|
|
|
|
dataset = K2SpeechRecognitionDataset(return_cuts=True) |
|
|
|
|
|
dl = DataLoader( |
|
|
dataset, |
|
|
sampler=sampler, |
|
|
batch_size=None, |
|
|
num_workers=1, |
|
|
persistent_workers=False, |
|
|
) |
|
|
return dl |
|
|
|
|
|
|
|
|
def test(): |
|
|
if not data_exists(): |
|
|
return |
|
|
dl = get_dataloader() |
|
|
for batch in dl: |
|
|
supervisions = batch["supervisions"] |
|
|
cuts = supervisions["cut"] |
|
|
labels_alignment, labels_alignment_length = collate_custom_field( |
|
|
CutSet.from_cuts(cuts), "labels_alignment" |
|
|
) |
|
|
|
|
|
( |
|
|
aux_labels_alignment, |
|
|
aux_labels_alignment_length, |
|
|
) = collate_custom_field(CutSet.from_cuts(cuts), "aux_labels_alignment") |
|
|
|
|
|
print(labels_alignment) |
|
|
print(aux_labels_alignment) |
|
|
print(labels_alignment_length) |
|
|
print(aux_labels_alignment_length) |
|
|
break |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
test() |
|
|
|