main.cpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. #include <iostream>
  2. #include <vector>
  3. #include <random>
  4. #include <nlohmann/json.hpp>
  5. #include "signalstats.h"
  6. #include "ThreadPool.h"
  7. void test1();
  8. void test2();
  9. int main() {
  10. // 初始化Python解释器
  11. // signalstats_wrapper::initialize();
  12. CPPTP.add_task(test1);
  13. // std::this_thread::sleep_for(std::chrono::seconds(1));
  14. // CPPTP.add_task(test2);
  15. // std::this_thread::sleep_for(std::chrono::seconds(5));
  16. std::this_thread::sleep_for(std::chrono::seconds(10)); // 等待任务执行
  17. // signalstats_wrapper::finalize();
  18. return 0;
  19. }
  20. void test1()
  21. {
  22. try {
  23. // 创建测试音频信号 (C++版本)
  24. const int sample_rate = 44100;
  25. const int duration_seconds = 1;
  26. const int num_samples = sample_rate * duration_seconds;
  27. std::vector<double> audio_signal(num_samples);
  28. std::random_device rd;
  29. std::mt19937 gen(rd());
  30. std::normal_distribution<> dist(0.0, 1.0);
  31. for (auto& sample : audio_signal) {
  32. sample = dist(gen);
  33. }
  34. std::cout << "生成测试音频信号完成" << std::endl;
  35. // 调用C++接口函数
  36. nlohmann::json output;
  37. std::vector<std::string> window_params = {"tukey", "0.25"};
  38. nlohmann::json& result = signalstats::detect_signal(
  39. output,
  40. audio_signal,
  41. sample_rate,
  42. 3e-3, // silence_threshold
  43. -70.0, // db_threshold
  44. -70.0, // cv_threshold
  45. window_params,
  46. 256, // nperseg
  47. 32, // noverlap
  48. 256, // nfft
  49. true // debug
  50. );
  51. std::cout << "源数据: " << std::endl;
  52. for(const auto it : audio_signal)
  53. {
  54. std::cout << it << " ";
  55. }
  56. std::cout << std::endl;
  57. // 处理输出结果
  58. if (!output.empty()) {
  59. std::cout << "信号检测完成,输出结果: " << output.dump(4) << std::endl;
  60. // 这里可以添加具体的结果解析逻辑
  61. } else {
  62. std::cout << "信号检测完成,但无输出结果" << std::endl;
  63. }
  64. std::cout << "程序执行完成" << std::endl;
  65. } catch (const std::exception& e) {
  66. std::cerr << "错误: " << e.what() << std::endl;
  67. return;
  68. }
  69. // signalstats_wrapper::finalize();
  70. }
  71. void test2()
  72. {
  73. // signalstats_wrapper::initialize();
  74. try {
  75. // 创建测试音频信号 (C++版本)
  76. const int sample_rate = 44100;
  77. const int duration_seconds = 1;
  78. const int num_samples = sample_rate * duration_seconds;
  79. std::vector<double> audio_signal(num_samples);
  80. std::random_device rd;
  81. std::mt19937 gen(rd());
  82. std::normal_distribution<> dist(0.0, 1.0);
  83. for (auto& sample : audio_signal) {
  84. sample = dist(gen);
  85. }
  86. std::cout << "生成测试音频信号完成" << std::endl;
  87. // 调用C++接口函数
  88. nlohmann::json output;
  89. std::vector<std::string> window_params = {"tukey", "0.25"};
  90. nlohmann::json& result = signalstats::detect_signal(
  91. output,
  92. audio_signal,
  93. sample_rate,
  94. 3e-3, // silence_threshold
  95. -70.0, // db_threshold
  96. -70.0, // cv_threshold
  97. window_params,
  98. 256, // nperseg
  99. 32, // noverlap
  100. 256, // nfft
  101. true // debug
  102. );
  103. // 处理输出结果
  104. if (!output.empty()) {
  105. std::cout << "信号检测完成,输出结果: " << output.dump(4) << std::endl;
  106. // 这里可以添加具体的结果解析逻辑
  107. } else {
  108. std::cout << "信号检测完成,但无输出结果" << std::endl;
  109. }
  110. std::cout << "程序执行完成" << std::endl;
  111. } catch (const std::exception& e) {
  112. std::cerr << "错误: " << e.what() << std::endl;
  113. return;
  114. }
  115. // signalstats_wrapper::finalize();
  116. }