| | |
| | | void FsmnVad::ReadModel(const char* vad_model) { |
| | | try { |
| | | vad_session_ = std::make_shared<Ort::Session>( |
| | | env_, vad_model, session_options_); |
| | | env_, ORTCHAR(vad_model), session_options_); |
| | | LOG(INFO) << "Successfully load model from " << vad_model; |
| | | } catch (std::exception const &e) { |
| | | LOG(ERROR) << "Error when load vad onnx model: " << e.what(); |
| | |
| | | FsmnVad::Infer(std::vector<float> &waves, bool input_finished) { |
| | | std::vector<std::vector<float>> vad_feats; |
| | | std::vector<std::vector<float>> vad_probs; |
| | | std::vector<std::vector<int>> vad_segments; |
| | | FbankKaldi(vad_sample_rate_, vad_feats, waves); |
| | | if(vad_feats.size() == 0){ |
| | | return vad_segments; |
| | | } |
| | | LfrCmvn(vad_feats); |
| | | Forward(vad_feats, &vad_probs, &in_cache_, input_finished); |
| | | |
| | | E2EVadModel vad_scorer = E2EVadModel(); |
| | | std::vector<std::vector<int>> vad_segments; |
| | | vad_segments = vad_scorer(vad_probs, waves, true, false, vad_silence_duration_, vad_max_len_, |
| | | vad_speech_noise_thres_, vad_sample_rate_); |
| | | return vad_segments; |