def random_subset_by_duration(self, relative_duration, balance_labels=False, label_list_ids=None):
        """
        Create a subview of random utterances with a approximate duration relative to the full corpus.
        Random utterances are selected so that the sum of all utterance durations
        equals to the relative duration of the full corpus.

        Args:
            relative_duration (float): A value between 0 and 1. (e.g. 0.5 will create a subset with approximately
                                       50% of the full corpus duration)
            balance_labels (bool): If True, the labels of the selected utterances are balanced as far as possible.
                                   So the count/duration of every label within the subset is equal.
            label_list_ids (list): List of label-list ids. If none is given, all label-lists are considered
                                   for balancing. Otherwise only the ones that are in the list are considered.

        Returns:
            Subview: The subview representing the subset.
        """
        total_duration = self.corpus.total_duration
        subset_duration = relative_duration * total_duration
        utterance_durations = {utt_idx: utt.duration for utt_idx, utt in self.corpus.utterances.items()}

        if balance_labels:
            all_label_values = self.corpus.all_label_values(label_list_ids=label_list_ids)

            label_durations = {}
            for utt_idx, utt in self.corpus.utterances.items():
                label_durations[utt_idx] = utt.label_total_duration(label_list_ids)

            subset_utterance_ids = utils.select_balanced_subset(label_durations,
                                                                subset_duration,
                                                                list(all_label_values),
                                                                select_count_values=utterance_durations,
                                                                seed=self.rand.random())

        else:
            dummy_weights = {utt_idx: {'w': 1} for utt_idx in self.corpus.utterances.keys()}
            subset_utterance_ids = utils.select_balanced_subset(dummy_weights,
                                                                subset_duration,
                                                                ['w'],
                                                                select_count_values=utterance_durations,
                                                                seed=self.rand.random())

        filter = subview.MatchingUtteranceIdxFilter(utterance_idxs=set(subset_utterance_ids))
        return subview.Subview(self.corpus, filter_criteria=[filter])
def random_subset_by_duration ( self , relative_duration , balance_labels = False , label_list_ids = None ) : total_duration = self . corpus . total_duration subset_duration = relative_duration * total_duration utterance_durations = { utt_idx : utt . duration for utt_idx , utt in self . corpus . utterances . items ( ) } if balance_labels : all_label_values = self . corpus . all_label_values ( label_list_ids = label_list_ids ) label_durations = { } for utt_idx , utt in self . corpus . utterances . items ( ) : label_durations [ utt_idx ] = utt . label_total_duration ( label_list_ids ) subset_utterance_ids = utils . select_balanced_subset ( label_durations , subset_duration , list ( all_label_values ) , select_count_values = utterance_durations , seed = self . rand . random ( ) ) else : dummy_weights = { utt_idx : { 'w' : 1 } for utt_idx in self . corpus . utterances . keys ( ) } subset_utterance_ids = utils . select_balanced_subset ( dummy_weights , subset_duration , [ 'w' ] , select_count_values = utterance_durations , seed = self . rand . random ( ) ) filter = subview . MatchingUtteranceIdxFilter ( utterance_idxs = set ( subset_utterance_ids ) ) return subview . Subview ( self . corpus , filter_criteria = [ filter ] )
Create a subview of random utterances with a approximate duration relative to the full corpus.
        Random utterances are selected so that the sum of all utterance durations
        equals to the relative duration of the full corpus.

        Args:
            relative_duration (float): A value between 0 and 1. (e.g. 0.5 will create a subset with approximately
                                       50% of the full corpus duration)
            balance_labels (bool): If True, the labels of the selected utterances are balanced as far as possible.
                                   So the count/duration of every label within the subset is equal.
            label_list_ids (list): List of label-list ids. If none is given, all label-lists are considered
                                   for balancing. Otherwise only the ones that are in the list are considered.

        Returns:
            Subview: The subview representing the subset.