You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.4 KiB

  1. #include "zlinuxcomponents/zmainhelper.hpp"
  2. //
  3. #include "configs/config.hpp"
  4. #include "iflytopcpp/core/spdlogfactory/logger.hpp"
  5. #include "iflytopcpp/core/thread/thread.hpp"
  6. #include "spdlog/spdlog.h"
  7. #include "version.hpp"
  8. #include "zlinuxcomponents/rootfs_auto_update/rootfs_auto_update.hpp"
  9. #include "zservice_container/zservice_container.hpp"
  10. //
  11. #include "service/device_io_service.hpp"
  12. #include "service/device_io_service_mock.hpp"
  13. #include "service/light_control_service.hpp"
  14. #include "service/report_service.hpp"
  15. #include "zlinuxcomponents/aiui_ws/aiui_service.hpp"
  16. //
  17. #include "zlinuxcomponents/alsaplayer/AudioPlayerAlsaImpl.hpp"
  18. // #include "zlinuxcomponents/audio/audio_recoder.hpp"
  19. #include <curl/curl.h>
  20. #include <iostream>
  21. #include <string>
  22. #include "zlinuxcomponents/aiui_ws/aiui.h"
  23. //
  24. using namespace iflytop;
  25. using namespace core;
  26. using namespace std;
  27. using namespace clipp;
  28. ZMAIN();
  29. void Main::onSIGINT() { exit(0); }
  30. int Main::main(int argc, char *argv[]) {
  31. string g_host_server_ip;
  32. string g_device_id;
  33. spdlog::flush_on(spdlog::level::debug);
  34. const char *appid = "5938b7c7"; // 应用ID,在AIUI开放平台创建并设置
  35. const char *key = "19c1f7becc78eedc7826b485aabe30de"; // 接口密钥,在AIUI开放平台查看
  36. const char *param =
  37. "{\"result_level\":\"plain\",\"auth_id\":\"ac30105366ea460f9ff08ddac0c4f71e\",\"data_"
  38. "type\":\"text\","
  39. "\"scene\":\"main_box\",\"sample_rate\":\"16000\", "
  40. "\"context\":\"{\\\"sdk_support\\\":[\\\"nlp\\\",\\\"tts\\\"]}\"}";
  41. json paramj;
  42. paramj["result_level"] = "plain";
  43. paramj["auth_id"] = "ac30105366ea460f9ff08ddac0c4f71e";
  44. paramj["data_type"] = "text";
  45. paramj["scene"] = "main_box";
  46. paramj["sample_rate"] = "16000";
  47. paramj["context"] = R"({"sdk_support":["nlp","tts","vad","iat"]})";
  48. // logger->info("{}", paramj.dump());
  49. // logger->info("{}", param);
  50. shared_ptr<AiuiService> aiuiService(new AiuiService());
  51. logger->info("test_asr_main.cpp");
  52. aiuiService->initialize(appid, key, paramj.dump());
  53. aiuiService->aiuiInit();
  54. aiuiService->onMessage.connect([&](json &rxjson) {
  55. //
  56. string action = rxjson["action"];
  57. if (action == "started") {
  58. logger->info("rx started:{}", rxjson.dump());
  59. }
  60. //
  61. else if (action == "result") {
  62. string sub = rxjson["data"]["sub"];
  63. if (sub == "nlp") {
  64. logger->info("rx nlp:{}", rxjson.dump());
  65. } else if (sub == "tts") {
  66. logger->info("rx tts:frame {}", rxjson["data"]["json_args"]["frame_id"].get<int>());
  67. bool isendFrame = false;
  68. string ttsurl;
  69. aiuiService->parseTTSContent(rxjson, isendFrame, ttsurl);
  70. if (isendFrame) {
  71. logger->info("rx tts end,url={}", ttsurl);
  72. }
  73. } else if (sub == "iat") {
  74. logger->info("rx iat:{}", rxjson.dump());
  75. } else if (sub == "vad") {
  76. logger->info("rx vad:{}", rxjson.dump());
  77. } else {
  78. logger->info("rx {}:{}", sub, rxjson.dump());
  79. }
  80. }
  81. //
  82. else if (action == "error") {
  83. logger->info("rx error:{}", rxjson.dump());
  84. }
  85. //
  86. else if (action == "vad") {
  87. } else {
  88. logger->info("rx unkown:{}", rxjson.dump());
  89. }
  90. try {
  91. if (rxjson["data"]["is_finish"].get<bool>()) {
  92. logger->info("end tx");
  93. }
  94. } catch (...) {
  95. }
  96. });
  97. aiuiService->aiuiWrite("今天天气怎么样", strlen("今天天气怎么样"));
  98. while (true) sleep(1000);
  99. }