| #include "vad_onnx.h" |
| #include <iostream> |
| #include <sndfile.h> |
|
|
|
|
| int main(int argc, char* argv[]) { |
| if (argc < 3) { |
| std::cerr << "Usage: " << argv[0] << " <model_absolute_path>" << " <audio_file_absolute_path>" << std::endl; |
| return 1; |
| } |
|
|
| |
| std::string model_path = argv[1]; |
| std::string wav_path = argv[2]; |
|
|
| |
| |
|
|
| |
| SF_INFO sf_info; |
| SNDFILE* file = sf_open(wav_path.c_str(), SFM_READ, &sf_info); |
|
|
| int samplerate = sf_info.samplerate; |
| int channels = sf_info.channels; |
| int frames = sf_info.frames; |
|
|
| std::vector<float> audio(frames * channels); |
| sf_readf_float(file, audio.data(), sf_info.frames); |
| sf_close(file); |
|
|
| |
| std::vector<float> audio_512frames(audio.begin(), audio.begin() + 512); |
|
|
| try { |
| VadOnnx vad_model = VadOnnx(model_path); |
|
|
| |
| float result_512 = vad_model.forward_infer(audio_512frames); |
| std::cout << "result_512 = " << result_512 << std::endl; |
|
|
|
|
| std::vector<float> result_1 = vad_model.vad_dectect(audio); |
| if (!result_1.empty()) { |
| std::cout << "result_1.size = " << result_1.size() << std::endl; |
| for (int i = 0; i < 5 && i < result_1.size(); ++i) { |
| std::cout << result_1[i] << ", "; |
| } |
| std::cout << "(only show 5)" << std::endl; |
| } |
|
|
| std::map<std::string, double> result_map; |
| result_map = vad_model.vad_dectect(audio, false); |
| std::cerr << "result: " << std::endl; |
| if (!result_map.empty()) { |
| for (const auto& pair : result_map) { |
| std::cout << pair.first << " : " << pair.second << std::endl; |
| } |
| } |
|
|
| } catch (const std::exception& ex) { |
| std::cerr << "Error: " << ex.what() << std::endl; |
| } |
| |
| |
| |
| |
| |
| |
|
|
| return 0; |
| } |