docs: def process_corpus(self, corpus, output_path, frame_size=400, hop_size=160, sr=None):
          """
          Process all utterances of the given corpus and save the processed features in a feature-container.
          The utterances are processed in **offline** mode so the full utterance in one go.
  
          Args:
              corpus (Corpus): The corpus to process the utterances from.
              output_path (str): A path to save the feature-container to.
              frame_size (int): The number of samples per frame.
              hop_size (int): The number of samples between two frames.
              sr (int): Use the given sampling rate. If None uses the native sampling rate from the underlying data.
  
          Returns:
              FeatureContainer: The feature-container containing the processed features.
          """
  
          def processing_func(utterance, feat_container, frame_size, hop_size, sr, corpus):
              data = self.process_utterance(utterance, frame_size=frame_size, hop_size=hop_size, sr=sr, corpus=corpus)
              feat_container.set(utterance.idx, data)
  
          return self._process_corpus(corpus, output_path, processing_func,
                                      frame_size=frame_size, hop_size=hop_size, sr=sr)