Skip to content

South Peak

Choose a tag to compare

@pzelasko pzelasko released this 06 Apr 01:25

Recipes

New corpora

Existing recipes improvements

New features

Support for custom attributes in Cuts

This feature allows attaching arbitrary type of data to cuts: alignments, multiple feature sets, etc.

  • Array and TemporalArray manifests (generalization of Features for arbitrary data) by @pzelasko in #458
  • Support custom MonoCut attrs (with special support for loading Arrays) by @pzelasko in #459
  • Collation of custom cut fields into PyTorch tensors by @pzelasko in #476
  • custom_collate_field pads to the longest read array instead of using CutSet.pad() by @pzelasko in #482
  • Add with_path_prefix to Array and TemporalArray by @pzelasko in #499
  • Collation promotes custom field int sequences to int64 by @pzelasko in #507
  • More flexibility in mixing cuts with custom attributes by @pzelasko in #642

Data augmentation

  • Reverberation using room impulse response by @desh2608 in #477
  • Add early reverb option for RIR-based augmentation by @desh2608 in #524
  • Options for handling multi-channel RIR by @desh2608 in #621

"Lazy cuts" (less memory / faster execution)

  • Option to create a CutSet lazily when everything is sorted on recording IDs by @pzelasko in #493
  • Enable adding/combining of lazy manifests by @pzelasko in #495
  • Resumable batch feature extraction with reduced memory usage by @pzelasko in #508
  • DynamicBucketingSampler: on-the-fly bucketing with restricted memory usage by @pzelasko in #517
  • DynamicCutSampler (like DynamicBucketingSampler but without bucketing) by @pzelasko in #579
  • Custom binary feature storage format by @pzelasko in #522
  • lhotse split-lazy and CutSet.split_lazy() for memory-efficient splits by @pzelasko in #558
  • Optional dependency orjson for up to 50% JSONL reading by @pzelasko in #563
  • CutSet multiplexing by @pzelasko in #565
  • stop_early arg for CutSet.mux by @pzelasko in #585
  • Option to set shuffle buffer size in dynamic samplers by @pzelasko in #587
  • WebDataset integration for optimized sequential I/O by @pzelasko in #582
  • Add WebDataset export CLI and a fault_tolerant option by @pzelasko in #599
  • Add WebdatasetWriter for iterative cut writing by @pzelasko in #602
  • More lazily evaluated methods: map, filter, repeat, shuffle by @pzelasko in #626

New and refreshed APIs

Improved Kaldi import/export

PyTorch API

Documentation

  • Refresh tutorials in examples + quality of life improvements in code by @pzelasko in #617
  • Tutorial for Lhotse's WebDataset integration by @pzelasko in #619
  • Add links in tutorials, fix some issues with lazy manifests by @pzelasko in #620
  • Diagrams illustrating the architectures of dataloading solutions by @pzelasko in #622
  • Tutorial about combining multiple datasets by @pzelasko in #624

Random/Other

Bug fixes

  • Force single-threaded execution for ffmpeg by @pzelasko in #481
  • Minor change in Reverb serialization by @desh2608 in #484
  • Fixes and tests for OnTheFlyFeatures with some non-default feature extractors by @pzelasko in #492
  • Audio duration mismatch tolerance API by @pzelasko in #491
  • Let kaldifeat handle the device of input waves. by @csukuangfj in #498
  • Minor fix for RIR augmentation by @desh2608 in #501
  • Fix reading resampled OPUS files by @pzelasko in #509
  • Fix missing lhotse.testing package when installing lhotse by @pzelasko in #511
  • Add assertion for non-negative offset for truncate by @desh2608 in #512
  • Possible workaround for HDF5 growing memory issue by @pzelasko in #527
  • addressing etree error under py3.9, resolves #535 by @jtrmal in #536
  • [kaldi] Fixed wav source for command type by @desh2608 in #537
  • Fix collate_audio after adding fault_tolerant arg by @pzelasko in #540
  • Fix the official example by @pzelasko in #550
  • Fix mixing with SNR with PaddingCut as the first track in MixedCut by @pzelasko in #547
  • Fix trim_to_supervisions(keep_overlapping=False) for completely overlapping cuts by @pzelasko in #553
  • Fix randomness in DynamicBucketingSampler by @pzelasko in #562
  • Add warning if num_jobs >1 and torch.num_threads >1 by @LasseWolter in #561
  • Workaround for Python's gzip not handling "trailing garbage" unlike the CLI program by @pzelasko in #564
  • Account for duration param in extract_from_recording_and_store in lhotse/features/base.py by @armusc in #572
  • Quick fix for an edge case in CutSet.mix by @pzelasko in #570
  • Update .is_lazy property to account for new types of lazy iterators by @pzelasko in #576
  • Fix array lengths in custom collation by @pzelasko in #577
  • Fix CutSet sample, and add mix padding by @desh2608 in #589
  • Fix for MonoCut from_dict by @desh2608 in #591
  • Fix start/offset when moving cut/features/array data to memory by @pzelasko in #597
  • fix resample to work with webdataset i.e. binary audio source by @oplatek in #609
  • Fix an assertion in torchaudio_load by @pzelasko in #613
  • Fixes for PyTorch 1.11 by @pzelasko in #614
  • Fix fault_tolerant audio loading option for mixed cuts with zero energy by @pzelasko in #615
  • WIP: fix fault tolerant load audio by @oplatek in #595
  • Add a check for detecting wrong TemporalArray start attribute in long recordings by @pzelasko in #623
  • Fix .subset(first=...) for lazy manifests without len by @pzelasko in #625
  • Fix typos and update doc. by @csukuangfj in #630
  • Simplify LazyJsonlIterator and fix TimeConstraint equality by @pzelasko in #632
  • Avoid re-encoding in move_to_memory by @pzelasko in #636
  • Fix for deserializing arrays with storage_path=None by @pzelasko in #637
  • Fix tests by @pzelasko in #638
  • Fix probabilistic decision condition error of cutset input transform. by @drawfish in #635
  • Suppress any type of exception in fault tolerant audio reading by @pzelasko in #641
  • Fix padding cuts with custom attrs by @pzelasko in #643
  • Fix rank/world_size settings for ZipSampler and RoundRobinSampler by @pzelasko in #654

New Contributors

Full Changelog: v0.12...v1.0