嘉渊
2023-04-24 df5f263e5fe3d7961b1aeb3589012400a9905a8f
funasr/models/frontend/wav_frontend.py
@@ -9,7 +9,6 @@
from typeguard import check_argument_types
import funasr.models.frontend.eend_ola_feature as eend_ola_feature
from funasr.models.frontend.abs_frontend import AbsFrontend
def load_cmvn(cmvn_file):
@@ -76,7 +75,7 @@
    return LFR_outputs.type(torch.float32)
class WavFrontend(AbsFrontend):
class WavFrontend(torch.nn.Module):
    """Conventional frontend structure for ASR.
    """
@@ -207,7 +206,7 @@
        return feats_pad, feats_lens
class WavFrontendOnline(AbsFrontend):
class WavFrontendOnline(torch.nn.Module):
    """Conventional frontend structure for streaming ASR/VAD.
    """
@@ -423,10 +422,8 @@
                    reserve_frame_idx = lfr_splice_frame_idxs[0] - minus_frame
                    # print('reserve_frame_idx:  ' + str(reserve_frame_idx))
                    # print('frame_frame:  ' + str(frame_from_waveforms))
                    self.reserve_waveforms = self.waveforms[:,
                                             reserve_frame_idx * self.frame_shift_sample_length:frame_from_waveforms * self.frame_shift_sample_length]
                    sample_length = (
                                                frame_from_waveforms - 1) * self.frame_shift_sample_length + self.frame_sample_length
                    self.reserve_waveforms = self.waveforms[:, reserve_frame_idx * self.frame_shift_sample_length:frame_from_waveforms * self.frame_shift_sample_length]
                    sample_length = (frame_from_waveforms - 1) * self.frame_shift_sample_length + self.frame_sample_length
                    self.waveforms = self.waveforms[:, :sample_length]
            else:
                # update self.reserve_waveforms and self.lfr_splice_cache
@@ -454,7 +451,7 @@
        self.lfr_splice_cache = []
class WavFrontendMel23(AbsFrontend):
class WavFrontendMel23(torch.nn.Module):
    """Conventional frontend structure for ASR.
    """
@@ -488,10 +485,10 @@
        for i in range(batch_size):
            waveform_length = input_lengths[i]
            waveform = input[i][:waveform_length]
            waveform = waveform.unsqueeze(0).numpy()
            waveform = waveform.numpy()
            mat = eend_ola_feature.stft(waveform, self.frame_length, self.frame_shift)
            mat = eend_ola_feature.transform(mat)
            mat = mat.splice(mat, context_size=self.lfr_m)
            mat = eend_ola_feature.splice(mat, context_size=self.lfr_m)
            mat = mat[::self.lfr_n]
            mat = torch.from_numpy(mat)
            feat_length = mat.size(0)