zhifu gao
2024-01-18 b28f3c9da94ae72a3a0b7bb5982b587be7cf4cd6
funasr/models/fsmn_vad_streaming/model.py
@@ -220,38 +220,41 @@
    def FrameSizeMs(self) -> int:
        return int(self.frame_size_ms)
class Stats(object):
   def __init__(self,
                sil_pdf_ids,
                max_end_sil_frame_cnt_thresh,
                speech_noise_thres,
                ):
@dataclass
class StatsItem:
      self.data_buf_start_frame = 0
      self.frm_cnt = 0
      self.latest_confirmed_speech_frame = 0
      self.lastest_confirmed_silence_frame = -1
      self.continous_silence_frame_count = 0
      self.vad_state_machine = VadStateMachine.kVadInStateStartPointNotDetected
      self.confirmed_start_frame = -1
      self.confirmed_end_frame = -1
      self.number_end_time_detected = 0
      self.sil_frame = 0
      self.sil_pdf_ids = sil_pdf_ids
      self.noise_average_decibel = -100.0
      self.pre_end_silence_detected = False
      self.next_seg = True
    
    # init variables
    data_buf_start_frame = 0
    frm_cnt = 0
    latest_confirmed_speech_frame = 0
    lastest_confirmed_silence_frame = -1
    continous_silence_frame_count = 0
    vad_state_machine = VadStateMachine.kVadInStateStartPointNotDetected
    confirmed_start_frame = -1
    confirmed_end_frame = -1
    number_end_time_detected = 0
    sil_frame = 0
    sil_pdf_ids: list
    noise_average_decibel = -100.0
    pre_end_silence_detected = False
    next_seg = True # unused
      self.output_data_buf = []
      self.output_data_buf_offset = 0
      self.frame_probs = []
      self.max_end_sil_frame_cnt_thresh = max_end_sil_frame_cnt_thresh
      self.speech_noise_thres = speech_noise_thres
      self.scores = None
      self.max_time_out = False
      self.decibel = []
      self.data_buf = None
      self.data_buf_all = None
      self.waveform = None
      self.last_drop_frames = 0
    
    output_data_buf = []
    output_data_buf_offset = 0
    frame_probs = [] # unused
    max_end_sil_frame_cnt_thresh: int
    speech_noise_thres: float
    scores = None
    max_time_out = False #unused
    decibel = []
    data_buf = None
    data_buf_all = None
    waveform = None
    last_drop_frames = 0
    
@tables.register("model_classes", "FsmnVADStreaming")
class FsmnVADStreaming(nn.Module):
@@ -506,10 +509,11 @@
                                          self.vad_opts.sil_to_speech_time_thres,
                                          self.vad_opts.speech_to_sil_time_thres,
                                          self.vad_opts.frame_in_ms)
      windows_detector.Reset()
        stats = StatsItem(sil_pdf_ids=self.vad_opts.sil_pdf_ids,
      stats = Stats(sil_pdf_ids=self.vad_opts.sil_pdf_ids,
                          max_end_sil_frame_cnt_thresh=self.vad_opts.max_end_silence_time - self.vad_opts.speech_to_sil_time_thres,
                          speech_noise_thres=self.vad_opts.speech_noise_thres,
                    speech_noise_thres=self.vad_opts.speech_noise_thres
                      )
        cache["windows_detector"] = windows_detector
        cache["stats"] = stats
@@ -579,7 +583,7 @@
        cache["prev_samples"] = audio_sample[:-m]
        if _is_final:
            self.init_cache(cache, **kwargs)
         cache = {}
        ibest_writer = None
        if ibest_writer is None and kwargs.get("output_dir") is not None: