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: Take a majority voting for every segment on temporal steps. This feature significantly reduces the error coming
  from unstable speaker counting in the beginning of sessions.
  
  Returns:
      maj_vote_labels (list):
          List containing the major-voted speaker labels on temporal domain
docstr_tok: ["Take","a","majority","voting","for","every","segment","on","temporal","steps",".","This","feature","significantly","reduces","the","error","coming","from","unstable","speaker","counting","in","the","beginning","of","sessions",".","Returns",":","maj_vote_labels","(","list",")",":","List","containing","the","major-voted","speaker","labels","on","temporal","domain"]
code: def _temporal_label_major_vote(self) -> torch.Tensor:
      """
      Take a majority voting for every segment on temporal steps. This feature significantly reduces the error coming
      from unstable speaker counting in the beginning of sessions.
  
      Returns:
          maj_vote_labels (list):
              List containing the major-voted speaker labels on temporal domain
      """
      maj_vote_labels = []
      for seg_idx in self.memory_segment_indexes[self.base_scale_index]:
          if seg_idx not in self.base_scale_label_dict:
              self.base_scale_label_dict[seg_idx] = [
                  self.memory_cluster_labels[seg_idx]
              ]
          else:
              while (
                  len(self.base_scale_label_dict[seg_idx])
                  > self.temporal_label_major_vote_buffer_size
              ):
                  self.base_scale_label_dict[seg_idx].pop(0)
              self.base_scale_label_dict[seg_idx].append(
                  self.memory_cluster_labels[seg_idx]
              )
  
          maj_vote_labels.append(
              torch.mode(
                  torch.tensor(self.base_scale_label_dict[seg_idx])
              )[0].item()
          )
      return maj_vote_labels
  
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 11 for calling the OnlineClusteringDiarizer obj's underlying member method code with example usage: obj._temporal_label_major_vote() and returns: maj_vote_labels