'Featurize a minibatch of audio, zero pad them and return a dictionary
Params:
audio_paths (list(str)): List of paths to audio files
texts (list(str)): List of texts corresponding to the audio files
Returns:
dict: See below for contents'

def prepare_minibatch(self, audio_paths, texts, overwrite=False, is_bi_graphemes=False, seq_length=(-1), save_feature_as_csvfile=False):

    assert (len(audio_paths) == len(texts)), 'Inputs    and    outputs    to    the    network    must    be    of    the    same    number'
    features = [self.featurize(a, overwrite=overwrite, save_feature_as_csvfile=save_feature_as_csvfile) for a in audio_paths]
    input_lengths = [f.shape[0] for f in features]
    feature_dim = features[0].shape[1]
    mb_size = len(features)
    if (seq_length == (-1)):
        x = np.zeros((mb_size, self.max_seq_length, feature_dim))
    else:
        x = np.zeros((mb_size, seq_length, feature_dim))
    y = np.zeros((mb_size, self.max_label_length))
    labelUtil = LabelUtil.getInstance()
    label_lengths = []
    for i in range(mb_size):
        feat = features[i]
        feat = self.normalize(feat)
        x[i, :feat.shape[0], :] = feat
        if is_bi_graphemes:
            label = generate_bi_graphemes_label(texts[i])
            label = labelUtil.convert_bi_graphemes_to_num(label)
            y[i, :len(label)] = label
        else:
            label = labelUtil.convert_word_to_num(texts[i])
            y[i, :len(texts[i])] = label
        label_lengths.append(len(label))
    return {'x': x, 'y': y, 'texts': texts, 'input_lengths': input_lengths, 'label_lengths': label_lengths}
