#pragma once #include #include #include #include "onnx_wrapper.h" class OnnxVadWrapper; // 前向声明 class VadIteratorOnnx { public: explicit VadIteratorOnnx(float threshold = 0.5, int sampling_rate = 16000, int min_silence_duration_ms = 100, float max_speech_duration_s = INFINITY, int speech_pad_ms = 30); virtual ~VadIteratorOnnx(); // 重置内部状态 virtual void reset_states(); // 输入音频块,返回语音事件(start/end) virtual std::unordered_map operator()(const std::vector& x, bool return_seconds = false); private: std::unique_ptr model_; std::vector buffer_; // 缓冲区用于保存未处理完的音频 float threshold_; int sampling_rate_; double min_silence_samples_; double speech_pad_samples_; bool triggered_; double temp_end_; double current_sample_; double start_; };