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)
code: def __init__(self, cfg: DictConfig):
      super().__init__(cfg)
      self.cfg = model_utils.convert_model_config_to_dict_config(cfg)
      self._cfg_diarizer = self.cfg.diarizer
      self.base_scale_index = max(
          self.multiscale_args_dict["scale_dict"].keys()
      )
  
      self.uniq_id = self._cfg_diarizer.get("uniq_id", None)
      self.decimals = self._cfg_diarizer.get("decimals", 2)
      self.AUDIO_RTTM_MAP = audio_rttm_map(
          self.cfg.diarizer.manifest_filepath
      )
      self.sample_rate = self.cfg.sample_rate
      torch.manual_seed(0)
  
      self._out_dir = self._cfg_diarizer.out_dir
      if not os.path.exists(self._out_dir):
          os.mkdir(self._out_dir)
  
      if torch.cuda.is_available():
          self.cuda = True
          self.device = torch.device("cuda")
      else:
          self.cuda = False
          self.device = torch.device("cpu")
  
      self.reset()
  
      # Set speaker embedding model in eval mode
      self._speaker_model.eval()
  
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 1 to create a new OnlineClusteringDiarizer object from inherited base classes: ClusteringDiarizer with example: obj = OnlineClusteringDiarizer(cfg)