    def forward(self, x, x_mask, cond_code=None, cond_feature=None):
        """
        Args:
            x: (B, T, mel_dim)
            x_mask: (B, T)
            cond_code: (B, T) if not None
            cond_feature: (B, T, D) if not None
        """
        if cond_code != None and self.use_cond_code:
            cond = self.cond_emb(cond_code)
            # TODO: use the target_len to interpolate (after cond_emb for code)

        elif cond_feature != None and not self.use_cond_code:

            # TODO: use the target_len to interpolate
            if self.cond_scale_factor != 1:
                cond_feature = F.interpolate(
                    cond_feature.transpose(1, 2), scale_factor=self.cond_scale_factor
                ).transpose(1, 2)

            cond = self.cond_emb(cond_feature)

        noise, x, flow_pred, final_mask, prompt_len = self.compute_loss(x, x_mask, cond)
        return noise, x, flow_pred, final_mask, prompt_len
Args:
x: (B, T, mel_dim)
x_mask: (B, T)
cond_code: (B, T) if not None
cond_feature: (B, T, D) if not None
models/vc/flow_matching_transformer/fmt_model.py