def METHOD_NAME(self,
                      ctc_log_probs: np.ndarray,
                      decoding_something: bool) -> bool:
    """detect endpoint.
    Args:
        ctc_log_probs (np.ndarray): (T, D)
        decoding_something (bool): contain nonsilince.
    Returns:
        bool: whether endpoint detected.
    """
    for logprob in ctc_log_probs:
        blank_prob = np.exp(logprob[self.opts.blank])
        self.num_frames_decoded += 1
        if blank_prob > self.opts.blank_threshold:
            self.trailing_silence_frames += 1
        else:
            self.trailing_silence_frames = 0
    assert self.num_frames_decoded >= self.trailing_silence_frames
    assert self.frame_shift_in_ms > 0
    decoding_something = (
        self.num_frames_decoded > self.trailing_silence_frames
    ) and decoding_something
    utterance_length = self.num_frames_decoded * self.frame_shift_in_ms
    trailing_silence = self.trailing_silence_frames * self.frame_shift_in_ms
    if self.rule_activated(self.opts.rule1, 'rule1', decoding_something,
                           trailing_silence, utterance_length):
        return True
    if self.rule_activated(self.opts.rule2, 'rule2', decoding_something,
                           trailing_silence, utterance_length):
        return True
    if self.rule_activated(self.opts.rule3, 'rule3', decoding_something,
                           trailing_silence, utterance_length):
        return True
    return False