#pragma once #ifndef PARAFORMER_MODELIMP_H #define PARAFORMER_MODELIMP_H namespace paraformer { class ModelImp : public Model { private: int fft_size=512; float *fft_input; fftwf_complex *fft_out; fftwf_plan plan; Vocab* vocab; vector means_list; vector vars_list; const float scale = 22.6274169979695; void apply_lfr(Tensor*& din); void apply_cmvn(Tensor* din); void load_cmvn(const char *filename); string greedy_search( float* in, int nLen); std::unique_ptr m_session; Ort::Env env_; Ort::SessionOptions sessionOptions; vector m_strInputNames, m_strOutputNames; vector m_szInputNames; vector m_szOutputNames; public: ModelImp(const char* path, int nNumThread=0, bool quantize=false); ~ModelImp(); void reset(); string forward_chunk(float* din, int len, int flag); string forward(float* din, int len, int flag); string rescoring(); }; } // namespace paraformer #endif