class_docstr: A class that enables online (streaming) clustering based diarization.
  
  - The instance created from `OnlineClusteringDiarizer` sets aside a certain amount of memory
    to provide the upcoming inference with history information
  
  - There are two major modules involved: `OnlineSegmentor` and `OnlineSpeakerClustering`.
      OnlineSegmentor: Take the VAD-timestamps and generate segments for each scale
      OnlineSpeakerClustering: Update the entire speaker labels of the given online session
                               while updating the speaker labels of the streaming inputs.
  
  - The overall diarization process is done by calling `diarize_step` function.
    `diarize_step` function goes through the following steps:
      (1) Segmentation (`OnlineSegmentor` class)
      (2) Embedding extraction (`_extract_online_embeddings` function call)
      (3) Online speaker counting and speaker clustering (`OnlineClusteringDiarizer` class)
      (4) Label generation (`generate_cluster_labels` function call)
docstr: Variables are kept in memory for future updates
  
  Attributes:
      memory_margin (int):
          The number of embeddings saved in the memory buffer.
          This memory margin is dependent on the base scale length: margin = (buffer_length)/(base scale shift)
          memory margin is automatically calculated to have minimal memory usage
      memory_segment_ranges (dict):
          The segment range information kept in the memory buffer
      memory_segment_indexes (dict):
          The segment indexes kept in the memory buffer
      memory_cluster_labels (Tensor):
          The cluster labels inferred in the previous diarization steps
docstr_tok: ["Variables","are","kept","in","memory","for","future","updates","Attributes",":","memory_margin","(","int",")",":","The","number","of","embeddings","saved","in","the","memory","buffer",".","This","memory","margin","is","dependent","on","the","base","scale","length",":","margin","=","(","buffer_length",")","\/","(","base","scale","shift",")","memory","margin","is","automatically","calculated","to","have","minimal","memory","usage","memory_segment_ranges","(","dict",")",":","The","segment","range","information","kept","in","the","memory","buffer","memory_segment_indexes","(","dict",")",":","The","segment","indexes","kept","in","the","memory","buffer","memory_cluster_labels","(","Tensor",")",":","The","cluster","labels","inferred","in","the","previous","diarization","steps"]
code: def _init_memory_buffer(self):
      """
      Variables are kept in memory for future updates
  
      Attributes:
          memory_margin (int):
              The number of embeddings saved in the memory buffer.
              This memory margin is dependent on the base scale length: margin = (buffer_length)/(base scale shift)
              memory margin is automatically calculated to have minimal memory usage
          memory_segment_ranges (dict):
              The segment range information kept in the memory buffer
          memory_segment_indexes (dict):
              The segment indexes kept in the memory buffer
          memory_cluster_labels (Tensor):
              The cluster labels inferred in the previous diarization steps
      """
      self.memory_margin = 0
      self.memory_segment_ranges = {
          key: []
          for key in self.multiscale_args_dict["scale_dict"].keys()
      }
      self.memory_segment_indexes = {
          key: []
          for key in self.multiscale_args_dict["scale_dict"].keys()
      }
      self.memory_cluster_labels = torch.tensor([])
  
imports: import os
  import time
  from copy import deepcopy
  from typing import Dict
  import torch
  from omegaconf import DictConfig
  from nemo.collections.asr.models import ClusteringDiarizer
  from nemo.collections.asr.parts.utils.offline_clustering import get_scale_interpolated_embs, split_input_data
  from nemo.collections.asr.parts.utils.online_clustering import OnlineSpeakerClustering
  from nemo.collections.asr.parts.utils.speaker_utils import OnlineSegmentor, audio_rttm_map, generate_cluster_labels, get_embs_and_timestamps
  from nemo.utils import logging, model_utils
label_desc: Use image node_id 4 for calling the OnlineClusteringDiarizer obj's underlying member method code with example usage: obj._init_memory_buffer() without return types