def get_utt_regions(self):
        regions = []
        current_offset = 0
        for utt_idx in sorted(self.utt_ids):
            offset = current_offset
            num_frames = []
            refs = []
            for cnt in self.containers:
                num_frames.append(cnt.get(utt_idx).shape[0])
                refs.append(cnt.get(utt_idx, mem_map=True))
            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)
            current_offset += num_chunks
        return regions