docs: def get_utt_regions(self):
          """
          Return the regions of all utterances, assuming all utterances are concatenated.
          A region is defined by offset, length (num-frames) and
          a list of references to the utterance datasets in the containers.
  
          Returns:
              list: List of with a tuple for every utterances containing the region info.
          """
  
          regions = []
          current_offset = 0
  
          for utt_idx, utt_data in zip(self.data.info.utt_ids, self.data.utt_data):
              offset = current_offset
  
              num_frames = []
              refs = []
  
              for part in utt_data:
                  num_frames.append(part.shape[0])
                  refs.append(part)
  
              if len(set(num_frames)) != 1:
                  raise ValueError('Utterance {} has not the same number of frames in all containers!'.format(utt_idx))
  
              num_chunks = math.ceil(num_frames[0] / float(self.frames_per_chunk))
  
              region = (offset, num_chunks, refs)
              regions.append(region)
  
              # Sets the offset for the next utterances
              current_offset += num_chunks
  
          return regions