noiseTest.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include <iostream>
  2. #include <vector>
  3. #include <random>
  4. #include <nlohmann/json.hpp>
  5. #include "signalstats_wrapper.h"
  6. int main() {
  7. // 初始化Python解释器
  8. signalstats_wrapper::initialize();
  9. try {
  10. // 创建测试音频信号 (C++版本)
  11. const int sample_rate = 44100;
  12. const int duration_seconds = 1;
  13. const int num_samples = sample_rate * duration_seconds;
  14. std::vector<double> audio_signal(num_samples);
  15. std::random_device rd;
  16. std::mt19937 gen(rd());
  17. std::normal_distribution<> dist(0.0, 1.0);
  18. for (auto& sample : audio_signal) {
  19. sample = dist(gen);
  20. }
  21. std::cout << "生成测试音频信号完成" << std::endl;
  22. // 调用C++接口函数
  23. nlohmann::json output;
  24. std::vector<std::string> window_params = {"tukey", "0.25"};
  25. nlohmann::json& result = signalstats::detect_signal(
  26. audio_signal,
  27. sample_rate,
  28. 3e-3, // silence_threshold
  29. -70.0, // db_threshold
  30. -70.0, // cv_threshold
  31. window_params,
  32. 256, // nperseg
  33. 32, // noverlap
  34. 256, // nfft
  35. true, // debug
  36. output
  37. );
  38. // 处理输出结果
  39. if (!output.empty()) {
  40. std::cout << "信号检测完成,输出结果: " << output.dump(4) << std::endl;
  41. // 这里可以添加具体的结果解析逻辑
  42. } else {
  43. std::cout << "信号检测完成,但无输出结果" << std::endl;
  44. }
  45. std::cout << "程序执行完成" << std::endl;
  46. } catch (const std::exception& e) {
  47. std::cerr << "错误: " << e.what() << std::endl;
  48. return 1;
  49. }
  50. signalstats_wrapper::finalize();
  51. return 0;
  52. }