def call_next(
        self,
        current_frames: tf.Tensor,
        previous_tokens: tf.Tensor,
        previous_decoder_states: tf.Tensor,
    ):
        """
        Decode current frame given previous predicted token and states

        Parameters
        ----------
        current_frames : tf.Tensor, shape [B, 1, E]
            Output of the encoder network of the current frame
        previous_tokens : tf.Tensor, shape [B, 1]
            Predicted token of the previous frame
        previous_decoder_states : tf.Tensor, shape [B, num_rnns, nstates, state_size]
            States got from previous frame

        Returns
        -------
        Tuple[tf.Tensor, tf.Tensor], shapes ([B, 1, 1, V], [B, num_rnns, nstates, state_size])
            Output of joint network of the current frame, new states of prediction network
        """
        with tf.name_scope(f"{self.name}_call_next"):
            y, new_states = self.predict_net.call_next(previous_tokens, previous_decoder_states)
            ytu = self.joint_net([current_frames, y], training=False)
            ytu = tf.nn.log_softmax(ytu)
            return ytu, new_states

        Decode current frame given previous predicted token and states

        Parameters
        ----------
        current_frames : tf.Tensor, shape [B, 1, E]
            Output of the encoder network of the current frame
        previous_tokens : tf.Tensor, shape [B, 1]
            Predicted token of the previous frame
        previous_decoder_states : tf.Tensor, shape [B, num_rnns, nstates, state_size]
            States got from previous frame

        Returns
        -------
        Tuple[tf.Tensor, tf.Tensor], shapes ([B, 1, 1, V], [B, num_rnns, nstates, state_size])
            Output of joint network of the current frame, new states of prediction network
        
tensorflow_asr/models/transducer/base_transducer.py