| | |
| | | public: |
| | | virtual ~VadModel(){}; |
| | | virtual void InitVad(const std::string &vad_model, const std::string &vad_cmvn, const std::string &vad_config, int thread_num)=0; |
| | | virtual std::vector<std::vector<int>> Infer(const std::vector<float> &waves)=0; |
| | | virtual std::vector<std::vector<int>> Infer(std::vector<float> &waves, bool input_finished=true)=0; |
| | | virtual void ReadModel(const char* vad_model)=0; |
| | | virtual void LoadConfigFromYaml(const char* filename)=0; |
| | | virtual void FbankKaldi(float sample_rate, std::vector<std::vector<float>> &vad_feats, |
| | | const std::vector<float> &waves)=0; |
| | | virtual void LfrCmvn(std::vector<std::vector<float>> &vad_feats)=0; |
| | | virtual void Forward( |
| | | const std::vector<std::vector<float>> &chunk_feats, |
| | | std::vector<std::vector<float>> *out_prob)=0; |
| | | std::vector<float> &waves)=0; |
| | | virtual void LoadCmvn(const char *filename)=0; |
| | | virtual void InitCache()=0; |
| | | }; |
| | |
| | | ~FsmnVad(); |
| | | void Test(); |
| | | void InitVad(const std::string &vad_model, const std::string &vad_cmvn, const std::string &vad_config, int thread_num); |
| | | std::vector<std::vector<int>> Infer(const std::vector<float> &waves); |
| | | std::vector<std::vector<int>> Infer(std::vector<float> &waves, bool input_finished=true); |
| | | void Reset(); |
| | | |
| | | private: |
| | |
| | | std::vector<const char *> *in_names, std::vector<const char *> *out_names); |
| | | |
| | | void FbankKaldi(float sample_rate, std::vector<std::vector<float>> &vad_feats, |
| | | const std::vector<float> &waves); |
| | | std::vector<float> &waves); |
| | | |
| | | void LfrCmvn(std::vector<std::vector<float>> &vad_feats); |
| | | |
| | |
| | | |
| | | vector<float> Paraformer::FbankKaldi(float sample_rate, const float* waves, int len) { |
| | | knf::OnlineFbank fbank_(fbank_opts); |
| | | fbank_.AcceptWaveform(sample_rate, waves, len); |
| | | std::vector<float> buf(len); |
| | | for (int32_t i = 0; i != len; ++i) { |
| | | buf[i] = waves[i] * 32768; |
| | | } |
| | | fbank_.AcceptWaveform(sample_rate, buf.data(), buf.size()); |
| | | //fbank_->InputFinished(); |
| | | int32_t frames = fbank_.NumFramesReady(); |
| | | int32_t feature_dim = fbank_opts.mel_opts.num_bins; |