#pragma once #ifndef PARAFORMER_MODELIMP_H #define PARAFORMER_MODELIMP_H #include "precomp.h" namespace paraformer { class ModelImp : public Model { private: //std::unique_ptr fbank_; knf::FbankOptions fbank_opts; std::unique_ptr vadHandle; Vocab* vocab; vector means_list; vector vars_list; const float scale = 22.6274169979695; int32_t lfr_window_size = 7; int32_t lfr_window_shift = 6; void load_cmvn(const char *filename); vector ApplyLFR(const vector &in); void ApplyCMVN(vector *v); string greedy_search( float* in, int nLen); std::shared_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, bool use_vad=false); ~ModelImp(); void reset(); vector FbankKaldi(float sample_rate, const float* waves, int len); string forward_chunk(float* din, int len, int flag); string forward(float* din, int len, int flag); string rescoring(); std::vector> vad_seg(std::vector& pcm_data); }; } // namespace paraformer #endif