def _load_feature(batch): """ Load acoustic feature from files. The features have been prepared in previous step, usualy by Kaldi. Args: batch: a list of tuple (wav id , feature ark path). Returns: (keys, feats, labels) """ keys = [] feats = [] lengths = [] for i, x in enumerate(batch): try: mat = kaldi_io.read_mat(x[1]) feats.append(mat) keys.append(x[0]) lengths.append(mat.shape[0]) except (Exception): # logging.warn('read utterance {} error'.format(x[0])) pass # Sort it because sorting is required in pack/pad operation order = np.argsort(lengths)[::-1] sorted_keys = [keys[i] for i in order] sorted_feats = [feats[i] for i in order] labels = [x[2].split() for x in batch] labels = [np.fromiter(map(int, x), dtype=np.int32) for x in labels] sorted_labels = [labels[i] for i in order] return sorted_keys, sorted_feats, sorted_labels
def _load_from_file(batch): keys = [] feats = [] lengths = [] for i, x in enumerate(batch): try: mat = kaldi_io.read_mat(x[1]) feats.append(mat) keys.append(x[0]) lengths.append(mat.shape[0]) except (Exception): # logging.warn('read utterance {} error'.format(x[0])) pass # Sort it because sorting is required in pack/pad operation order = np.argsort(lengths)[::-1] sorted_keys = [keys[i] for i in order] sorted_feats = [feats[i] for i in order] labels = [x[2].split() for x in batch] labels = [np.fromiter(map(int, x), dtype=np.int32) for x in labels] sorted_labels = [labels[i] for i in order] return sorted_keys, sorted_feats, sorted_labels