| | |
| | | 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; |
| | |
| | | return nullptr; |
| | | |
| | | funasr::Audio audio(1); |
| | | try{ |
| | | if(wav_format == "pcm" || wav_format == "PCM"){ |
| | | if (!audio.LoadPcmwav(sz_buf, n_len, &sampling_rate)) |
| | | return nullptr; |
| | | }else{ |
| | | if (!audio.FfmpegLoad(sz_buf, n_len)) |
| | | return nullptr; |
| | | } |
| | | }catch (std::exception const &e) |
| | | { |
| | | LOG(ERROR)<<e.what(); |
| | | return nullptr; |
| | | } |
| | | |
| | |
| | | return nullptr; |
| | | |
| | | funasr::Audio audio(1); |
| | | try{ |
| | | if(funasr::is_target_file(sz_filename, "wav")){ |
| | | int32_t sampling_rate_ = -1; |
| | | if(!audio.LoadWav(sz_filename, &sampling_rate_)) |
| | |
| | | if (!audio.FfmpegLoad(sz_filename)) |
| | | return nullptr; |
| | | } |
| | | }catch (std::exception const &e) |
| | | { |
| | | LOG(ERROR)<<e.what(); |
| | | return nullptr; |
| | | } |
| | | |
| | | funasr::FUNASR_RECOG_RESULT* p_result = new funasr::FUNASR_RECOG_RESULT; |
| | | p_result->snippet_time = audio.GetTimeLen(); |
| | | if(p_result->snippet_time == 0){ |